【发布时间】:2012-08-28 12:41:31
【问题描述】:
我有一个代码可以在鼠标移动时显示屏幕的一部分。但是 WH_MOUSE 不起作用。我需要将GetModuleHandle(0), 0 更改为hInst, GetCurrentThreadId()。
但只有当鼠标悬停在应用程序本身上时,该应用程序才会工作。
我希望它是全局的,我尝试了 WH_MOUSE_LL,它比 WH_MOUSE 慢。
是否可以在没有 DLL 的情况下全局使用 WH_MOUSE?
void SetHook()
{
gMouseHook = SetWindowsHookEx(WH_MOUSE, MouseProc, GetModuleHandle(0), 0);
}
//================================================================================
// Mouse Hook
static LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode < 0) {
return CallNextHookEx(gMouseHook, nCode, wParam, lParam);
}
if (wParam == WM_MOUSEMOVE) {
MOUSEHOOKSTRUCT *mouseInfo = (MOUSEHOOKSTRUCT*)lParam;
int x = mouseInfo->pt.x;
int y = mouseInfo->pt.y;
PrintScreen(x, y);
}
return CallNextHookEx(gMouseHook, nCode, wParam, lParam);
}
【问题讨论】:
标签: c winapi hook mouseevent mousemove