Winapi 使用程序WIndowClass调用FindWindowEx

Winapi 使用程序WIndowClass调用FindWindowEx,winapi,Winapi,我试图使用FindWindowEx来确定某个程序是否正在运行 FindWindow(NULL, "Mozilla Firefox"); 只要我在firefox的起始页上,这就可以正常工作。我发现的一个解决方法是: FindWindow(NULL, "MozillaWindowClass"); 但这让我想知道这是否是专门为firefox设计的,但它似乎适用于其他应用程序: FindWindow(NULL, "OllyDbgWindowClass"); 所以我的问题是,对于任何程序,我是否可以

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

FindWindow(NULL, "Mozilla Firefox");
只要我在firefox的起始页上,这就可以正常工作。我发现的一个解决方法是:

FindWindow(NULL, "MozillaWindowClass");
但这让我想知道这是否是专门为firefox设计的,但它似乎适用于其他应用程序:

FindWindow(NULL, "OllyDbgWindowClass");
所以我的问题是,对于任何程序,我是否可以使用FindWindow和“programXWindowClass”这样的参数?有例外吗

programXWindowClass”是否保证存在

“programXWindowClass”是否保证存在

不,你所观察到的只是命名上的巧合

“programXWindowClass”是否保证存在


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

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

记住这一点的两个显著后果:

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

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

      记住这一点的两个显著后果:

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