au3能让某个程序无法自动关闭么?
如题,求解!!!求板砖 这个应该不可能吧,最多发现它关闭了再打开它… 理论上可以,进程正常退出,无非就是以下几种情况: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已被挂钩,代码流程又会跳转到钩子函数内部,钩子函数尝试将整个进程再运行一遍......进而引发无限循环。 回复 3# pusofalse
大神有木有现成的样品给测试测试。。。 回复 2# afan
关掉了重新开,不是很实用!只能算是没办法的办法 {:face (229):}
页:
[1]