Текущий архив: 2005.09.04;
Скачать: CL | DM;
Вниз
Локальный хук на WM_SETTEXT Найти похожие ветки
← →
Arc (2005-07-17 12:39) [0]Не могу поставить локальный хук на это сообщение. Как только не делал, не получается.
Код:
SetLocalHook(WH_GETMESSAGE, @DoSetTextHook, FArcSetTextHook);
procedure TArcLocalizator.SetLocalHook(idHook: Integer; lpfn: TFNHookProc; var HookHandle: HHook);
var
ThreadId: Cardinal;
begin
//Set hook for dinamically created
ThreadId := GetCurrentThreadId;
if ThreadId <> 0 then
begin
HookHandle := SetWindowsHookEx(idHook, lpfn, 0, ThreadId);
if HookHandle = 0 then
raise Exception.Create("Can""t add function to a localization hook");
end
else
raise Exception.Create("Can""t get current thread id to a localization hook");
end;
function DoSetTextHook(code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT; stdcall;
var
PACH: PAnsiChar;
s: String;
begin
if TWMSetText(Pointer(lparam)^).msg = WM_SETTEXT then
begin
// Вот сюда я попасть ну ни как не могу, что бы я не делал с lparam
// Some Code
end;
// Для целей мониторинга:
ArcLocSelf.FIniFile.WriteString("Other", IntToStr(lparam), s);
Result := CallNextHookEx(ArcLocSelf.FArcSetTextHook, Code, wParam, LPARAM);
end;
← →
имя (2005-07-17 16:55) [1]Удалено модератором
← →
Digitman © (2005-07-18 18:00) [2]
> Вот сюда я попасть ну ни как не могу
а куда "попадаешь" ? в смысле - ранее по тексту ?
← →
Docent © (2005-07-18 19:15) [3]Может я что-то не правильно понял.
Но ты же вроде как хочешь установить хук на WM_SETTEXT.
А WM_SETTEXT это параметр ф-н SendMessage.
Так почему ты ставишь хук на WH_GETMESSAGE?
Тебе по идее надо ставить хук на ф-н SendMessage тоесть на
WH_CALLWNDPROC...
← →
alpet © (2005-07-18 19:36) [4]Если хук установился - нужно для "попадания" дождаться появления сообщения WM_SETTEXT в очереди твоего потока. Только вот врядли это возможно - как замечено в [3] это сообщение передается прямиком оконной процедуре.
Страницы: 1 вся ветка
Текущий архив: 2005.09.04;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.039 c