sacado de trucomania:
http://www.q3.nu/trucomania/truco.cgi?301&esp
En un form (llamado form1) pon un boton y un memo (Memo1), en el implementation pega esto y enlaza el evento Button1Click
Código Delphi
[-]
function EnumWinProc(Wnd : HWND) : Boolean; Export; StdCall;
var
WinText : Array[0..255] of Char;
begin
GetWindowText(Wnd, WinText, 255);
Result := True;
if (StrPas(WinText) <> '') and
IsWindowVisible(Wnd) and
(Wnd<>Application.Handle) and
(Wnd<>Form1.Handle)
then
Form1.Memo1.Lines.Add(WinText);
end;
procedure TForm1.Button1Click(Sender: TObject);
var Botones: array of TButton;
begin
EnumWindows(@EnumWinProc, LongInt(Self));
end;
Observese que EnumWinProc
No es una funcion de Tform1 sino una función exportada para la realizacion del callback de EnumWindows