2011-05-26 264 views
2

我遇到了一個非常神祕的問題。使用函數GetProcAddress,我總是得到零。GetProcAdress返回始終爲零

Debug.Print(GetProcAddress(LoadLibraryExA("kernel32"), "CreateProcess")) 

無論是否使用「CreateProcess」,「LoadLibrary」或其他東西,該行始終返回零。這是爲什麼?

的功能聲明:

Declare Function LoadLibraryExA Lib "kernel32" (ByVal name As String) As IntPtr 
    Declare Ansi Function GetProcAddress Lib "kernel32" (ByVal handle As IntPtr, ByVal name As String) As IntPtr 

回答

1

的「CreateProcess的」 API的名稱實際上是要麼CreateProcessWCreateProcessA取決於如果您使用的是UNICODE API與否。

+0

即使我使用它們,它仍然返回零:\ – ShadowBroker 2011-05-26 20:08:49

+0

什麼是LoadLibraryExA()返回?也許它的聲明也需要標記爲'Ansi'(我沒有機會查找VB默認會做什麼)。 – 2011-05-26 20:12:09

+0

實際上,你在'LoadLibraryExA()'的聲明中沒有足夠的參數。嘗試將其更改爲僅使用名稱的'LoadLibraryA()'。 – 2011-05-26 20:15:41