64,644
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <time.h>
#include <windows.h>
int foo (void)
{
printf("foo\n");
// MessageBox(NULL, "foo", "Notice", MB_OK);
return 0;
}
int main(int argc, char* argv[])
{
HINSTANCE hUser32 = LoadLibrary("User32.dll");
DWORD dwMessageBox = (DWORD)GetProcAddress(hUser32, "MessageBoxA");
printf("dwMessageBox GetProcAddress:%0p\n", dwMessageBox);
printf("MessageBox GetProcAddress:%0p\n", MessageBox);
while (1)
{
Sleep(1000);
foo ();
}
return 0;
}
printf("dwMessageBox GetProcAddress:%0p\n", dwMessageBox);
printf("MessageBox GetProcAddress:%0p\n", MessageBox);
2个疑问
1) 以上2个地址 dwMessageBox 和 MessageBox 是一致的,也就是window API中的MessageBox 怎么和User32.dll 库中的MessageBox一致呢?
2) 即使不用 HINSTANCE hUser32 = LoadLibrary("User32.dll"); 加载动态库,仍旧可以使用printf("MessageBox GetProcAddress:%0p\n", MessageBox);简单的得到 该函数指针?