读书人

为何通过FindWindowEx获取不到呢

发布时间: 2013-04-02 12:35:26 作者: rapoo

为什么通过FindWindowEx获取不到呢?
是不是要一级级找下去才找得到?

procedure TForm1.Button1Click(Sender: TObject);
var
hWnd:LongInt;
begin
hWnd:=FindWindowEx(0,THandle(nil),'#262700',nil);
if hWnd<>0 then
begin

sendmessage(hWnd,WM_SYSCOMMAND,SC_MINIMIZE,0);
end
else MessageBox(self.handle,'没找到该窗口句柄','提示',0);

end;

为何通过FindWindowEx获取不到呢
[解决办法]

引用:
引用:
对,要一级级找。
先FindWindow找到顶层窗口,再FindWindowEx找子窗口。
肉眼是看不出一级级的层次的,用Spy++可以。

通过句柄查看精灵,找的了这些窗口信息,包括进程ID,还需要一级级查找吗?

有没有什么可以不用一级级查找的呢?

重启一下那个进程,发现窗口句柄肯定会变的!所以还是得查找。也可以在找到顶层窗口之后,用EnumChildWindows枚举所有子窗口,但这样还不如一级级的找方便。
你说的“句柄查看精灵”我不知道好不好用,但还是推荐使用微软出品的Spy++。

读书人网 >.NET

热点推荐