我需要知道自用户打开程序以来打开了哪些程序 - 程序活动监视器..
我该怎么做?
答案 0 :(得分:6)
使用Process.GetProcesses
列出启动时的进程,继续调用并比较结果。
新流程应与已打开的程序相对应。
查看使用WMI的@Giorgi的答案,并为流程启动提供事件注册。看起来这是一个非常好的方法。
答案 1 :(得分:6)
您可以使用WMI在启动新流程时收到通知:Using WMI to monitor process creation, deletion and modification in .NET
答案 2 :(得分:4)
您可以在发布时致电Process.GetProcesses
,然后稍后再次致电,看看发生了什么变化。
如果您希望在程序启动时收到通知,则需要use WMI。
答案 3 :(得分:1)
嗨你实际上可以这样做:
一旦你的程序启动,你就会枚举所有当前进程(如果你想监视所有内容,包括windows服务或只有UI应用程序,在这种情况下取决于你,在这种情况下,Win32 API EnumWindows是你的朋友)。
然后每隔几秒钟或几分钟你就可以做同样的事情并比较现在打开但之前没有打开的东西,这就是你的清单。
简单快捷的解决方案,否则您可以实现更复杂的功能,如sys internals Process Explorer或列表流程。