Получить список всех окон

uses
    WinAPI.Windows;

function NextWindow(h: HWnd; L: Longint): Boolean; stdcall;
begin
  ...   // Предпринимаем желаемые действия.
        // h - хэндл очередного окна.
  NextWindow := true; // Согласие принять следующее окно.
end;

var
  EnumProc : TFarProc;
begin
  EnumWindows(@NextWindow, 0);
end;

Через L, в функцию можно передать дополнительные параметры.

Например, форма может запустить перечисление окон и передать ссылку на себя, чтобы обработчик NextWindow получил доступ к атрибутам формы:

uses
    WinAPI.Windows;

function NextWindow(Wnd: HWnd; Form: TMyForm): Boolean; stdcall;
begin
  // Выводим на форму хэндлы обнаруженных окон
  Form.Memo3.Lines.Add(IntToStr(Wnd));

  NextWindow := true;
end;


procedure TMyForm.Button14Click(Sender: TObject);
var
  EnumProc: TFarProc;
begin
  EnumWindows(@NextWindow, LongInt(Self));
end;
Метки: