【问题标题】:GetProcAdress returns always zeroGetProcAddress 总是返回零
【发布时间】:2011-05-26 20:03:44
【问题描述】:

我遇到了一个非常神秘的问题。使用函数 GetProcAddress,我总是得到零。

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

【问题讨论】:

    标签: api loadlibrary kernel32


    【解决方案1】:

    “CreateProcess”API 的名称实际上是 CreateProcessWCreateProcessA,具体取决于您是否使用 UNICODE API。

    【讨论】:

    • 即使我使用它们,它仍然返回零:\
    • LoadLibraryExA() 返回的是什么?也许它的声明也需要标记为Ansi(我没有机会查找VB默认会做什么)。
    • 其实你在LoadLibraryExA()的声明中没有足够的参数。尝试将其更改为 LoadLibraryA(),它只需要一个名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多