任务管理器中出现新进程对应的事件是什么?

mlxwl2013 2014-03-03 12:32:59
加精
如题,比如我运行计算器程序,这时任务管理器中会多出一个进程。那么我怎样监听系统中创建了新进程,对应哪个事件?

不要用定时器Timer,这个我知道可以,但轮询的效率不高。
...全文
1286 48 打赏 收藏 转发到动态 举报
写回复
用AI写文章
48 条回复
切换为时间正序
请发表友善的回复…
发表回复
titer1 2014-03-20
  • 打赏
  • 举报
回复
好贴,学习下 wmi or wqlevent
fdsdfdsf 2014-03-17
  • 打赏
  • 举报
回复
应用层除了轮询搞不定吧,驱动里面注册一个事件回调
云海飘踪 2014-03-16
  • 打赏
  • 举报
回复
我觉得挺好的。。绝对力挺楼主
axuegang 2014-03-12
  • 打赏
  • 举报
回复
百度《安全稳定的进线程监控》
君子之风-- 2014-03-11
  • 打赏
  • 举报
回复
学习学习。
颤菊大师 2014-03-11
  • 打赏
  • 举报
回复
学习啊。好货啊
Ly__ 2014-03-10
  • 打赏
  • 举报
回复
4楼惊险高手
  • 打赏
  • 举报
回复
引用 40 楼 yuekunge 的回复:
[quote=引用 33 楼 sj178220709 的回复:] 轮询是很好的方案啊。 进程数量超不过1000 几乎不会有效率问题。
大牛,4楼提供的方法,在性能方面怎么样? [/quote] 无任何压力。
1593572486 2014-03-10
  • 打赏
  • 举报
回复
路过 我就光看看
java_菜菜 2014-03-10
  • 打赏
  • 举报
回复
我看一下头像
taochao101 2014-03-10
  • 打赏
  • 举报
回复
围观,学习!
lvshuchenyin 2014-03-10
  • 打赏
  • 举报
回复
路过看看。。
henrydee1 2014-03-10
  • 打赏
  • 举报
回复
VC好整,这个C#也能,厉害!
joyhen 2014-03-10
  • 打赏
  • 举报
回复
好东西,值得收藏
敌敌畏耶 2014-03-10
  • 打赏
  • 举报
回复
引用 33 楼 sj178220709 的回复:
轮询是很好的方案啊。 进程数量超不过1000 几乎不会有效率问题。
大牛,4楼提供的方法,在性能方面怎么样?
Bonjour-你好 2014-03-10
  • 打赏
  • 举报
回复
引用 37 楼 yuekunge 的回复:
是否正常关闭不需要了,我只需要知道他是否是被关掉了·· 再问下,用这个方法的话,性能怎么样?
因为我看你有个帖是问“非正常事件的捕获”,所以我就提醒一下。 性能方面,我也不怎么懂,要不你问问33楼的,也许他懂。
敌敌畏耶 2014-03-10
  • 打赏
  • 举报
回复
引用 35 楼 KumaPower 的回复:
[quote=引用 34 楼 yuekunge 的回复:] [quote=引用 4 楼 KumaPower 的回复:]
大牛,顺便把问句,怎么监视死掉了的进程····就是 某个进程被关闭额···[/quote]
ManagementScope scope = new System.Management.ManagementScope(@"\\.\root\CIMV2");
WqlEventQuery query2 = new WqlEventQuery(
                "__InstanceDeletionEvent",
                new TimeSpan(0, 0, 1),
            "TargetInstance ISA \"Win32_Process\"");
            ManagementEventWatcher watcher2 = new ManagementEventWatcher(scope, query2);
            watcher2.EventArrived += (s2, e2) => {
                Console.WriteLine("Process {0} has been deleted.",
                    ((ManagementBaseObject)e2.NewEvent.Properties["TargetInstance"].Value).Properties["Name"].Value.ToString());
            };
            watcher2.Start();
这个只能“监视”,不知能不能判断它是否“正常”关闭。[/quote] 是否正常关闭不需要了,我只需要知道他是否是被关掉了·· 再问下,用这个方法的话,性能怎么样?
游北亮 2014-03-10
  • 打赏
  • 举报
回复
不错不错,学习一下
Bonjour-你好 2014-03-10
  • 打赏
  • 举报
回复
引用 34 楼 yuekunge 的回复:
[quote=引用 4 楼 KumaPower 的回复:]
大牛,顺便把问句,怎么监视死掉了的进程····就是 某个进程被关闭额···[/quote]
ManagementScope scope = new System.Management.ManagementScope(@"\\.\root\CIMV2");
WqlEventQuery query2 = new WqlEventQuery(
                "__InstanceDeletionEvent",
                new TimeSpan(0, 0, 1),
            "TargetInstance ISA \"Win32_Process\"");
            ManagementEventWatcher watcher2 = new ManagementEventWatcher(scope, query2);
            watcher2.EventArrived += (s2, e2) => {
                Console.WriteLine("Process {0} has been deleted.",
                    ((ManagementBaseObject)e2.NewEvent.Properties["TargetInstance"].Value).Properties["Name"].Value.ToString());
            };
            watcher2.Start();
这个只能“监视”,不知能不能判断它是否“正常”关闭。
敌敌畏耶 2014-03-10
  • 打赏
  • 举报
回复
引用 4 楼 KumaPower 的回复:
        static void Main(string[] args)
        {
            ManagementScope scope = new System.Management.ManagementScope(@"\\.\root\CIMV2");
            WqlEventQuery query = new WqlEventQuery(
                "__InstanceCreationEvent",
            new TimeSpan(0, 0, 1),
            "TargetInstance isa \"Win32_Process\"");
            ManagementEventWatcher watcher = new ManagementEventWatcher(scope, query);
            watcher.EventArrived += (s, e) => {
                Console.WriteLine("Process {0} has been created.",
                    ((ManagementBaseObject)e.NewEvent.Properties["TargetInstance"].Value).Properties["Name"].Value.ToString());
            };
            watcher.Start();

            Console.ReadKey();
        }
大牛,顺便把问句,怎么监视死掉了的进程····就是 某个进程被关闭额···
加载更多回复(21)

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧