マウスの移動時に画面の一部を表示するコードがあります。しかし、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);
}