SetWindowsHookEx не может повторно подключить определенное приложение

Я хочу использовать SetWindowsHookEx (), чтобы нажать клавишу пользователя и щелкнуть мышью.
И я определил глобальный хук клавиатуры / мыши и установил его с помощью SetWindowsHookEx.
Хуки работают практически на приложениях, но не могут работать на конкретных приложениях (например, Cain & Абель).

Проблема в:

Когда я первый раз нажал на Каина & Абель, я могу получить информацию о клике. Тогда это не может работать, пока я не нажму другое приложение или консоль.

Вот часть моего кода:

    #include <QtCore/QCoreApplication>
#include <QtDebug>
#include <QTime>
#include <QChar>
#include <iostream>
#include <Windows.h>
#pragma comment(lib, "user32.lib")

HHOOK hHook = NULL;
HHOOK hMouseHook = NULL;

Главный:

    int main(int argc, char *argv[])
{

QCoreApplication a(argc, argv);
HINSTANCE hInstance = GetModuleHandle(NULL);

hHook = SetWindowsHookEx(WH_KEYBOARD_LL, MyLowerLevelKeyBoardProc, NULL, 0);
hMouseHook = SetWindowsHookEx(WH_MOUSE_LL, MyLowerLevelMouseProc, hInstance, 0);

MSG message;
while (GetMessage(&message,NULL,0,0)) {
TranslateMessage( &message );
DispatchMessage( &message );
}

UnhookWindowsHookEx(hHook);
UnhookWindowsHookEx(hMouseHook);if (hHook == NULL || hMouseHook == NULL)
{
qDebug() << "Hook failed";
}

return a.exec();
}

Функция обратного вызова: MyLowerLevelMouseProc

    LRESULT CALLBACK MyLowerLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam){
MOUSEHOOKSTRUCT *pMouseStruct = (MOUSEHOOKSTRUCT *)lParam;

if (pMouseStruct != NULL){
POINT   screenpoint;
HWND    hwndFoundWindow = NULL;

switch(wParam){
case WM_LBUTTONDOWN:
GetCursorPos (&screenpoint);
hwndFoundWindow = WindowFromPoint (screenpoint);
qDebug() << "1. Mouse click! (Left), x= " << screenpoint.x << ", y= " << screenpoint.y;
qDebug() << "2. hwndFoundWindow=" << hwndFoundWindow
break;

case WM_RBUTTONDOWN:
GetCursorPos (&screenpoint);
hwndFoundWindow = WindowFromPoint (screenpoint);
qDebug() << "Mouse click! (Right)" ;
break;

}

}
return CallNextHookEx(hMouseHook, nCode, wParam, lParam);
}

Если есть идеи и решения, пожалуйста, помогите мне.
Большое спасибо.

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]