I am hooking LowLevelMouseProc callback (WH_MOUSE_LL). If left or right button is pressed and held, WM_MOUSEMOVE and WM_?BUTTONUP events has wrong mouse coordinates.
This happens only in World of Warcraft window. And only if cursor is in first 2/3 of screen height and width. The x and y coordinates are just constant (values like 600 and 960) until button is released. In the bottom-right corner coordinates are ok. All other windows also are ok.
I am really shocked because this is system hook and I expected it is independent from actual window. Also I cannot understand what can I do.
May be you have met this?
SetWindowsHookEx(WH_MOUSE_LL, HookCallbackMouse, NULL, 0);
LRESULT __stdcall HookCallbackMouse(int nCode, WPARAM wParam, LPARAM lParam)
if (nCode >= 0)
const MSLLHOOKSTRUCT& mouseStruct = *((MSLLHOOKSTRUCT*)lParam);
// call the next hook in the hook chain. This is nessecary or your hook chain will break and the hook stops
return CallNextHookEx(_hook, nCode, wParam, lParam);
void ProcessMouse(WPARAM event, const MSLLHOOKSTRUCT& mouseStruct)
cout << event << "," << mouseStruct.pt.x << "," << mouseStruct.pt.y;
What may cause this problem? How can I prevent it?