Einfaches Problem mit Variablen und Run Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Guest

Einfaches Problem mit Variablen und Run

19 Mar 2024, 13:01

Guten Tag Zusammen,

zuerst einmal eine kurze Beschreibung meines Skripts.

Skriptbeschreibung:

Mein Skript, das im Hintergrund läuft, soll unter WIN10 ausgewählte compilierte AutoHotkey-Programme, die aus dem Verzeichnis d:\AutoHotkey\Autostart\Test\ gestartet worden sind und immer mit dem Präfix "Programmname - " beginnen, überwachen.
Das Programm läuft in einer Dauerschleife. Beim 1. Durchlauf speichert es das 1. gestartete Programm, das dem Kritierium "Programmname - " entspricht, in der Variablen Programm_A. Das 2. gestartete Programm, das ebenfalls wieder dem Kriterium "Programmname - " entspricht, wird in der Variablen Programm_B gespeichert. Über die Variable Programm_V tausche ich lediglich die beiden gespeicherten Inhalte von Programm_A und Programm_B aus. Damit ist es mir möglich, immer das vorher (previous) gestartete Programm aufzurufen.

Soweit funktioniert das Skript auch sehr gut.

Problembeschreibung:

Leider passiert es nach zahlreichen fehlerfreien Durchläufen, dass, beim Drücken der Funktionstaste F12 nicht das vorletzte Programm startet, sondern sich der Explorer öffnet und das Verzeichnis d:\AutoHotkey\Autostart\Test\ anzeigt. Wenn ich mir über dann über F11 die Inhalte der Variablen Programm_A, Programm_B und Programm_V ansehe, sind diese leer.
Da in meinem Skript die Variablen nie gelöscht werden, sollten sie, nach meinem Verständnis nach mehrern Durchläufen immer einen Wert enthalten.

Nach ein bisschen rumprobieren habe ich herausgefunden, dass dieses Verhalten meist beim schnellen hintereinander Drücken der Funktionstaste F12 auftritt.


Fragen:

1. Gibt es eine Möglichkeit, das schnelle Drücken der Funktionstaste F12 zu verhindern, in dem man hier z.B. eine Verzögerung integriert ?
2. Lässt sich verhindern, dass die Variablen Programm_A und Programm_B, durch was auch immer, gelöscht werden ?


Vielen herzlichen Dank schon einmal im Voraus an jeden, der diesen Thread liest.
Würde mich sehr über ein paar Tipps freuen.

Liebe Grüße
Christian

Code: Select all

;----------------------------------------------
#SingleInstance Force
CoordMode, Mouse, Screen
SetTitleMatchMode, 1
;----------------------------------------------

			Loop
				{
				
				WinWait, Programmname -
				WinGetTitle, Programm_A
				Sleep 100
				Programm_V = %Programm_B%
				Sleep 100
				
				WinWait, Programmname - 
				WinGetTitle, Programm_B
				Sleep 100
				Programm_V  = %Programm_A%
				Sleep 100
								
				}


F12::  Run "d:\AutoHotkey\Autostart\Test\%Programm_V%"
       Return  					; funktioniert auch ohne Return
          
F11:: msgbox, Programm_A = %Programm_A% `nProgramm_B = %Programm_B% `nProgramm_V = %Programm_V%`nd:\AutoHotkey\Autostart\Test\%Programm_V%
KHA
Posts: 403
Joined: 21 Aug 2018, 11:11

Re: Einfaches Problem mit Variablen und Run

19 Mar 2024, 16:17

Hi,
1. Gibt es eine Möglichkeit, das schnelle Drücken der Funktionstaste F12 zu verhindern, in dem man hier z.B. eine Verzögerung integriert ?
Ja, zum Beispiel, eine Sekunde Verzögerung.

Code: Select all

F12::

   if (A_ThisHotkey = A_PriorHotkey) && (A_TimeSincePriorHotkey < 1000)
	Return

Run "d:\AutoHotkey\Autostart\Test\%Programm_V%"
Return 
2. Lässt sich verhindern, dass die Variablen Programm_A und Programm_B, durch was auch immer, gelöscht werden ?
Die Variablen werden nicht gelöscht, sondern überschrieben. Wenn der Befehl WinGetTitle ohne den dritten Parameter, den Fenstertitel, verwendet wird, wird je nach dem aktiven Fenster möglicherweise eine leere Variable zurückgegeben.
Guest

Re: Einfaches Problem mit Variablen und Run  Topic is solved

20 Mar 2024, 04:29

Hi KHA,

vielen Dank für Deine Rückantwort.

Code: Select all

F12::

   if (A_ThisHotkey = A_PriorHotkey) && (A_TimeSincePriorHotkey < 1000)
	Return

Run "d:\AutoHotkey\Autostart\Test\%Programm_V%"
Return
Funktioniert sehr gut - Danke für den Tipp. Hab ich schon eingebaut

2. Lässt sich verhindern, dass die Variablen Programm_A und Programm_B, durch was auch immer, gelöscht werden ?
Die Variablen werden nicht gelöscht, sondern überschrieben. Wenn der Befehl WinGetTitle ohne den dritten Parameter, den Fenstertitel, verwendet wird, wird je nach dem aktiven Fenster möglicherweise eine leere Variable zurückgegeben.
Habe WinGetTitle nun um den 3.Parameter ergänzt. Mal sehen, wie sich das auswirkt.

Nochmals vielen Dank für Deine Unterstüzung
Chris

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 76 guests