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

Вниз

Хуки   Найти похожие ветки 

 
Spawn   (2003-07-05 18:40) [0]

Пытаюсь перехватывать вызовы АПИ в процессе, но почему то определенная мною функция не вызывается. Делаю подцепление своей ДЛЛ через Хук на WH_CBT (на WH_GETMESSAGE пробовал тоже ни чего не вышло, хотя класс подмены функции, который я юзал выдавал, что подмена прошла успешно).

Вот установка хука


function NewFindWindowA(lpClassName, lpWindowName: PAnsiChar): HWND; stdcall;
begin
ShowMessage("Message From FindWindowA - "+lpWindowName);
Result:=OldFindWindowA(lpClassName,lpWindowName);
end;

function CBTProc(code:integer;wParam:word;lParam:longint):longint;stdcall;
var
hDC:THandle;
wndClass:array[0..127] of Char;

begin
if Code<0 then
Result:=CallNextHookEx(HookHandle,Code,wParam,lParam);
if (code=HCBT_CREATEWND) then
begin
GetClassName(wParam,wndClass,128);
if wndClass=ProgrammClass then
begin
try
PeImportHooks:=TJclPeMapImgHooks.Create;
if PeImportHooks.HookImport(Pointer(HInstance), user32, "FindWindowA",
@NewFindWindowA, @OldFindWindowA) then
begin
Result:=True;
ShowMessage("FindWindowA hooked ...");
end
else
( Format("FindWindowA hooking error - %s", [SysErrorMessage(GetLastError)
Пытаюсь перехватывать вызовы АПИ в процессе, но почему то определенная мною функция не вызывается. Делаю подцепление своей ДЛЛ через Хук на WH_CBT (на WH_GETMESSAGE пробовал тоже ни чего не вышло, хотя класс подмены функции, который я юзал выдавал, что подмена прошла успешно).

Вот установка хука


function NewFindWindowA(lpClassName, lpWindowName: PAnsiChar): HWND; stdcall;
begin
ShowMessage("Message From FindWindowA - "+lpWindowName);
Result:=OldFindWindowA(lpClassName,lpWindowName);
end;

function CBTProc(code:integer;wParam:word;lParam:longint):longint;stdcall;
var
hDC:THandle;
wndClass:array[0..127] of Char;

begin
if Code<0 then
Result:=CallNextHookEx(HookHandle,Code,wParam,lParam);
if (code=HCBT_CREATEWND) then
begin
GetClassName(wParam,wndClass,128);
if wndClass=ProgrammClass then
begin
try
PeImportHooks:=TJclPeMapImgHooks.Create;
if PeImportHooks.HookImport(Pointer(HInstance), user32, "FindWindowA",
@NewFindWindowA, @OldFindWindowA) then
begin
Result:=True;
ShowMessage("FindWindowA hooked ...");
end
else
ShowMessage(Format("FindWindowA hooking error - %s", [SysErrorMessage(GetLastError)]));
finally
FreeAndNil(PeImportHooks);
end;
end;
Result:=0;
end
else
Result:=CallNextHookEx(HookHandle,code,wParam,lParam);
end;

procedure SetHook; export; stdcall;
begin
if HookHandle=0 then
HookHandle := SetWindowsHookEx(WH_CBT, @CBTProc, HInstance, 0);
end;


В чем может быть дело? А используемый мною хук не мог сразу выгрузить себя из процесса после перехода к следующему вызову? Заранее спасибо. Заранее спасибо.


 
Cobalt   (2003-07-07 14:49) [1]

Видимо, вы не прочитали статью про хуки (см. http://www.delphimaster.ru/articles.html)
Подсказка - обратите внимание на глобальные (межпроцессные) переменные, хранящиеся в MAP-файле.



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

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

Наверх





Память: 0.45 MB
Время: 0.008 c
1-24438
shark
2003-08-25 16:14
2003.09.08
Вызов функции из функции


3-24327
Xmen
2003-08-18 14:58
2003.09.08
Paradox -> MySQL


8-24564
wara
2003-05-12 11:35
2003.09.08
Какие данные хранятся вместе с графикой в графических файлах?


8-24565
Василий Петрович
2003-05-13 00:11
2003.09.08
Вопрос по звуку


14-24615
Vlad Oshin
2003-08-18 15:06
2003.09.08
Свадьба. Помните ли Вы это? Какие ощущения?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский