|
|
| Посл.отвђт | Сообщен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. |
|
|
Дата: Окт 3, 2004 05:24:38 и линкеру сказать /SECTION:shared,RWS А линкер говорит LINK : fatal error LNK1117: syntax error in option 'SECTION:shared' Что делать? |
|
|
Дата: Окт 3, 2004 15:00:36 SolidCode Линкер у тебя наверное старый. 6-ка у меня кушает и это и .bss ( из другой темы). |
|
|
Дата: Окт 5, 2004 21:00:19 Скачал с этого сайта самый последний масм. на фразу: LINK.EXE /SECTION:.bss,S /SUBSYSTEM:WINDOWS /RELEASE /DLL /DEF:$6 /LIBPATH:"$L" /OUT:"$7" Его линкер теперь говорит: LINK : fatal error LNK1181: cannot open input file "S /SUBSYSTEM:WINDOWS /RELEASE /DLL /DEF:$6 /LIBPATH:C:\Masm32\Lib /OUT:$7.obj" |
|
|
Дата: Окт 6, 2004 12:32:53 Его линкер теперь говорит: LINK : fatal error LNK1181: cannot open input file Ты его неправильно запускаешь(масм). Он у тебя не подставил 6 и 7 параметры ( $6 и $7). Я масм не знаю, но просто визуально вижу.... К тому же link почему-то все что идет после запятой считает именем файла. У тебя какая командная оболочка - может она портачит. Или IDE может какое используешь. И вообще вопрос с конца задавать неправильно. Напиши, ОС какая, откуда масм брал и т.п. |
|
|
Дата: Окт 6, 2004 15:21:20 „и линкеру сказать /SECTION:shared,RWS“ А линкер говорит LINK : fatal error LNK1117: syntax error in option 'SECTION:shared' Что делать? Убрать слово shared и запятую после него. Потому что RWS и без того расшифровывается как read-write-shared. |
|
|
Дата: Окт 6, 2004 19:00:16 Спасибо за участие. Частично проблема уже решена. Я в ХП, IDE - RadASM:masm. И чего-то он там неправильно делает. Я потом прямо в масме откомпилил библиотечку - всё пошло как по маслу. Это какие-то глюки в RadASM-е. Я как-то из MASM32.LIB хотел что-то импортнуть в свою прогу. Есть там хорошие утилитки. Из под масма всё шло ОК, а из радасма (хотя и масмовый проект) он не стал импортить. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.106 |