找回密码
 加入
搜索
查看: 4595|回复: 9

[AU3基础] 如何防止本程序重复运行?-[已解决]

  [复制链接]
发表于 2010-11-12 12:36:02 | 显示全部楼层 |阅读模式
本帖最后由 cfxqm 于 2010-11-12 13:33 编辑

防止程序重复运行,用2个程序可以实现,A.EXE代码里增加如下代码:
$PID=run("B.EXE");
$aProcess=ProcessList("B.EXE");
For $i=1 To $aProcess[0][0]
    if $aProcess[$i][1] <> $PID  then ;It's not my own!!
    ProcessClose($aProcess[$i][1]);
next
这样就可以防止B程序重复运行。
但是我想在A.EXE里防止A.EXE重复运行,如果做到呢?
怎样在程序启动后获得自身的PID而不是已经运行的同名程序的PID?

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-11-12 13:05:22 | 显示全部楼层
;获得自身的PID
@AutoItPID

;防重复运行
Func _MyProExists()
$my_Version = "Au3DriversBack By lrcf"
If WinExists($my_Version) Then Exit
AutoItWinSetTitle($my_Version)
EndFunc

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2010-11-12 13:06:30 | 显示全部楼层
另外还有函数_Singleton可以实现此效果,是个UDF,帮助文档里有
发表于 2010-11-12 13:18:52 | 显示全部楼层
 楼主| 发表于 2010-11-12 13:32:24 | 显示全部楼层
谢谢!我看的是一个中文帮助,里面居然没这些东西,看程序自带的英文帮助才有。看来以后还得啃英文帮助了。
发表于 2010-11-12 15:24:45 | 显示全部楼层
#include <Misc.au3>
If _Singleton("MyScriptName", 1) Then
    ; We know the script is already running. Let the user know.
    MsgBox(0, "Script Name", "This script is already running. Using multiple copies of this script at the same breaks the [(UltimaCoder)] License!")
    Exit
Endif
发表于 2010-11-12 15:25:28 | 显示全部楼层
#include <Misc.au3>
_Singleton("TheNameOfMyScript")
发表于 2010-11-12 16:52:00 | 显示全部楼层
用ProcessList、WinExists果真能够防止重复运行吗,如果改了文件名和窗口名,或者在第三方进程中就有符合匹配条件的怎么办?
用创建内核对象的方式,的确可以防止重复运行,但若不设置其安全权限的话,一遇到DuplicateHandle(跨进程复制、关闭句柄)就失效了。
发表于 2010-11-22 11:42:06 | 显示全部楼层
Local $_ProcessList = ProcessList(@ScriptName)
If $_ProcessList[0][0]>1 Then Exit ;~         ;不重复运行———本程序
发表于 2010-11-22 11:44:45 | 显示全部楼层
原来用这个,真搞笑的
_Run_once()
Func _Run_once()
        ;不重复运行———本程序
        Local $my = @ScriptName, $sc = 0,$Processlist=ProcessList(),$i=1
        For $i=1 To $Processlist[0][0]
          ;MsgBox(0,"::",$Processlist[$i][0])
          If $Processlist[$i][0] =  $my Then  $sc += 1
          If $sc > 1 Then Exit
        Next
EndFunc
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-3 00:21 , Processed in 0.114460 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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