找回密码
 加入
搜索
查看: 5279|回复: 15

如何让2个AU3互相监控,

 火.. [复制链接]
发表于 2010-1-9 22:11:46 | 显示全部楼层 |阅读模式
本帖最后由 lin0308 于 2010-1-10 00:36 编辑

比如2个au3 ,1和2,当1被任务管理器结束时,2发现后启动1,当2被结束时,1发现后启动2,间隔1到2秒。
不管结束几次都如上,直到程序的正常结束才全部退出



谢谢各位高手我去好好研究
发表于 2010-1-9 22:18:22 | 显示全部楼层
本帖最后由 jycel 于 2010-1-9 22:19 编辑

用AdlibRegister调用检测进程是否存在,不存在就启动!二个程序互相监视很简单啊!
发表于 2010-1-9 22:21:25 | 显示全部楼层
1:
While 1
        If Not ProcessExists("2.exe") Then Run("2.exe")
WEnd       

2:
While 1
        If Not ProcessExists("1.exe") Then Run("1.exe")
WEnd
发表于 2010-1-9 22:35:35 | 显示全部楼层
呵呵,很简单的进程保护~
发表于 2010-1-9 22:58:12 | 显示全部楼层
本帖最后由 afan 于 2010-1-10 00:18 编辑

“主程序.exe” 代码如下,编译成exe文件:
If Not ProcessExists('监视.exe') Then Run('监视.exe')
GUICreate("主程序窗口", 300, 500)
GUISetState()
Do
        If Not ProcessExists('监视.exe') Then Run('监视.exe')
        Sleep(10) 
Until GUIGetMsg() = -3
ProcessClose('监视.exe')
“监视.exe” 代码如下,同样编译成exe文件:
#NoTrayIcon
While 1
        If Not ProcessExists('主程序.exe') Then Run('主程序.exe')
        Sleep(100) 
WEnd
测试时启动主程序即可,监视.exe 不要管。
窗口正常关闭则两个都退出,强行终止任何一个都会启动另一个。
作为延伸,还可以将监视文件FileInstall进编译,然后随机命名调用参数运行,监视文件也需有指定的参数才运行,等等。
发表于 2010-1-9 23:10:24 | 显示全部楼层
本帖最后由 jycel 于 2010-1-9 23:11 编辑

个人觉得还是AdlibRegister调用检测好点,用while wend死循环
而且最好还加个判断好点,要不自己想关的时候都关不了!呵呵!
 楼主| 发表于 2010-1-9 23:31:20 | 显示全部楼层
回复 6# jycel


    可否提供个例子,谢谢,
发表于 2010-1-9 23:37:53 | 显示全部楼层
这里的死循环是代替工作代码的例子…… 够测试用的~ 你可以加在自己的代码中
特意做了界面就是保证可以正常关闭的……

LZ还需要更详细的例子?那得从开天辟地说起……
发表于 2010-1-9 23:40:52 | 显示全部楼层
本帖最后由 jycel 于 2010-1-9 23:46 编辑

回复 7# lin0308
主程序1中加入
说明:当前为主程序1每隔1000毫秒检测一次,发现程序2进程不存在就启动
AdlibRegister("jians1",1000);这里的1000自定义多久调用(也就是检测)一次
Func jians1()
If Not ProcessExists('程序2.exe') Then Run('程序2.exe')
EndFunc
主程序2中加入
说明:当前为主程序2每隔1000毫秒检测一次,发现程序1进程不存在就启动
AdlibRegister("jians2",1000)
Func jians2()
If Not ProcessExists('程序1.exe') Then Run('程序1.exe')
EndFunc
发表于 2010-1-9 23:53:53 | 显示全部楼层
回复
jycel 发表于 2010-1-9 23:40



    你在给楼主演示真正的死循环吧,哈哈~~ 但愿楼主能吃得消……
发表于 2010-1-10 00:09:26 | 显示全部楼层
回复 1# lin0308
5#这高手已经很说的很清楚了!你自己慢慢理解一下吧!
 楼主| 发表于 2010-1-10 10:54:32 | 显示全部楼层
回复 9# jycel


其实是否可以在1中设置只能用热键退出,在退出前像注册表写入一个值,2判断这个注册表是否存在,不存在启动1,存在退出,1每次启动都删除这个值,是否可以这样。
发表于 2010-1-10 11:37:30 | 显示全部楼层
本帖最后由 jycel 于 2010-1-10 11:39 编辑

回复 10# afan
呵呵!我没表达完!这只是调用检测自定义函数而已
在被监视的主程序如果说要真正退出!那么就应该牵涉到一个监测判断,可以在退出时向指定文件或者注册表写一个值,监测程序在启动被监视程序之前判断这个值,如果说是不再监视那么就不启动!
同时在主程序启动的时候,我个人觉得应该在主程序中写入这样一行
把自身启动目录写入注册表,监视程序通过这个注册表值来判断启动位置,如果说把被监视的程序放到其它地方呢?好多地方得自己去写,我们只是提供个思路!我也不觉得我那就是死循环!
发表于 2011-11-16 14:04:01 | 显示全部楼层
回复 3# 顽固不化
如果1.exe调出2.exe,只要在任务管理器中对1.exe进行End Process Tree就能把两个程序都关闭的。
发表于 2011-12-25 20:43:19 | 显示全部楼层
楼主没想做好事。。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 18:56 , Processed in 0.232116 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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