什么时候卸载一个钩子解决办法
什么时候卸载一个钩子
#include <windows.h>
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
。。。
return CallNextHookEx(g_hMouse, nCode, wParam, lParam);
}
int main(void)
{
MSG msg;
g_hMouse = SetWindowsHookEx( WH_MOUSE_LL, MouseProc, GetModuleHandle(NULL), 0 );
if (!g_hMouse) printf("Hook error: %d\n", GetLastError());
while ( GetMessage(&msg, NULL, 0, 0) )
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnhookWindowsHookEx(g_hMouse);
printf("ok");
return (int) msg.wParam;
}
如上 程序,请问什么时候卸载钩子,打印出呢?
我都是直接关闭进程的啊,
------解决方案--------------------
退出的时候
If the function retrieves a message other than WM_QUIT, the return value is nonzero.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms644936(v=vs.85).aspx
------解决方案--------------------
你的线程结束后钩子会自动卸载
如果需要收到控制台关闭的消息,用SetConsoleCtrlHandler
#include <windows.h>
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
。。。
return CallNextHookEx(g_hMouse, nCode, wParam, lParam);
}
int main(void)
{
MSG msg;
g_hMouse = SetWindowsHookEx( WH_MOUSE_LL, MouseProc, GetModuleHandle(NULL), 0 );
if (!g_hMouse) printf("Hook error: %d\n", GetLastError());
while ( GetMessage(&msg, NULL, 0, 0) )
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnhookWindowsHookEx(g_hMouse);
printf("ok");
return (int) msg.wParam;
}
如上 程序,请问什么时候卸载钩子,打印出呢?
我都是直接关闭进程的啊,
------解决方案--------------------
退出的时候
If the function retrieves a message other than WM_QUIT, the return value is nonzero.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms644936(v=vs.85).aspx
------解决方案--------------------
你的线程结束后钩子会自动卸载
如果需要收到控制台关闭的消息,用SetConsoleCtrlHandler