2011-05-26 160 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