{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} |
[001993]