-
Notifications
You must be signed in to change notification settings - Fork 2
/
restart.au3
99 lines (75 loc) · 2.39 KB
/
restart.au3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include-once
#Region Header
#cs
Title: Restart script UDF Library for AutoIt3
Filename: Restart.au3
Description: Accurate restarting the script (AU3 or EXE)
Author: Yashied
Version: 1.0
Requirements: AutoIt v3.3 +, Developed/Tested on WindowsXP Pro Service Pack 2
Uses: None
Notes: The library uses onAutoItStart() function
Available functions:
_ScriptRestart
Example:
#NoTrayIcon
#Include <Misc.au3>
#Include <Restart.au3>
_Singleton('MyProgram')
If MsgBox(36, 'Restarting...', 'Press OK to restart this script.') = 6 Then
_ScriptRestart()
EndIf
#ce
#OnAutoItStartRegister "onAutoItStart"
#EndRegion Header
#Region Local Variables and Constants
Global $__Restart = False
#EndRegion Local Variables and Constants
#Region Public Functions
; #FUNCTION# ====================================================================================================================
; Name...........: _ScriptRestart
; Description....: Initiates a restart of the current script.
; Syntax.........: _ScriptRestart ( [$fExit] )
; $fExit - Specifies whether terminates the current script, valid values:
; |TRUE - Terminates script. (Default)
; |FALSE - Does not terminates script.
; Return values..: Success - 1 ($fExit = TRUE)
; Failure - 0 and sets the @error flag to non-zero.
; Author.........: Yashied
; Example........: Yes
; ===============================================================================================================================
Func _ScriptRestart($fExit = 1)
Local $Pid
If Not $__Restart Then
If @Compiled Then
$Pid = Run(@ScriptFullPath & ' ' & $CmdLineRaw, @ScriptDir, Default, 1)
Else
$Pid = Run(@AutoItExe & ' "' & @ScriptFullPath & '" ' & $CmdLineRaw, @ScriptDir, Default, 1)
EndIf
If @error Then
Return SetError(@error, 0, 0)
EndIf
StdinWrite($Pid, @AutoItPID)
; If @error Then
;
; EndIf
EndIf
$__Restart = 1
If $fExit Then
Sleep(50)
Exit
EndIf
Return 1
EndFunc ;==>_ScriptRestart
#EndRegion Public Functions
#Region onAutoItStart
Func onAutoItStart()
Sleep(50)
Local $Pid = ConsoleRead(1)
If @extended Then
While ProcessExists($Pid)
Sleep(1000)
WEnd
EndIf
EndFunc ;==>onAutoItStart
#EndRegion onAutoItStart