【问题标题】:C#, C++ , WinAPI - Get Number of windows from another processC#、C++、WinAPI - 从另一个进程获取窗口数
【发布时间】:2011-05-30 10:35:37
【问题描述】:

可以用 C# 或 C++ 或 WinAPI 回答(我知道如何 pInvoke)。

我想要达到的目标。 我想获取另一个应用程序打开的窗口数量。 例如我有聊天应用程序。我想获取窗口数量,因为我不想检测是否有人向我发送消息(新传入消息 = 多一个窗口)。

简而言之。 如何获取另一个进程打开的窗口数。

【问题讨论】:

  • 一个涉及 WinAPI 的答案!= C++ 中的一个答案。
  • @DeadMG 这可以在 WinAPI 中。我的错。
  • “新传入消息 = 多一个窗口”:如果目标聊天应用程序更改其 UI 以使所有消息只使用一个窗口,这将适得其反。如果您从不更改您的聊天应用程序可能没问题,但即便如此,它也确实是个杂牌。
  • @In silico 这只是示例。我想将它用于其他任务。但在那个聊天示例中更容易解释。

标签: c# .net c++ windows winapi


【解决方案1】:

如果您有其他应用程序的进程 ID,这是一种可能的 Windows API 方式:

使用 EnumWindows 函数枚举所有顶级窗口,在回调函数中使用 GetWindowThreadProcessId 来测试属于您给定进程的主窗口。从匹配的主窗口中,您可以继续使用 EnumChildWindows 枚举其所有子窗口。

【讨论】:

    【解决方案2】:

    首先,您需要顶级窗口的句柄。如果您知道窗口的名称,FindWindow() 会检索它。

    第二步已经在 SO 上解释过很多次了:

    .NET (C#): Getting child windows when you only have a process handle or PID?

    How can I get the child windows of a window given its HWND?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多