麻烦大家看看我错在那里?我想查找所有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;

解决方案 »

  1.   


    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;
      

  2.   

    要列出所有的,必须用 EnumWindows 或 FindWindowEx
      

  3.   

    我也没搞懂,大家继续!
    TO  hiflower(花) 换成 FindWindowEx
    好像也不行!!!
      

  4.   

    要在循环中用 FindWindowEx
    hwnd:=FindWindow(...)
    while hwnd<>0 do
    begin
      hwnd:=FindWindowEx(..,hwnd,...)
    end;