Меню сайта
Мини-чат
Чтобы добавить сообщение, необходимо авторизоваться.
Главная » Статьи » Не стандартные примеры на Delphi » Pascal

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

    {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}
Категория: Pascal | Добавил: DelphiAiX (09.05.2012)
Просмотров: 854 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]