Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.07.07;
Скачать: [xml.tar.bz2];

Вниз

ф-ция 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.07.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
3-20002
Cranium
2003-06-13 14:42
2003.07.07
Можно ли получить список таблиц открытых пользователем ...


14-20235
allvin
2003-06-17 19:07
2003.07.07
Апдейт к Делфи 7


14-20222
SSMARRTT
2003-06-18 11:32
2003.07.07
Новый алгноритм сжатия аудио


3-19961
Lord Vader
2003-06-11 10:32
2003.07.07
Несколько копий одного QuickReport на одной странице


14-20253
Кен
2003-06-18 03:46
2003.07.07
А где можно скачать дополнительных форм к Дельфи. Типа AboutBox и





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский