-
С помощью хука отлавливаю создание окна, но заголовок в нём появляется спустя 2 секунды. Мне нужно подождать и считать заголовок. Какие есть варианты? Мой вариант: ListTimer: TList<TTimer>;
begin
ListTimer.Add(TTimer.Create(nil));
ListTimer.Last.Tag := wnd;
ListTimer.Last.Interval := 2000;
ListTimer.Last.OnTimer := OnTimer_Timer;
ListTimer.Last.Enabled := True;
end;
procedure OnTimer_Timer(Sender: TObject);
var
Timer: TTimer;
i: integer;
begin
Timer := TTimer(Sender);
Timer.Enabled := False;
i := ListTimer.IndexOf(Timer);
ListTimer[i].Free;
ListTimer[i] := nil;
ListTimer.Delete(i);
end;
-
> ListTimer.Last.Interval := 2000;
сделать 3568, и тогда заголовок появится через 3,568 секунды достаточно для > Мне нужно подождать
?
-
Не понял. Смотрите, я с помощью хука отлавливаю создание окна, но в момент создания у окна ещё нет заголовка, он появиться спустя 1,5 секунды. Мне нужно чтобы определённый код выполнился спустя 2 секунды после создания окна, чтобы я в этом коде мог считать и обработать заголовок. Sleep не подходит. И окон может открыться сразу несколько. У меня появилась идея с таймерами, добавляться их в TList и по истечению 2 секунды выполнять код и удалять их. У меня опыта мало, может существует лучшее решение?
-
ну тогда поставить хук на заголовок окна, кто его там пишет, SetWindowText ?
-
> Жук (01.04.18 01:22) [2]
> У меня опыта мало, может существует лучшее решение?
Ставить хук WH_CALLWNDPROC/RET и отслеживать изменение заголовка окна при WM_GETTEXT.
-- Regards, LVT.
-
> У меня опыта мало, может существует лучшее решение?
Заплатить тому, у кого этот опыт есть. Вроде очевидно.
|