> Ожидает событий WaitForMultipleObjects.... Я так понимаю, > по вашим словам нужно крутить GetMessage/DispatchMessage ?? Ага. А если еще нуна ивента ждать - MsgWaitForMultipleObjects + PeekMessage/DispatchMessage
Делаю инжект своего кода в процесс explorer.exe. Создаю новый поток. Проблем нет, код отрабатывает. Пытаюсь установить глобальный хук клавиатуры WH_KEYBOARD_LL. Ошибок не возникает, но хук не ловит события от клавиатуры.
Нашел через поисковики, что возможно проблема с тем, что хук ставиться на другой десктоп. Хорошо, делаю следующее:
1. Сохраняю текущие значения: GetProcessWindowStation, GetThreadDesktop.
2. Меняю текущую станцию процесса на Winsta0: SetProcessWindowStation.
3. Открываю десктоп Default: OpenDesktopA (как вариант OpenInputDesktop).
4. Задаю потоку полученный десктоп (Winsta0\Default): SetThreadDesktop.
5. Ставлю хук: GetModuleHandle / SetWindowsHookEx.
6. Восстанавливаю значение станции процесса: SetProcessWindowStation
Все функции отрабатывают без ошибок. Реакции хука на нажатые кнопки я не наблюдаю :((
Кто сталкивался, подскажите в чём может быть дело?
P.S. Вопрос скорее в programming, но с нулевым рейтингом не могу создать там сообщение...
чем в дальнейшем занимается поток который поставил хук?21.07.09 20:44 Автор: Killer{R} <Dmitry> Статус: Elderman
чем в дальнейшем занимается поток который поставил хук?
ему полагается крутить цикл выборки сообщений
а фигню с десктопами и оконными станциями - убрать
Ожидает событий WaitForMultipleObjects.... Я так понимаю, по...21.07.09 20:56 Автор: .7mm Статус: Незарегистрированный пользователь
> чем в дальнейшем занимается поток который поставил хук? > ему полагается крутить цикл выборки сообщений > а фигню с десктопами и оконными станциями - убрать
Ожидает событий WaitForMultipleObjects.... Я так понимаю, по вашим словам нужно крутить GetMessage/DispatchMessage ??
Ага. А если еще нуна ивента ждать -...22.07.09 00:59 Автор: Killer{R} <Dmitry> Статус: Elderman
> Ожидает событий WaitForMultipleObjects.... Я так понимаю, > по вашим словам нужно крутить GetMessage/DispatchMessage ?? Ага. А если еще нуна ивента ждать - MsgWaitForMultipleObjects + PeekMessage/DispatchMessage
Круто! Снова спасибо :)22.07.09 13:15 Автор: .7mm Статус: Незарегистрированный пользователь
> > чем в дальнейшем занимается поток который поставил > хук? > > ему полагается крутить цикл выборки сообщений > > а фигню с десктопами и оконными станциями - убрать > > Ожидает событий WaitForMultipleObjects.... Я так понимаю, > по вашим словам нужно крутить GetMessage/DispatchMessage ??
Вопрос снят. Действительно, необходимо выполнять обычный цикл выборки сообщений.