.NET(C#):只有进程句柄或PID时获取子窗口?

she*_*241 22 .net c# windows user-interface

一种特殊情况的问题:

  • 我开始一个过程 System.Diagnostics.Process.Start(..)
  • 该过程打开一个闪屏 - 这个闪屏成为主窗口.
  • 启动画面关闭,显示"真实"UI.主窗口(启动画面)现在无效.
  • 我仍然有Process对象,我可以查询它的句柄,模块等.但是主窗口句柄现在无效.

此时我需要获取进程的UI(或UI句柄).假设我无法改变流程的行为以使其更容易(或更安全).

我在网上四处看看,但我承认我没有看一个多小时.看起来像它应该有点琐碎:-(

MB.*_*MB. 10

如果您不介意使用Windows API,您可以使用EnumWindowsProc并检查使用的每个句柄GetWindowThreadProcessId(以查看它在您的过程中),然后可能IsWindowVisible,GetWindowCaptionGetWindowTextLength确定hWnd您的过程中的哪一个是你要.

虽然如果你在这种方法之前没有使用过那些功能会是一种正确的痛苦,所以希望有一种更简单的方法.


Ash*_*Ash 7

@ageektrapped位于正确的轨道上,但FindWindow不会搜索子窗口.

为此你需要使用 FindWindowEx