For $i=1 To $aProcess
if $aProcess[$i] <> @AutoItPIDthen ;It's not my own!!
MsgBox(0,'请勿重复运行','程序已经运行中,请勿重复启动')
Exit
EndIf
Next 回复3131210
誰說不可以的 請看下面範例
kk_lee69 发表于 2017-5-26 13:49 http://www.autoitx.com/images/common/back.gif
运行LP快捷辅助 v2.2_NoUPX.exe后,
再次点击LP快捷辅助 v2.2_NoUPX.exe,显示MsgBox(262144, '警告', '不要重复!')
关闭MsgBox(262144, '警告', '不要重复!')。
第三次点击LP快捷辅助 v2.2_NoUPX.exe,出错了!
原打开的LP快捷辅助 v2.2_NoUPX.exe的窗口己经变了 本帖最后由 1361739590 于 2017-5-26 15:09 编辑
根据我发的第9楼 生成的。
回复 14# 1361739590
這是它原本的
我不知道為何要這樣寫沒意義但是我沒動他因為照理說上面先判斷 如果存在就退出了
所以這行不會跑第二次沒差 回复 19# kk_lee69
没太懂你的意思。
WinSetState($Exists, "", @SW_SHOW) 这个是没问题的。
问题是 有两个窗口都叫$Exists ,这个怎么显示呢,不会都显示,只显示最近激活的窗口。
所有他说有白框。 回复 20# 1361739590
不會 你跑過我的範例了嗎原本的 $Exists 這個內容必須要建立 FROM 才會存在
因此第一次 跑以後會有$Exists 這個的內容的窗口存在
第二次跑的時候 因為一開始就先判斷 此時 尚未建立 FROM 因此不會有第二個 $Exists
所以 第二次 會將第一次的 秀出來後自己就退出了
反而是原本的寫法是 抓 CLASS他之所以 會無法秀出隱藏的就是因為他抓到了第二次的程式
AU3 執行的時候沒有建立 FROM 的時候會有個 透明的框CLASS名稱是AUTO IT V3 GUI 回复 21# kk_lee69
他主要有AutoItWinSetTitle($Exists)这个。 若是自己的代码,可以有很多种方法实现吧.Local $runState = @ScriptDir & 'tmp.dat'
FileWrite($runState, '')
Sleep(2000)
If Not FileExists($runState) Then Exit MsgBox(0, '', '实例已运行.')
FileDelete($runState)
GUICreate('')
Do
If FileExists($runState) Then
GUISetState()
FileDelete($runState)
EndIf
Until GUIGetMsg()= -3 用9楼的办法,把隐藏的代码改成WinSetState就解决了,感谢盖楼的各位的讨论,都很有用。
页:
1
[2]