[已解决]判断程序重复运行出错
本帖最后由 3131210 于 2017-5-27 00:52 编辑使用下面代码判断程序是否重复运行,如果判断到程序重复运行的话,就显示之前隐藏的程序,我下面写的代码是可以判断到程序重复运行的,但是到显示隐藏的程序这一步就出问题了,完全找不出原因。求大神帮忙看看
重复运行的时候,会直接跳出一个白框,然后过一会就消失。
完整的附件$Exists = "LP快捷辅助" ;判断是否只运行一个程序
If WinExists($Exists) Then
WinSetState("", "", @SW_SHOWNORMAL)
Exit
EndIf
AutoItWinSetTitle($Exists) ;修改程序窗口的标题名
$MyForm = GUICreate($Exists, 385, 370)感谢9楼的办法解决了~ 那是因为根部就不要存在 这个本身就是白框, 回复 1# 3131210
能否改用 標題判斷 WinSetState($Exists, "", @SW_SHOW) 回复 4# kk_lee69
改成判断标题,失败。你可以下载附件跑一次试试 回复 5# 1361739590
试了 不出来 用了类+标题的方式,弹出来之后,会有BUG,点击标签页,不会切换。 1. 这两个地方用不一样的名字就可以实现了。
AutoItWinSetTitle($Exists_1)
GUICreate($Exists_2, 385, 370)
2.点击标签页,不会切换这个不知道原因,但是可以解。
你用的是GUISetState(@SW_HIDE, $MyForm),
想要显示,还要用GUISetState(@SW_SHOWNORMAL, $MyForm)
用 WinSetState 就不正常,原因不懂。
所以你 Case $GUI_EVENT_MINIMIZE这边可以用 WinSetState 来隐藏。 回复 1# 3131210
誰說不可以的 請看下面範例
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <StaticConstants.au3>
#include <HotKeyInput.au3>
#include <HotKey_21b.au3>
;Opt('SendCapslockMode', 0)
;Opt('TrayMenuMode', 3)
$Exists = "LP快捷幫助" ;判?是否只?行一?程序
If WinExists($Exists) Then
WinSetState($Exists, "", @SW_SHOW)
MsgBox(262144, '警告', '不要重复!')
Exit
EndIf
AutoItWinSetTitle($Exists) ;修改程序窗口的??名
$MyForm = GUICreate($Exists, 385, 370)
$Save = GUICtrlCreateButton('保存配置', 8, 330, 70, 30)
$Reset = GUICtrlCreateButton('重置配置', 108, 330, 70, 30)
GUISetState()
WinSetState($MyForm,"",@SW_HIDE )
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd 回复 1# 3131210
用这样试试看
#include <Misc.au3>
Global $Exists = 'LP快捷辅助 v2.2_NoUPX.exe'
If _Singleton($Exists, 1) = 0 Then
MsgBox(262144, '警告', '不要重复运行!')
WinActivate($Exists)
Exit
EndIf
回复 10# kk_lee69
若同时有多个窗口符合匹配条件, 则使用最近激活的窗口.
他最近激活的和你不一样。 回复 12# 1361739590
他就是為了防止某個程式重複運行......所以標題 是最單純的不會有相同的 回复 13# kk_lee69
AutoItWinSetTitle($Exists) 这个不是修改程序的窗口,而是au3自带的那个窗口吧。
所以说如果这两个窗口名一样,则使用最近激活的窗口。 AutoItWinSetTitle($Exists) 这个不是修改程序的窗口,而是au3自带的那个窗口吧。
页:
[1]
2