不要用EnumWindowsProc来遍历窗口。 用GetNextWindow来递归查询会好些。具体的代码你可以参考一下下面的:procedure TForm1.Button1Click(Sender: TObject); var FirstWindow: THandle; NameStr: array[0..255] of Char; begin ListBox1.Items.Clear; //EnumWindows(@EnumWindowsProc,0); FirstWindow :=GetActiveWindow; While(FirstWindow<>0)do begin GetWindowText(FirstWindow,NameStr,255); if NameStr<>'' then begin if IsWindowVisible(FirstWindow) and (GetParent(FirstWindow)=0) then//显示可见的无父窗体的窗体 ListBox1.Items.Add(NameStr); end; FirstWindow:=GetNextWindow(FirstWindow,GW_HWNDNEXT); end; end;
正常是通过EnumWindows可以枚举到QQ幻想这个窗口的,但现在枚举不到,用这个函数,还希望高手们能指点.
用GetNextWindow来递归查询会好些。具体的代码你可以参考一下下面的:procedure TForm1.Button1Click(Sender: TObject);
var
FirstWindow: THandle;
NameStr: array[0..255] of Char;
begin
ListBox1.Items.Clear;
//EnumWindows(@EnumWindowsProc,0);
FirstWindow :=GetActiveWindow;
While(FirstWindow<>0)do
begin
GetWindowText(FirstWindow,NameStr,255);
if NameStr<>'' then
begin
if IsWindowVisible(FirstWindow) and (GetParent(FirstWindow)=0) then//显示可见的无父窗体的窗体
ListBox1.Items.Add(NameStr);
end;
FirstWindow:=GetNextWindow(FirstWindow,GW_HWNDNEXT);
end;
end;
AnsiContainsText(chars,'QQ自由幻想')
用VC的SPy++先找到那个窗口的句柄,再用FindwindowEx找他的窗口,我以前这样用这方法找过QQ的窗口,