【发布时间】:2013-12-27 12:38:13
【问题描述】:
我希望能够检测一个进程是否有任何用户可见的窗口,我真的不介意误报(说一个进程在实际可见时是不可见的)但相反是一个问题(说一个过程是不可见的,而实际上它不是)。因此,CInt(Process.MainWindowHandle) = 0 和 Process.MainWindowTitle = "" 不能满足我的需求。
【问题讨论】:
-
请在这里找到一些有用的信息:stackoverflow.com/questions/2635404/…
-
这种方法和
CInt(Process.MainWindowHandle) = 0有同样的问题,谢谢 -
Process.MainWindowHandle = 0应该处理大多数情况。您也可以包含Process.StartInfo.CreateNoWindow以确保完全确定。您能否发布您的确切条件(和代码)以帮助我们更好地了解可能是什么问题?另一方面,请记住,在某些情况下,不同的窗口与同一个进程相关联;在这些情况下,它可能会变得有点棘手。 -
我想要的是某种获取进程对象的 .HasAnyVisibleWindows (psuedocode) 属性的方法。我没有任何确切的条件,因为我觉得由于您提到的特殊情况,这可能无法完美实现。因此,只有原始问题中的条件才真正适用。请记住,进程对象不是由我启动的,它是来自
Process.GetProcesses方法的一个进程。 -
如前所述 Process.MainWindowHandle = 0 应该处理大多数情况(无论您是否启动了该过程);并与 Process.StartInfo.CreateNoWindow (这是所有正在运行的进程中存在的布尔标志,不一定由您启动)一起处理大多数情况。至少在流程方面;如果您想为每个进程考虑多个窗口,则必须依赖基于 API 的方法(正如您在答案中所建议的那样;从未尝试过,但可能值得尝试)。 PS:如果你不写@my-nick,我可能不会收到你的回复。