小编典典

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

c#

一种特殊情况的问题:

  • 我开始一个过程 System.Diagnostics.Process.Start(..)
  • 该过程将打开一个初始屏幕-该初始屏幕成为主窗口。
  • 初始屏幕关闭,并显示“真实” UI。现在,主窗口(启动屏幕)无效。
  • 我仍然具有Process对象,并且可以查询其句柄,模块等。但是主窗口句柄现在无效。

此时,我需要获取流程的UI(或UI句柄)。假设我无法更改流程的行为以使其变得更容易(或更明智)。

我在网上环顾四周,但我承认我待了一个多小时。似乎应该有点琐碎:-(


阅读 514

收藏
2020-05-19

共1个答案

小编典典

如果您不介意使用Windows API,则可以使用EnumWindowsProc,然后检查使用的每个句柄GetWindowThreadProcessId(以查看它是否在您的过程中),然后再检查IsWindowVisibleGetWindowCaptionGetWindowTextLength确定hWnd过程中哪个是那个你要。

尽管如果您在使用该方法之前没有使用过这些功能会感到很痛苦,那么希望有一种更简单的方法。

2020-05-19