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%