|
|
| Посл.отвђт | Сообщен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 |