安装任何应用程序期间。通常要求用户在开始安装之前关闭所有窗口。如果没有,安装将停在中间 并要求用户关闭所有打开的窗口。 我被要求在XXX应用程序中添加代码。当应用程序正在运行,并且如果用户打开任何其他窗口(例如:Explore,浏览器,单词等),则应用程序应该抛出一个窗口,说明您已打开窗口列表。 我请求你,请建议我如何在C#中启动。获取打开的窗口列表C#
6
A
回答
0
尝试SetWinEventHook通过P/Invoke的WinAPI函数。你可以勾选EVENT_OBJECT_CREATE
事件,但我不是100%确定的。我从来没有在C#中做过,只有在C/C++中。
1
您可以使用System.Diagnostics.Process
类来获取机器中正在运行的所有进程的信息。然后,您可以尝试查找预期的应用程序/进程是否正在运行。
您可以使用GetProcesses()
或GetProcessByName()
方法。请参阅this msdn link以供参考。我相信可以有更高效的方式来实现。 HTH
7
测试此:
var openWindowProcesses = System.Diagnostics.Process.GetProcesses()
.Where(p => p.MainWindowHandle != IntPtr.Zero && p.ProcessName != "explorer");
的openWindowProcesses
应该包含他们有一个活跃的主窗口中所有打开的应用程序。
我把p.ProcessName != "explorer"
放在where表达式中,因为explorer是桌面的主进程,它永远不应该关闭。
要观察执行过程,您可以使用ManagementEventWatcher
类。请参阅this。
1
建立一个foreach循环像这样枚举系统上的所有打开的应用程序(即有明显的主窗口)
foreach (var process in Process.GetProcesses().Where(p => p.MainWindowHandle != IntPtr.Zero)) {
//do something with the process here. To display it's name, use process.MainWindowTitle
}
+0
如果应用程序有多个可见窗口,该怎么办? – Neolisk 2015-12-29 17:06:51
相关问题
- 1. 打开QtiPlot窗口列表
- 2. 如何获取Qt中打开的窗口列表
- 3. 获取打开的弹出窗口列表
- 4. 获取打开的窗口列表在Python
- 5. 如何从xserver获取打开的窗口列表
- 6. 获取打开的窗口可可
- 7. 如何检测何时打开新窗口和/或获取打开的窗口列表?
- 8. 打开窗口并获取其URL?
- 9. C#获取所有打开的窗口标题
- 10. C# - 获取打开的窗口不工作,因为它应该
- 11. RadWindow:从C#打开窗口#
- 12. 获取CRM弹出窗口刷新打开窗口
- 13. 窗口打开
- 14. C++打开的窗口中的Hello World
- 15. 获取所有打开的表单,c#?
- 16. 如何获取由弹出窗口打开的窗口的标题?
- 17. 窗口打开之前窗口的SetParent
- 18. 打开新窗口
- 19. 打开新窗口
- 20. 打开新窗口
- 21. 打开PDF /窗口
- 22. 存储打开的窗口/表单
- 23. 如何获取所有已打开的子窗口的引用
- 24. 获取所有打开的窗口的标题
- 25. 获取关于打开的新窗口的信息
- 26. C#Microsoft.Office.Interop.Excel不会打开Excel窗口
- 27. WPF/C# - 窗口在打开时关闭
- 28. C++ gtk打开多个窗口
- 29. C#窗口顶部没有打开
- 30. C++防止打开输出窗口
为了解决需要通过定时器得到窗口列表中所描述的问题。隐藏的窗户是什么? – DReJ 2010-12-15 15:23:35
我想谁问这个问题知道关于使用计时器和......关于隐藏的窗口;在这种情况下,我认为这足以关闭具有未隐藏窗口的进程。尽管在这些情况下,流程比窗口更重要。程序员应该检查进程,找出哪一个不应该打开。通过更改Where方法中的表达式很容易实现。 但是,谢谢!我将在我的答案中添加关于观看过程的一些信息。 – 2010-12-15 15:35:51
非常感谢您的建议。一旦我执行,我会让你知道结果 – user517206 2010-12-16 05:57:58