Вниз
Скачать: CL | DM;

ф-ция setwindowhookex или о вторжении в чужу область памяти   Найти похожие ветки 

← →
FallenGod   (2003-05-05 18:41) [0]

Как я могу повешать хук на чужое окно, т.е мне нужно отлавливать нажатия клавишь которые происходят тока в определнном, и чужом окне. На сколько я знаю функция которая будет вызываться при срабатывании хука должна лежать в dll , а можно как либо осуществеить это без dll? т.е есть один exe который вешает хук на другой exe ? Когда пробуешь ложить функцию не в длл а в сам ехе, то получаешь код ошибки 5 - access denied. Я так понял что по простому в чужую область памяти нельзя вторгнуться.

Есть какие либо предложения как можно осуществить вышеприведенную задчау ?

Заранее благодарен.


← →
Cobalt ©   (2003-05-06 11:22) [1]

Задача твоя решения не имеет, т.к. в справке сказано однозначно, что функцию надо ложИть в ДЛЛ:
If the dwThreadId parameter is zero or specifies the identifier of a thread created by a different process, the lpfn parameter must point to a hook procedure in a dynamic-link library (DLL).


← →
Nikolai   (2003-05-06 17:40) [2]

А при чем тут необходимость "вторгаться в адресное пространство чужого процесса". Если нужно отлавливать нажатие клавишь и инициировать какие-либо действия, - для этого не нужно лезть в АП чужого процесса. А если тебе нужны байтики в АП чужого процесса посмотри WMI.


← →
vidiv ©   (2003-05-07 05:21) [3]

Есть способ!
Кидаешь функцию (HookProc) обработки в сам exe, помещаешь ее в раздел Exports (ну там еще надо StdCall... и т. п.).
И делаешь в разделе пременных переменную типа функции:
var MyHookProc: function (....):HResult; stdcall;

потом просто делаешь
h:=LoadLibrary(PChar(ParamStr(0)));
if h=0 then ...
@MyHookProc := GetProcAddress(h,"HookProc");
а потом уже делаешь с ней хук...
пусть криво, зато без DLL


← →
Nikolai   (2003-05-07 11:58) [4]

2 vidiv © (07.05.03 05:21)
и как это все будет работать? Я так понимаю для загружаемого как библиотека модуля код библиотеки периода выполнения запускаться не будет. Что-то мне подсказывает, что начнутся баги :)... найти адреса API функций в АП вызвавшего exe-шника, по-моему, уже будет нетривиальной задачей.
Про VCL вообще молчу.
Или я что-то пропустил?


← →
Code.x   (2003-05-07 12:48) [5]

а я решил эту проблему простым GetAsyncKeyState, при этом проверяя какое окно сейчас Getforegroundwindow. Вроде все работает



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
14-20267
Lamer111
2003-06-19 22:45
2003.07.07
чат для локалки


9-19940
Сергей Чурсин
2002-07-20 21:50
2003.07.07
Кто знает интересные сайты по собственно game design ?


1-20108
BlackSun
2003-06-23 15:07
2003.07.07
Наследник TMemo


14-20244
Sergey128
2003-06-19 17:16
2003.07.07
dll-ки


6-20180
vlgrig1961
2003-04-30 14:36
2003.07.07
Вопрос про Win2k Server и WinNT4 server




   Наверх