找回密码
 加入
搜索
查看: 17102|回复: 4

[AU3基础] au3能让某个程序无法自动关闭么?

[复制链接]
发表于 2013-8-24 21:59:32 | 显示全部楼层 |阅读模式
如题,求解!!!求板砖
发表于 2013-8-25 14:46:52 | 显示全部楼层
这个应该不可能吧,最多发现它关闭了再打开它…
发表于 2013-8-25 22:38:42 | 显示全部楼层
理论上可以,进程正常退出,无非就是以下几种情况:
1、调用ExitProcess API函数显式退出。
2、各语言大多有exit语句,使用exit也可以显式退出进程,而exit本质上是对ExitProcess函数的封装。
3、调用ExitThread API函数退出当前线程,如果当前线程是进程中的最后一个线程,那么ExitThread又会调用ExitProcess,以退出整个进程。
4、在C语言代码中,main函数执行到return语句时,main函数返回,代码流程会转入kernel32.dll内部,kernel32.dll会调用ExitThread退出当前线程,如果当前线程是进程中的唯一线程,那么ExitThread又会调用ExitProcess退出整个进程。这第4点在本质上同第3点。

进程正常退出时,必须要经过ExitProcess这一关,只要挂钩这个函数,就可以确保进程不能退出。在钩子函数的内部,甚至可以在不退出进程的情况下,将整个进程从头至尾再运行一遍。
以上只是理论上的猜想,在实践中,我挂钩ExitProcess函数,在钩子函数内部尝试将整个进程再运行一遍,结果成功率不到一半。这理论绝对可行,而失败原因是由于进程中有_Singleton这一类的代码。进程在运行之初,会检查是否有另一个实例在运行,若有,则立刻调用ExitProcess退出进程,而此时ExitProcess已被挂钩,代码流程又会跳转到钩子函数内部,钩子函数尝试将整个进程再运行一遍......进而引发无限循环。
 楼主| 发表于 2013-8-29 02:29:14 | 显示全部楼层
回复 3# pusofalse


    大神有木有现成的样品给测试测试。。。
 楼主| 发表于 2013-8-29 02:30:03 | 显示全部楼层
回复 2# afan


    关掉了重新开,不是很实用!只能算是没办法的办法
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-24 22:14 , Processed in 0.117465 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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