[已解决]:求助,au3如何编写只允许运行一个窗口
本帖最后由 QQ386263723 于 2014-1-8 13:13 编辑$hGui = GUICreate("自由人制作Windows 系统优化工具 ", 528, 363, 289, 207)
$Pic1 = GUICtrlCreatePic(@ScriptDir & "\ziyouren.jpg", 0, 0, 545, 65)
$Group1 = GUICtrlCreateGroup(" 优化网络工具", 8, 72, 145, 297)
$Button1 = GUICtrlCreateButton("Button1", 40, 120, 81, 33)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup(" 优化内存工具", 193, 71, 145, 297)
$Button2 = GUICtrlCreateButton("Button1", 226, 114, 81, 33)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup(" 运行磁盘工具", 378, 72, 145, 297)
$Button3 = GUICtrlCreateButton("Button1", 411, 116, 81, 33)
GUICtrlCreateGroup("", -99, -99, 1, 1)
DllCall('user32.dll', 'int', 'AnimateWindow', 'hwnd', $hGui, 'int', 1000, 'long', 0x40010)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
WEnd 怎么理解“只允许运行一个窗口” 不太明白,说的是不让程序重复运行吗? 是的,就是不让程序重复运行。 论坛有不少方法,早几天就有此提问帖
http://www.autoitx.com/forum.php?mod=viewthread&tid=43196 老师:这样编译完还是能运行,多个脚本,错在哪里。
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_outfile=C:\Users\Administrator\Desktop\00.exe
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <Misc.au3>
$hGui = GUICreate("自由人制作Windows 系统优化工具 ", 528, 363, -1, -1)
If _Singleton($hGui, 1) = 0 Then
MsgBox(4096, "出错了", "本程序已经运行了一个实例!")
Exit
EndIf
$Pic1 = GUICtrlCreatePic(@ScriptDir & "\ziyouren.jpg", 0, 0, 545, 65)
$Group1 = GUICtrlCreateGroup(" 优化网络工具", 8, 72, 145, 297)
$Button1 = GUICtrlCreateButton("网络加速器", 40, 120, 81, 33)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup(" 优化内存工具", 193, 71, 145, 297)
$Button2 = GUICtrlCreateButton("内存管理", 226, 114, 81, 33)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup(" 运行磁盘工具", 378, 72, 145, 297)
$Button3 = GUICtrlCreateButton("diskgenius", 411, 116, 81, 33)
GUICtrlCreateLabel(" 特别鸣谢:afanpoiuxiehuahere …… 等好友", 10, 350, 520, 360)
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlCreateGroup("", -99, -99, 1, 1)
DllCall('user32.dll', 'int', 'AnimateWindow', 'hwnd', $hGui, 'int', 1000, 'long', 0x40010)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button1
Run(@ScriptDir & "\UltraISO.exe")
Case $Button1
Run(@ScriptDir & "\UltraISO.exe")
Case $Button1
Run(@ScriptDir & "\UltraISO.exe")
EndSwitch
WEnd 回复 6# QQ386263723
$hGui 是句柄,每次运行都会不同。因此不能作为 _Singleton() 识别的方式。
你可以用标题名来作为识别,同一标题名的程序再次运行即会被 _Singleton() 识别而处理。#include <Misc.au3>
Global $sTitle = '自由人制作Windows 系统优化工具'
If _Singleton($sTitle, 1) = 0 Then
MsgBox(4096, "出错了", "本程序已经运行了一个实例!")
WinActivate($sTitle)
Exit
EndIf
$hGui = GUICreate($sTitle, 528, 363, -1, -1)
$Pic1 = GUICtrlCreatePic(@ScriptDir & "\ziyouren.jpg", 0, 0, 545, 65)
$Group1 = GUICtrlCreateGroup(" 优化网络工具", 8, 72, 145, 297)
$Button1 = GUICtrlCreateButton("网络加速器", 40, 120, 81, 33)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup(" 优化内存工具", 193, 71, 145, 297)
$Button2 = GUICtrlCreateButton("内存管理", 226, 114, 81, 33)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup(" 运行磁盘工具", 378, 72, 145, 297)
$Button3 = GUICtrlCreateButton("diskgenius", 411, 116, 81, 33)
GUICtrlCreateLabel(" 特别鸣谢:afanpoiuxiehuahere …… 等好友", 10, 350, 520, 360)
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlCreateGroup("", -99, -99, 1, 1)
DllCall('user32.dll', 'int', 'AnimateWindow', 'hwnd', $hGui, 'int', 1000, 'long', 0x40010)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button1
Run(@ScriptDir & "\UltraISO.exe")
Case $Button1
Run(@ScriptDir & "\UltraISO.exe")
Case $Button1
Run(@ScriptDir & "\UltraISO.exe")
EndSwitch
WEnd 太谢谢了,每次我遇到困难都您耐心的帮我回答。忠心感谢!
页:
[1]