Skript läuft endlos weiter...

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Best-Code-in-Use
Posts: 147
Joined: 01 Dec 2015, 05:13
Location: Germany

Skript läuft endlos weiter...

29 May 2020, 10:30

Hallo liebe AHK ler,

ich habe ein Skript das tut was es soll -- ABER -- das Skript beendet sich nicht, nachdem es den Process gekillt hat.
Wahrscheinlich ein simpler Denkfehler, aber ich komme gerade nicht drauf...
Vielleicht kann -- Jemand™ -- helfen...

Code: Select all

#NoEnv      ; Keine Umgebungsvariablen nutzen
#NoTrayIcon ; Das AHK Symbol wird nicht angezeigt
#SingleInstance force ; Das Skript wird bei Neustart ohne Nachfrage ersetzt
#Persistent ; Keeps a script permanently running - fuer den Timer notwendig

; ###########################################################
FakturaProcess := "javaw.exe"
; Läuft die Faktura noch?
; ###########################################################

    ; ORIGINALBEFEHL
	; TASKKILL /F /IM Schreibschutz-Faktura-aufheben---SERVER7.exe
	
; Run, Ziel [, Arbeitsverz, Optionen, AusgabeVarPID]

Run, "C:\Users\Mr-7\Scoutsystems\Faktura\Autohotkey-Schreibschutz-aufheben\Schreibschutz-Faktura-aufheben---SERVER7.exe"
	
Run, "C:\Program Files (x86)\Faktura\start.exe", C:\Program Files (x86)\Faktura, 

Sleep, 30000  ; 30 Sekunden
	
SetTimer, Faktura, 10000 ; erstelle einen Timer, und wiederhole ihn alle 10 Sekunden (in Millisekunden)
Return

Faktura: ; was soll der Timer genau machen:
Process, Exist, %FakturaProcess% ; prueft ob der Faktura Prozess noch laeuft
If !ErrorLevel ; wenn der Faktura Prozess nicht mehr gefunden wird - fuehre den naechsten Befehl aus
run,%comspec% /k taskkill /F /IM Schreibschutz-Faktura-aufheben---SERVER7.exe,, Hide ; Kille den Schreibschutz aufheben Befehl
Return
Greetings Best-Code-in-Use
BoBo
Posts: 3766
Joined: 13 May 2014, 17:15

Re: Skript läuft endlos weiter...

29 May 2020, 10:47

Du verlässt die SetTimer-Routine nicht, sondern kehrst immer wieder (via "Return") zum Timer zurück. Um aus dieser 'ge-time-ten' Schleife auszubrechen, einfach SetTimer, Faktura, Off (oder Delete) in der Ausstiegsbedingung platzieren - alternativ, Hammer auf Kopf-Methode :arrow: ExitApp

Code: Select all

#NoEnv      							; Keine Umgebungsvariablen nutzen
#NoTrayIcon 							; Das AHK Symbol wird nicht angezeigt
#SingleInstance force					; Das Skript wird bei Neustart ohne Nachfrage ersetzt
#Persistent								; Keeps a script permanently running - fuer den Timer notwendig

; ###########################################################
FakturaProcess := "javaw.exe"			; Läuft die Faktura noch?
; ###########################################################

; ORIGINALBEFEHL: TASKKILL /F /IM Schreibschutz-Faktura-aufheben---SERVER7.exe
	
;	Run, Ziel [, Arbeitsverz, Optionen, AusgabeVarPID]
	Run, "C:\Users\Mr-7\Scoutsystems\Faktura\Autohotkey-Schreibschutz-aufheben\Schreibschutz-Faktura-aufheben---SERVER7.exe"
	Run, "C:\Program Files (x86)\Faktura\start.exe", C:\Program Files (x86)\Faktura, 

Sleep, 30000  							; 30 Sekunden
SetTimer, Faktura, 10000				; erstelle einen Timer, und wiederhole ihn alle 10 Sekunden (in Millisekunden)
Return

Faktura:								; was soll der Timer genau machen:
	Process, Exist,% FakturaProcess		; prueft ob der Faktura Prozess noch laeuft
	If (!ErrorLevel) {					; wenn der Faktura Prozess nicht mehr gefunden wird - fuehre den naechsten Befehl aus
		Run,%comspec% /k taskkill /F /IM Schreibschutz-Faktura-aufheben---SERVER7.exe,, Hide ; Kille den Schreibschutz aufheben Befehl
		SetTimer, Faktura, Delete
	}
	Return
Best-Code-in-Use
Posts: 147
Joined: 01 Dec 2015, 05:13
Location: Germany

Leider nein...

29 May 2020, 11:53

@Bobo
Vielen Dank für Deine schnelle Hilfe.
Okay, also der Timer wird ja nach der Ausführung beendet, allerdings das komplette Skript nicht.
Gehört dann der ExitApp Befehl ans Ende hinter den Return Befehl, ich vermute mal ja, oder?
Sorry, stehe hier etwas auf dem Schlauch...
Greetings Best-Code-in-Use
BoBo
Posts: 3766
Joined: 13 May 2014, 17:15

Re: Skript läuft endlos weiter...

29 May 2020, 13:20

Nun, nur du weisst was im weiteren Verlauf geschehen soll, SetTimer, ..., Off schaltet natürlich lediglich den Timer ab, Delete löscht ihn (Stichwort: Speicherfreigabe). ExitApp beendet das Script gänzlich. Das wird für beide Befehle in der AHK-Hilfe auch ziemlich einfach beschrieben ;) Einfach mal gegeneinander austauschen und probieren?
Best-Code-in-Use
Posts: 147
Joined: 01 Dec 2015, 05:13
Location: Germany

Re: Skript läuft endlos weiter...

29 May 2020, 14:25

Hier geht es nur darum meine Faktura um Funktionen zu erweitern, die Sie nicht kann...

Okay vielen Dank werde es Morgen mal testen.
Eigentlich ist es ja auch egal, wenn das Skript im Speicher verbleibt.
Spätestens beim nächsten Start wird es gelöscht.

Mal schauen, nochmals vielen Dank für Deine Hilfe.
Greetings Best-Code-in-Use
just me
Posts: 7305
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Skript läuft endlos weiter...

30 May 2020, 03:10

Moin,

wie ich das sehe, soll Dein Skript eine Anwendung einmalig starten und dann nach Bendigung der Anwendung einmalig abschließende Aktionen ausführen. Das Skript ist #Persistent und kann deshalb nur mit ExitApp bendet werden. Du solltest das nach Ausführung der Aktion im Timer einfügen.

Alternative für Dein Beispiel:

Code: Select all

#NoEnv                  ; Keine Umgebungsvariablen nutzen
#NoTrayIcon             ; Das AHK Symbol wird nicht angezeigt
#SingleInstance force   ; Das Skript wird bei Neustart ohne Nachfrage ersetzt
; #Persistent             ; Keeps a script permanently running - fuer den Timer notwendig

FakturaProcess := "javaw.exe"

; Run, Ziel [, Arbeitsverz, Optionen, AusgabeVarPID]
Run, "C:\Users\Mr-7\Scoutsystems\Faktura\Autohotkey-Schreibschutz-aufheben\Schreibschutz-Faktura-aufheben---SERVER7.exe"
Run, "C:\Program Files (x86)\Faktura\start.exe", C:\Program Files (x86)\Faktura,
Sleep, 30000  ; 30 Sekunden
Loop {
   Process, Exist, %FakturaProcess% ; prueft ob der Faktura Prozess noch laeuft
   If !(ErrorLevel) ; wenn der Faktura Prozess nicht mehr gefunden wird - verlasse die Schleife
      Break
   Sleep, 10000 ; 10 Sekunden warten
}
Run, %comspec% /k taskkill /F /IM Schreibschutz-Faktura-aufheben---SERVER7.exe,, Hide ; Kille den Schreibschutz aufheben Befehl
Return
Best-Code-in-Use
Posts: 147
Joined: 01 Dec 2015, 05:13
Location: Germany

...läuft

30 May 2020, 09:04

@just me

Vielen Dank für Deine Hilfe...
Jetzt funktioniert es wie gewünscht.
Ich wünsche Dir noch ein schönes Wochenende.
Greetings Best-Code-in-Use

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: effel and 9 guests