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));

相关阅读 >>

Delphi 简单方法搜索定位treeview项

Delphi 实现dns上线域名解析(用于远控server)

Delphi 判断是否是系统管理员身份

Delphi xe6 switch元件�繁�w���}

Delphi richedit 加入链接

Delphi listview 与数据库连接

Delphi idhttp1post上传图片

Delphi编解码js字符串

Delphi dbgrid适应宽度

Delphi windows 编程[2] - 学习窗体生成的过程二

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...