delphi 列出所有可视窗口  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi 列出所有可视窗口


function EnumWndProc(AWnd: HWND; AlParam: LPARAM): Boolean; stdcall;
var
szText: array[0..254] of char;
begin
if IsWindowVisible(awnd) then
begin
GetWindowText(awnd, @szText, 255);
if szText<>'' then
Form1.listBox1.Items.Add(strPas(@szText));
end;
Result := True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
EnumWindows(@EnumWndProc, 0);
end;

如果要查找第一个窗口,按以下代码: 因为EnumWindows函数的功能是:枚举屏幕上所有程序中的顶层窗口,将窗口句柄以参数的形式传递给回调函数。找到一个窗口,就调用一次回调函数。枚举结束的条件是:要么枚举完所有的窗口,要么回调函数返回False。

function EnumWndProc(AWnd: HWND; AlParam: LPARAM): Boolean; stdcall;
var
szText: array[0..254] of char;
begin
Result := True;
if IsWindowVisible(awnd) and (awnd<>Form1.Handle) then //要排除掉本窗口
begin
GetWindowText(awnd, @szText, 255);
if szText<>'' then
begin
Form1.listBox1.Items.Add(inttostr(awnd)+': '+strPas(@szText));
Result:=False;
end;
end;

end;

回调函数: 函数名称可以随便乱取,但函数参数的类型一般不得乱来,其顺序,数据类型等都有规定的,因为这些都是让其他程序调用的,他们已经规定好了的,但参数名称可以随便乱叫。注意后面一定要带上“stdcall”,下面这样也行.

function EnumWindowsProc(AhWnd:LongInt;AForm:TForm1):boolean;

调用时: EnumWindows(@EnumWindowsProc,LongInt(self));

推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.045009136199951 seconds