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 tfile

Delphi unigrid记录check遍历

Delphi 检测一个网络连接是否有效带超时

Delphi远程开机再配合远程控制

Delphi获取java时间戳

Delphi mscomm 比较完整的用法例子

Delphi app 横屏和竖屏

Delphi ioutils 获取当前目录下所有的文件/文件夹

Delphi 备份恢复剪切板

Delphi insert 插入一个字符(串)

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



打赏

取消

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

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

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

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

评论

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