вот код проги, которая выводит в мемо имена всех найденых окон:
Код:
procedure GetWinsNames(var outName: string);
var
Wnd: hWnd;
buff: array [0..127] of Char;
begin
outName:= '';
Wnd:= GetWindow(Form1.Handle, gw_HWndFirst);
while Wnd <> 0 do
begin
ZeroMemory(@buff, SizeOf(buff));
if (Wnd<>Application.Handle) and
(IsWindowVisible(Wnd){or checkbox1.checked}) and //checkbox1.checked - показывать скрытые окна
((GetWindow(Wnd, gw_Owner)=0) {or checkbox2.checked}) and //checkbox2.checked - показывать остальные окна
(GetWindowText(Wnd, buff, SizeOf(buff))<>0) then
begin
outName:= outName + buff + #13#10;
//тут можно поколдавать с Wnd
end;
Wnd:= GetWindow(Wnd, gw_hWndNext);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
begin
GetWinsNames(s);
Memo1.Text:= s;
end;
В строчке "//тут можно поколдавать с Wnd" можно поработать с окном (закрыть, свернуть и т.п.)