【问题标题】:FindWindow() by incomplete nameFindWindow() 名称不完整
【发布时间】:2013-10-17 19:38:42
【问题描述】:

有没有办法通过不完整的名称找到窗口?

例如,您如何找到一个可以有多个标题名称的 Google Chrome 窗口?
Stack Overflow - Google Chrome

如果窗口总是与下面的函数同名,FindWindow 函数会很好地解决这个问题。

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

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

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

【问题讨论】:

  • 使用 FindWindowEx 并按类别搜索
  • 你还支持Win98吗?

标签: c++ winapi findwindow


【解决方案1】:

您可以使用窗口类名代替窗口标题。例如,您可以找到 Firefox 与

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

您可以使用任何窗口间谍类型的应用程序,例如 WinSight、WinSpy++ 或(我用来查找 Firefox 窗口类的那个)AutoHotkey 的 Window Spy 实用程序。

有关详细信息,请参阅 FindWindow 的 MSDN 文档。

【讨论】:

  • +1。但是,如果您需要更严格的控制(例如,由于其他应用程序的误报,或者如果类名并不总是一致(不太可能)),那么您可以改用 EnumWindows() 并手动搜索所需的窗口。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 2020-03-19
  • 2013-09-10
相关资源
最近更新 更多