我似乎找不到确定Process
是否具有用户界面的方法,例如一个窗口,用户可以看到?
Environment.UserInteractive
对外部流程无用process.MainWindowHandle != IntPtr.Zero
似乎总是在我的测试中返回false?我想区分说Notepad和conhost
答案 0 :(得分:1)
Process
实例中找出进程ID。 EnumWindows
枚举顶级窗口。 GetWindowThreadProcessId
并查看它是否与目标PID匹配。IsWindowVisible
和/或IsIconic
,以测试该窗口是否对用户可见。答案 1 :(得分:1)
关于System.Diagnostics.Process.MainWindowHandle
的MSDN文章说明了以下内容
如果您刚刚启动了一个进程并希望使用其主窗口句柄,请考虑使用WaitForInputIdle方法来允许进程完成启动,确保已创建主窗口句柄。否则,将抛出异常。
他们暗示的是,Window
可能需要几秒钟的时间来呈现MainWindowHandle
之后的回复,即使您可以清楚地看到IntPtr.Zero
显示Window
。
请参阅https://msdn.microsoft.com/en-us/library/system.diagnostics.process.mainwindowhandle(v=vs.110).aspx以获取参考资料