die idee mit der schalter variable war garnicht so dumm.
du definierst dir einfach einen schalter und fragst dann in einer endlosschleife immer wieder ab, ob der schalter an oder aus ist.
über die hotkeys betätigst du nur den schalter:
Code:
HotKeySet("{F6}", "ExitProg")
HotKeySet("{F7}", "Start")
HotKeySet("{F8}", "Stop")
Dim $schalter = 'aus'
While True
If $schalter = 'an' Then
Send ("{F5}")
Sleep (100)
Send ("{F4}")
Sleep (100)
Send ("{Enter}")
EndIf
WEnd
Func ExitProg()
Exit
EndFunc
Func Start()
$schalter = 'an'
EndFunc
Func Stop()
$schalter = 'aus'
EndFunc
da der schalter nur 2 mögliche zustände hat (an oder aus), können wir auch direkt boolsche werte hierfür verwenden da diese auch nur 2 mögliche werte haben (true oder false). setzen wir also im quellcode an = true und aus = false erhalten wir:
Code:
HotKeySet("{F6}", "ExitProg")
HotKeySet("{F7}", "Start")
HotKeySet("{F8}", "Stop")
Dim $schalter = False
While True
If $schalter Then
Send ("{F5}")
Sleep (100)
Send ("{F4}")
Sleep (100)
Send ("{Enter}")
EndIf
WEnd
Func ExitProg()
Exit
EndFunc
Func Start()
$schalter = True
EndFunc
Func Stop()
$schalter = False
EndFunc
um das ganze noch weiter zu vereinfachen können wir nun, da wir auf boolschen ausdrücken arbeiten, auch logische operationen nutzen.
besonders geeignet hierfür ist die Not funktion, welche aus jedem beliebigen zustand, den jeweils anderen macht. (Not True) = False, (Not False) = True.
dementsprechend können wir unseren script code nun so abändern:
Code:
HotKeySet("{F6}", "ExitProg")
HotKeySet("{F7}", "Start")
HotKeySet("{F8}", "Stop")
Dim $schalter = False
While True
If $schalter Then
Send ("{F5}")
Sleep (100)
Send ("{F4}")
Sleep (100)
Send ("{Enter}")
EndIf
WEnd
Func ExitProg()
Exit
EndFunc
Func Start()
$schalter = Not $schalter
EndFunc
Func Stop()
$schalter = Not $schalter
EndFunc
da nun Start und Stop exakt die gleichen funktionen sind, können wir eine von beiden eliminieren:
Code:
HotKeySet("{F6}", "ExitProg")
HotKeySet("{F7}", "Pause")
Dim $schalter = False
While True
If $schalter Then
Send ("{F5}")
Sleep (100)
Send ("{F4}")
Sleep (100)
Send ("{Enter}")
EndIf
WEnd
Func ExitProg()
Exit
EndFunc
Func Pause()
$schalter = Not $schalter
EndFunc
und erhalten ein relativ effizientes endresultat.