刚开始我直接用的时
g_hHook = SetWindowsHookEx(WH_CALLWNDPROC, DLL_CallWndProc1, 0, 0);
g_hHook2 = SetWindowsHookEx(WH_MOUSE_LL, DLL_MouseProc1, 0, 0);
对于鼠标和键盘的钩子而言,这是可以的,但是对于其他的一些钩子是不行的,会有意想不到的错误
官方说明:
详见
SetWindowsHookExA 函数 (winuser.h) - Win32 apps | Microsoft Learn
然后我自己新建DLL,把钩子函数放了进去
IMPORT_DLL LRESULT CALLBACK DLL_CallWndProc(int nCode, WPARAM wParam, LPARAM lParam);
IMPORT_DLL LRESULT CALLBACK DLL_MouseProc(int nCode, WPARAM wParam, LPARAM lParam);
这时又有一个错误,就是使用时找不到DLL中的钩子函数,用VS的工具看了一下DLL文件,发现函数名变成了
应该是CALLBACK惹的祸,只需要调用时改正名称就行了
MouseProcType DLL_MouseProc1 = (MouseProcType)GetProcAddress(hDllInst, "_DLL_MouseProc@12");