使用程序WIndowClass调用FindWindowEx

时间:2018-11-13 05:04:22

标签: winapi

我正在尝试使用FindWindowEx来确定某个程序是否正在运行。

FindWindow(NULL, "Mozilla Firefox");

只要我在firefox的起始页上,它就可以正常工作。我发现一种解决方法是:

FindWindow(NULL, "MozillaWindowClass");

但是那让我想知道这是否是专门为Firefox设计的,但是事实证明它显然适用于其他应用程序:

FindWindow(NULL, "OllyDbgWindowClass");

所以我的问题是,对于任何程序,我是否可以仅使用带有“ programXWindowClass ”之类的参数的FindWindow?有什么例外吗?

programXWindowClass ”是否一定存在?

2 个答案:

答案 0 :(得分:3)

不需要RegisterClassEx的调用者遵循任何特定的模式,该模式将窗口类名称映射到任何其他信息(例如应用程序名称)。任何调用者都可以选择他们喜欢的任何有效窗口类名称。

请记住以下两个明显的后果:

  • 窗口类名称不必对于任何给定应用程序都是唯一的。例如,所有UWP应用程序默认都使用窗口类“ Windows.UI.Core.CoreWindow”。
  • 窗口类名称可以在应用程序的不同版本之间变化,甚至可以在应用程序的不同调用之间变化。

答案 1 :(得分:1)

  

“ programXWindowClass”是否一定存在?

不。您观察到的只是命名上的巧合。