我错在那了?(一个简单的问题enumwindows)

dongteng 2003-08-01 11:18:38
麻烦大家看看我错在那里?我想查找所有IE窗口,但我的程序却只能找到一个!!!!
function pro(hWnd: HWND; lParam: LPARAM):bool;
var mytext:array [0..255] of char;
begin
if hwnd=findwindow('ieframe',nil) then
begin
getwindowtext(hwnd,mytext,255);
form1.Memo1.Lines.Add((mytext));
end;
result:=true;
end;
...全文
52 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hiflower 2003-08-01
  • 打赏
  • 举报
回复
要列出所有的,必须用 EnumWindows 或 FindWindowEx
dongteng 2003-08-01
  • 打赏
  • 举报
回复
可以告诉我我错在那里了吗?
  • 打赏
  • 举报
回复

function loop(H: HWND; L: LPARAM): boolean; stdcall;
var
P,p2: Pchar;
begin
GetMem(P, 256);
GetMem(P2, 256);
GetClassName(H, P, 256);
if strpas(P) = 'IEFrame' then //此处忽略大小写,可自行加上
//TStringList(L).Add(IntToStr(H));
begin
GetWindowText(H,p2,256);
form1.listbox2.Items.Add(IntToStr(H)+'='+p+p2);
end;
Freemem(P);
FreeMem(p2);
result := true;
end;

procedure TForm1.Button2Click(Sender: TObject);
var T: TStringList;
i: integer;
begin
T:=TstringList.Create;
EnumWindows(@loop,LongInt(T));
//listbox1.Items.Assign(t);
for i:=0 to T.Count-1 do
//postMessage(StrToInt(T.Strings[i]),WM_CLOSE,0,0);
T.Free;
end;
hiflower 2003-08-01
  • 打赏
  • 举报
回复
要在循环中用 FindWindowEx
hwnd:=FindWindow(...)
while hwnd<>0 do
begin
hwnd:=FindWindowEx(..,hwnd,...)
end;
智商无下限 2003-08-01
  • 打赏
  • 举报
回复
我也没搞懂,大家继续!
TO hiflower(花) 换成 FindWindowEx
好像也不行!!!

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧