· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Как предотвратить сброс хука

Посл.отвђт Сообщенiе


Дата: Ноя 4, 2003 02:19:17

В DLL ставлю system-wide хук на клаву (WH_KEYBOARD - т.к. программа должна работать на всех Win32 платформах).
Кодга нажимаю клавиши в программе, которая вызывает хук в DLL, все работает. Но стоит понажимать клавиши в других программах, и хук сразу сбрасывается. Почему так?


Дата: Ноя 4, 2003 06:54:11

Что значит сбрасывается?


Дата: Ноя 4, 2003 12:07:02

Да. не ясно, что ты имеешь ввиду, но я подозреваю, что проблема в том, что ты не поместил хендл хука в разделяемую секцию. Я уже раз пятый на подобный вопрос отвечаю - поищи по форуму.
shared SEGMENT
	gs_hHook		HANDLE	NULL
	gs_hwndTarget	HWND	NULL
shared ENDS

и линкеру сказать

/SECTION:shared,RWS


Дата: Ноя 4, 2003 17:28:23

Four-F

А как насчет сброса хука после нажатия CAD?


Дата: Ноя 4, 2003 23:51:43

Я не понимаю, что имеется ввиду под сброса хука.

По поводу Ctrl+Alt+Del. Есть такая штука как Raw Input Thread (RIT) и такая штука как System Hardware Input Queue (SHIQ).
Когда нажимается клава или дергается мыша, то соотв. драйвер помещает в SHIQ соотв. событие и будит RIT. RIT преобразует событие в WM_XXX и помешает его в очередь соотв. потока. Так вот, Ctrl+Alt+Del и, вроде, Alt+Tab и Alt+Esc явл. особыми комбинациями и их RIT обрабатывает по особому и в очередь сообщений какого-либо конкретного потока они не помещаются, а поэтому не могут быть перехвачены с помощью хуков в принципе.


Дата: Ноя 5, 2003 05:16:56

Four-F
не могут быть перехвачены с помощью хуков в принципе
А как же Ctrl+Alt+Del и WH_KEYBOARD_LL?


Дата: Ноя 5, 2003 15:03:32

"The WH_KEYBOARD_LL hook enables you to monitor keyboard input events about to be posted in a thread input queue."

Комбинация Ctrl+Alt+Del на будет помещена в очередь сообщений никакого потока, поэтому WH_KEYBOARD_LL также работать не будет. Хотя на 100% я этого утверждать не буду, т.к. сам не пробовал играться с этим, но судя по тому, что еще никто не научился перехватывать SAS таким простым методом, то роботать не должно. А вот Alt+Tab, Ctrl+Esc и Alt+Esc, вроде перехватываются.


Дата: Ноя 6, 2003 05:01:03

Four-F
Прошу прощения. Конечно не CtrlAltDel, а AltTab и т.д.


Дата: Ноя 6, 2003 19:02:00

Four-F
Я знал про сегмент общих данных, но не знал как его нужно объявлять, и не знал принципа линкования DLL к процессу - это мой промах(каюсь, грешен) - надо было мне теорию сначала почитать.
thanks.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.064