找回密码
 加入
搜索
查看: 142|回复: 2

怎么实现EXE开始和结束的事件检测

[复制链接]
发表于 2024-5-8 10:52:39 | 显示全部楼层 |阅读模式
本帖最后由 msold5 于 2024-5-9 08:22 编辑


问题:AU3真不能直接写EXE开始和结束的事件检测这个代码吗?

缘由:看到有贴子在请教EXE重复运行:https://www.autoitx.com/thread-54766-1-1.html
就在想提高效率是方法,是否应该注册事件,由EXE运行触发,检测是否有同名程序,如果有则kill掉
但是注册检测EXE运行事件又应该怎么写呢?因为自己编程底子薄,就找通义千问来写这个程序,被告知说“AutoIt 标准库本身不直接支持全局监听进程的创建或终止事件。上述代码中的 OnProcessStart 和 OnProcessExit 函数仅为示意逻辑,实际应用中需要借助外部工具(如 NirSoft 的 NirCmd 工具结合批处理和消息传递机制),或者编写自定义的DLL来实现这些事件的监听。”

我给AI发的消息:用AU3写个程序,实现只要没检测到[某个程序名.exe]就禁用本段内的其他对应EXE程序,当EXE开始运行时则解禁其对应程序,一旦EXE程序退出,关闭其对应程序并把其他对应程序进入禁用程序列表。
一、检查注册表,确保“HKCU64\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer”下的REG_DWORD格式的DisallowRun值为1
二、读取已运行的本程序同名,只是扩展名不同的ini文件所有内容,这个ini文件由无数[某一个程序名.exe]扩起来的可执行文件名和紧跟的其他可执行文件名构成
        1.检测当前有没有任何一个[某一个程序名.exe]内的程序正在运行
                如果有,则从注册表列表中删除本段内的对应EXE程序,注册表位置:HKCU64\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowRun
                如果没有,则从注册表列表中添加本段内的对应EXE程序,注册表位置:HKCU64\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowRun
2、注册事件,当任意EXE程序开始运行时被触发
        1.是否有ini文件中[]扩起来的文件名,如果没有,就退出等待下一次EXE程序运行触发,如果有则进入下一步
        2.从注册表列表中删除[某一个程序名.exe]对应的其他EXE程序名列表,注册表位置:HKCU64\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowRun
3、注册事件,当任意EXE程序结束时被触发
        1.是否有ini文件中[]扩起来的文件名,如果没有,就退出等待下一次EXE程序退出触发,如果有则进入下一步
        2.从注册表列表中添加[某一个程序名.exe]对应的其他EXE程序名列表,注册表位置:HKCU64\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowRun
        3.检测并关闭[某一个程序名.exe]中本段内的对应其他EXE程序
        
配置文件内容示范如下:
[某个程序名.exe]
其他EXE程序1.exe
别人EXE程序2.exe
紧跟的其他可执行文件.exe
[QQGame.exe]
QQGameService.exe
qqgameupdate.exe
[KwMusic.exe]
WriteMbox.exe
KwKnowSong.exe
KwWallpaper.exe
KwService.exe
KwMusicupdate.exe
发表于 2024-5-9 15:39:12 | 显示全部楼层
是不是可以判断程序进程存在与否?
 楼主| 发表于 2024-5-10 09:53:43 | 显示全部楼层
redapple2008 发表于 2024-5-9 15:39
是不是可以判断程序进程存在与否?

可以的....   原来的贴子里就是判断进程。但从效率角度来说,检查的间隔越小效果越好越及时,但这样对CPU占用也越高,如果用事件驱动模式就不会存在这个问题。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-20 07:26 , Processed in 0.070522 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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