吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1305|回复: 5
收起左侧

[求助] C#监听外部程序启动

[复制链接]
War-Horse 发表于 2020-6-2 18:00
我是一个C#小白,最近想做一个小工具,有一个功能是这样的:工具后台运行,监听外部应用程序启用情况(基本就固定那几个),当监听到目标应用程序启动时,执行相关业务逻辑。

主要是不知道该怎么监听外部应用程序的启动,网上找过相关资料,基本上都是同样的做法,那就是死循环获取Process数组,然后遍历Process挨个对比ProcessName。我尝试过这种操作,发现资源消耗太高,我想让这个工具尽可能的没有存在感。这个方案还有一个问题,那就是目标程序启动之后直到程序关闭都一直在触发判断下面这段代码:
[C#] 纯文本查看 复制代码
 if ("notepad" == process.ProcessName.ToLower()) {
    Console.WriteLine("notepad启动了");
}


所有想到了用hook的方式来监听,但自己对hook一无所知,想听听各位前辈的思路,感谢!

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

苏紫方璇 发表于 2020-6-2 18:47
用hook感觉也不太好实现
tb612443 发表于 2020-6-2 18:51
钩子的消息类型里有双击,然后监听下双击时的消息类型,看看有没有打开可执行文件的类型,如有你找到了应该就没问题,不然就只有动态的监听
JusonR 发表于 2020-6-2 19:16
要么继续你这种方法,循环后面加上sleep可以大幅度降低资源消耗
dayer 发表于 2020-6-2 19:41
就是这个方法 但是你不能不加延时啊。最起码sleep(100).要不你机器再牛也不行
boxer 发表于 2020-6-2 23:11
定时轮询会有这个问题,间隔太短,资源占用就太多,间隔太长就会不及时,可以使用
WINAPI RegisterShellHookWindow 来监视窗口创建,或者用WMI WbemScripting.SWbemSink 注册相应事件
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 15:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表