Я написал эту программу на C ++, используя VS2010, чтобы определить, когда пользователь дважды щелкает среднюю кнопку мыши, переключиться на следующее окно (как это делает Alt + Tab) и остановить цепочку хуков.Вот мой код:
DLL:
extern "C"__declspec (dllexport)
LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode<0)
return CallNextHookEx(NULL,nCode,wParam,lParam);
if (wParam == WM_MBUTTONDBLCLK)
{
PostMessage(GetActiveWindow(),WM_SYSCOMMAND,SC_NEXTWINDOW,0);
}
else
return CallNextHookEx(NULL,nCode,wParam,lParam);
// if EVERYTHING_IS_OK
return TRUE;
}
EXE:
do{
nMenu = choose();
switch (nMenu)
{
case 1:
hLib = LoadLibrary(cLibName);
hProc = (HOOKPROC) GetProcAddress(hLib, "HookProc");
hHook = SetWindowsHookEx(WH_MOUSE, hProc, hLib, NULL);
break;
case 2:
UnhookWindowsHookEx(hHook);
break;
case 0:
;
}
} while (nMenu);
Я запускаю программу и устанавливаю ловушку, затем программа зависает и мышь перестает работать вбольшинство приложений (продолжает работать в Chrome, хотя).Что я делаю не так?