Проблема с крючком мыши и окном сообщения - PullRequest
0 голосов
/ 02 сентября 2011

пытаюсь зацепить мышку;и мой MouseProc имеет значение

{
   if(nCode==HC_ACTION)
   {
       if(wParam==WM_LBUTTONDOWN)
       {
          MessageBox(NULL,L"",L"",MB_OK);
          return TRUE;
       }
   }
   return CallNextHookEx(hHook,nCode,wParam,lParam);
}

Я не знаю, почему он перехватывает мою мышь, а затем генерирует по крайней мере 10 окон сообщений всего за одно нажатие левой кнопки мыши.Почему это не так?Также я хотел бы знать, как я могу подключить только определенный процесс, существующий в диспетчере задач, а не подключить все существующие окна?Для этого я попытался установить четвертый параметр SetWindowsHookEx () в качестве идентификатора указанного потока, но на самом деле ничего не зацепило.(хотя hHook возвращается не NUll)

Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 октября 2011

Для начала ваша подключаемая процедура должна существовать внутри DLL. Это требование для глобального хука. Вы можете установить ловушку на идентификатор потока, что является наилучшим способом, но вы также можете выполнить некоторую проверку идентификатора процесса в своей ловушке, если вам требуется

0 голосов
/ 02 сентября 2011

Как вы можете подключить определенный процесс? Щелчки мыши являются глобальными. Вы имеете в виду, что хотите подключить определенное окно, что вы можете сделать через внедренную DLL, в которой вы подкласс назвали окно .


Что касается того, почему ваш хук вызывается несколько раз за клик, MSDN говорит: :

"Система вызывает эту функцию всякий раз, когда приложение вызывает функцию GetMessage или PeekMessage, и существует сообщение мыши для обработки."

...