Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
|
чем в дальнейшем занимается поток который поставил хук? 21.07.09 20:44 Число просмотров: 3314
Автор: Killer{R} <Dmitry> Статус: Elderman
|
чем в дальнейшем занимается поток который поставил хук?
ему полагается крутить цикл выборки сообщений
а фигню с десктопами и оконными станциями - убрать
|
<beginners>
|
explorer.exe и wh_keyboard_ll 21.07.09 20:39 [Den, HandleX]
Автор: .7mm Статус: Незарегистрированный пользователь
|
Друзья, доброго всем здравия!
Делаю инжект своего кода в процесс 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 Статус: Незарегистрированный пользователь
|
|
| | |
Вопрос снят. Действительно, необходимо выполнять обычный... 21.07.09 21:04
Автор: .7mm Статус: Незарегистрированный пользователь
|
> > чем в дальнейшем занимается поток который поставил > хук? > > ему полагается крутить цикл выборки сообщений > > а фигню с десктопами и оконными станциями - убрать > > Ожидает событий WaitForMultipleObjects.... Я так понимаю, > по вашим словам нужно крутить GetMessage/DispatchMessage ??
Вопрос снят. Действительно, необходимо выполнять обычный цикл выборки сообщений.
Спасибо, очень помогли.
|
|
|