Советы по Delphi

         

Функции обратного вызова


    {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]



Содержание раздела