{function FindWindowHandle (HuntFor: string):
HWnd;}
{----------------------------------------------------------------}
{
Ищем родительское окно с заголовком, содержащим строку HuntFor.}
{ Возвращаем
дескриптор окна, или 0, если ничего не найдено.
}
{----------------------------------------------------------------}
{ Приведенный ниже код является логической частью }
{ FindWindowHandle, но расположен здесь, поскольку }
{ реальная функция FindWindowHandle, реализованная }
{ Borland, не допускает вложенных функций возврата. }
{-----------------------------------------------------}
type
PHuntRec = ^THuntRec;
THuntRec = record
HuntingFor: string;
WindowFound: HWnd;
end;
function EnumWindowsFunc (WindowHandle: HWnd;
lParam: Longint): WordBool; export;
{-----------------------------------------------------}
{ Callback-функция, используемая FindWindowHandle. }
{-----------------------------------------------------}
var
ATitle: array[0..255] of Char;
begin
GetWindowText(WindowHandle, PChar(@ATitle), 255);
if StrContains(StrPas(PChar(@ATitle)),
PHuntRec(lParam)^.HuntingFor, CaseInsensitive) then
begin
PHuntRec(lParam)^.WindowFound := WindowHandle;
EnumWindowsFunc := false; {останавливаем
просмотр}
end
else
EnumWindowsFunc := true {продолжаем
просмотр}
end; {EnumWindowsFunc}
function FindWindowHandle (HuntFor: string):
HWnd;
var
Proc: TFarProc;
HuntRec: PHuntRec;
begin
GetMem(HuntRec, SizeOf(THuntRec));
HuntRec^.HuntingFor := HuntFor;
HuntRec^.WindowFound := 0;
Proc := MakeProcInstance(@EnumWindowsFunc, HInstance);
EnumWindows(Proc, Longint(HuntRec));
FreeProcInstance(Proc);
FindWindowHandle := HuntRec^.WindowFound;
FreeMem(HuntRec, SizeOf(THuntRec));
end; {FindWindowHandle}