· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› 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.


Дата: Окт 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