想到了用
h:=getwindow()
while h<>0 then
getwindowtext(),
但这样找出来的窗体有许多是不可见的窗体,如什么“电源控制”……好象应该用enumwindow(),但不能具体实现。
哪个大师能帮帮忙?
h:=getwindow()
while h<>0 then
getwindowtext(),
但这样找出来的窗体有许多是不可见的窗体,如什么“电源控制”……好象应该用enumwindow(),但不能具体实现。
哪个大师能帮帮忙?
begin
if IsWindowVisible(hWnd) then
begin
//...
end;
end;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows(@Enumproc, 0);
end;end.
var
WndCaption: array[0..254] of Char;
begin
GetWindowText(AWnd, @WndCaption, 254);
if IsWindowVisible(awnd) then
begin
if WndCaption[0]<>chr(0) then
Form1.ListBox1.Items.Add(Format('%d = %s',[AWnd,StrPas(WndCaption)]));
end;
Result := True;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows(@EnumWndProc,0);
end;
呵呵,给分吧!
function EnumWndProc(AWnd: HWND; AlParam: LPARAM):Boolean;stdcall;
begin
if IsWindowVisible(awnd) then//可视窗体吗?
begin
Form1.ListBox1.Items.Add(inttostr(awnd));
end;
Result := True;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows(@EnumWndProc,0);
end;
EnumWndProc是自定义一个回调函数!
blueshu(绝对是菜鸟)的方法只可以枚举当前进程的VCL窗体。