#NoTrayIcon
#include <Date.au3>
dim $es_path
dim $date_YY,$date_mm,$date_dd
call ("chong_fu") ;检测是不是重复运行程序
CALL("GET_PATH") ; 取得DECO的安装目录 如果没有,就退出
call("jin_che") ;检测是不是有启动W和田岛的软件
call("run_soft") ; 运行软件
call ("out_deco") ; 这个是退出的函数,接着会更正时间
Func GET_PATH () ; 取得DECO的安装目录
$es_path="\bin"
For $i_DECO= 1 to 100
$reg_deco = RegEnumKey("HKEY_CURRENT_USER\Software\Wilcom\Embroidery Studio", $i_DECO)
If @error <> 0 then ExitLoop
;MsgBox(4096, "SubKey #" & $i_DECO & " under HKLM\Software: ", $reg_deco)
$PATH_DECO=RegRead("HKEY_CURRENT_USER\Software\Wilcom\Embroidery Studio"&$reg_deco,"Location")
IF @error=0 Then
$es_path=$PATH_DECO&"\bin"
;MsgBox(0,$reg_deco&"-----"&$i_DECO,$PATH_DECO)
; MsgBox(0,"",$es_path)
EndIf
Next
if $es_path="\bin" Then
MsgBox(0+32,"错误","貌似没有安装DecoStudio"&@CRLF&@CRLF&"如有什么问题请联系 XXX",10)
Exit
EndIf
EndFunc ; ********************** 取得DECO的安装目录
Func run_soft () ; 运行软件
;$date_YY=@YEAR ;是年
;$date_mm=@MON ;是月
;$date_dd=@MDAY ;是天
IniWrite(@TempDir&"\date.ini","日期","年",@YEAR)
IniWrite(@TempDir&"\date.ini","日期","月",@MON)
IniWrite(@TempDir&"\date.ini","日期","日",@MDAY)
$date_YY=IniRead(@TempDir&"\date.ini","日期","年","")
$date_mm=IniRead(@TempDir&"\date.ini","日期","月","")
$date_dd=IniRead(@TempDir&"\date.ini","日期","日","")
run('cmD /c date 2009-2-1',"",@SW_HIDE) ; 这里是修改日期,也可以改成别的,
; 但最后一定要是1号 例如改成 'cmD /c date 2008-5-1'
; 年和月的数字随便改, 但日这个数字一定要是1 如果不是1。那修改的日期会不对
RUN('"'&$es_path&'DESLOADR.EXE" "'&$es_path&'DecoStudio.EXE" ES "21,25"',"") ;运行软件
ToolTip("正在启动DecoStudio,请稍等"&@CRLF _
&"现已把日期修改成2009-2-1,等DecoStudio结束后"&@crlf _
&"程序会自动更正日期 BY都市浪子",@DesktopWidth-250,@DesktopHeight-100,"","",1+4)
Sleep(14000)
ToolTip("","","")
EndFunc ;====================== ; 运行软件 ======================
Func out_deco () ; 退出的函数
Do
Sleep(3000)
$ProcessExi=1
if ProcessExists("DecoStudio.EXE")=False Then
; 这里是没有DecoStudio.EXE进程才到这里的
if ProcessExists("DESLOADR.EXE")=False Then
; 这里是没有DESLOADR.EXE 和 DecoStudio.EXE进程才到这里的
; 困为我所用的软件是有运行2个进程,所以要检测2个进程
;MsgBox(0,"","cmd /c date "&$date_YY&"-"&$date_mm&"-"&$date_dd)
if @MDAY=1 Then
run("cmd /c date "&$date_YY&"-"&$date_mm&"-"&$date_dd,"",@SW_HIDE)
FileDelete(@TempDir&"\date.ini")
Else
; 到这里的话,就是日期最少过了一天,要修正日期
IniWrite(@TempDir&"\date.ini","日期","天数",@MDAY-1)
call ("date_ren") ;更正日期的函数
EndIf
Exit
EndIf
EndIf
Until $ProcessExi=2
EndFunc ; 退出的函数
Func date_ren () ; 更正日期的函数
RunWait("cmd /c date "&$date_YY&"-"&$date_mm&"-"&$date_dd,"",@SW_HIDE)
$date_tin_su=IniRead(@TempDir&"\date.ini","日期","天数","")
$sNewDate = _DateAdd( 'd',$date_tin_su, _NowCalcDate()) ;这里是在已经有的天数上加几天
$date_YY=StringLeft ($sNewDate,4)
$date_mm=StringMid ($sNewDate,6,2)
$date_dd=StringMid ($sNewDate,9,2)
;MsgBox(0,"",$sNewDate&@CRLF &$date_YY&"**"&$date_mm&"**"&$date_dd)
run("cmd /c date "&$date_YY&"-"&$date_mm&"-"&$date_dd,"",@SW_HIDE)
FileDelete(@TempDir&"\date.ini")
EndFunc ;------------------------------ 更正日期的函数
Func jin_che ()
if ProcessExists("es.exe") Then
MsgBox(0+64," 错误","你已经启动了威尔克姆"&@CRLF&@CRLF&"不能再启动DecoStudio ",10)
Exit
EndIf
if ProcessExists("DGML.exe") Then
MsgBox(0+64," 错误","你已经启动了田岛"&@CRLF&@CRLF&"不能再启动DecoStudioo ",10)
Exit
EndIf
EndFunc
Func chong_fu () ;检测是不是重复运行程序
RunWait('cmd /c tasklist|find /i "'&@ScriptName&'" >c:\task.txt',"c:",@SW_HIDE)
$Line2=FileReadLine("c:\task.txt",2)
FileDelete("c:\task.txt")
if $Line2="" Then
; 到这里就是第一次运行
;MsgBox(0,"000","第一次运行")
Else
; 到这里就是第2次运行
MsgBox(0+64," SORRY","程序已经在运行了,请不要重复运行",9)
Exit
EndIf
EndFunc ; ; 检测是不是重复运行程序