2013-10-17 139 views
1

有什么方法可以通过不完整的名称找到窗口吗?FindWindow()不完整的名称

例如,您如何找到一个可以有多个标题名称的Google Chrome窗口?
堆栈溢出 - 谷歌浏览器

FindWindow函数将工作的伟大,如果窗口总是有相同的名称,如下面的人会解决这个问题的功能。

HWND chrome = FindWindow(NULL,_T("Stack Overflow - Google Chrome")); 
SetForegroundWindow(chrome); 

但是,如果名称不断变化(如浏览器)会发生什么?我怎样才能通过搜索一个固定的开始/结束找到一个窗口?

我在找的是类似FindWindow(NULL,_T("something here - Google Chrome")的东西。
有什么办法可以做到吗?

+1

使用FindWindowEx并按类 – user1233963

+0

搜索你还支持Win98吗? –

回答

3

您可以使用窗口类名来代替窗口标题。举例来说,你可以用

HWND firefox = FindWindow(_T("MozillaWindowClass"), NULL); 

您可以使用像WinSight,WinSpy ++,或(我用找到的Firefox窗口类的)任何窗口间谍类型的应用程序的AutoHotkey的窗口Spy中发现Firefox浏览器。

有关更多信息,请参阅FindWindow的MSDN文档。

+4

+1。但是如果你需要更严格的控制(例如由于其他应用程序的误报,或者如果类名不总是一致的(不太可能)),那么你可以使用['EnumWindows()'](http:// msdn .microsoft.com/en-us/library/windows/desktop/ms633497%28v = vs.85%29.aspx)并手动搜索所需的窗口。 –