我試圖代碼,使其GetProcessImageFileName來電VB6的應用程序,而是一個越來越...我在哪裏可以找到VB6中的GetProcessImageFileName?
Run-time error '453':
Can't find DLL entry point GetProcessImageFileName in PSAPI.DLL
我給予理解它是在PSAPI.DLL被發現從文檔here。
我的代碼看起來像......
Public Declare Function GetProcessImageFileName Lib "PSAPI.DLL" _
(ByVal hProcess As Long, _
lpImageName As String, _
ByVal nSize As Long) As Long
Public Sub MySub()
Dim name_length As Long
Dim image_name As String
...fill in process handle...
name_length = GetProcessImageFileName(process_handle, image_name, 1024)
有誰知道我應該在這裏幹什麼? 我在Windows XP上運行。
編輯正如JosephH建議,我已經改變了代碼中使用GetProcessImageFileNameA
,從而...
Public Declare Function GetProcessImageFileNameA Lib "PSAPI.DLL" _
(ByVal hProcess As Long, _
lpImageName As String, _
ByVal nSize As Long) As Long
和
name_length = GetProcessImageFileNameA(process_handle, image_name, 1024)
這樣做(這是與W版本相同)導致程序和VB6開發環境崩潰,所以還有另一個問題隱藏在這裏。
是'image_name'其實早就1024個字符?像這樣的API函數需要你創建一個字符串緩衝區來寫入。如果你對它撒謊,並說你傳遞了一個1024字節的字符串,事實並非如此,事情就會崩潰。 – Deanna
@Deanna,謝謝你:我剛剛添加了'image_name = String(1024,「」)'在安全方面,但它仍然崩潰。 –