Работа с HOOKами

redfire666

Ни в какую не хочет работать функция SetWindowsHookEx в случае если процедура на которую настраивается ловушка находиться в этом же блоке кода. если я выделяю ее в dll и подключаю,то все в порядке. кто знает приведите рабочий пример(в идеале на делфе) тут все дело в параметрах для SetWindowsHookEx. пробовал настраивать по всякому,но ничего не вышло
2 ответа

redfire666

Насколько я понял, читая хелп, там сказано, что в четвертом параметре должен быть идентификатор текущего процесса, в котором эта функция. Т.е.:
var HK:Cardinal;
HK := SetWindowsHookEx(WH_... , @HookProc, 0, GetCurrentThreadId());
if HK=0 then {error} ;
Но там же в хелпе еще написано, вот что: The system hooks are a shared resource, and installing one affects all applications. All system hook functions must be in libraries.


redfire666

спасибо за помощь. дело оказалось в последнем параметре. я туду записывал hInstance/ как только поменял на GetThreadID все заработало. а поп поводу хелпа,насколько я понял из опыта, функция обработки не обязательно должна лежать в подключаемой библиотеки, хотя это более надежный вариант еще раз thanks