AutoHotkey: Automatische Verzeichnis-spezifische Konfiguration / Aktionen

Aus TCWikide
Zur Navigation springen Zur Suche springen

Dieses Script veranlasst Autohotkey in bestimmten Abständen zu prüfen, welches das aktuelle Verzeichnis im Total Commander ist und auf Grund dieser Information benutzerspezifische Befehle auszuführen. Diese Befehle können wie auch immer geartet sein, beginnend beim Sortieren nach Datum über Einschalten einer benutzerdefinierten Ansicht bis hin zum Start eines Mediaplayers.

Der erste Teil des Scripts definiert die Häufigkeit, mit der Autohotkey den Pfad des aktiven Fensters vom Total Commander überprüft. Standardeinstellung sind 1000 Millisekunden (1 Sekunde). Geringere Werte erhöhen die Reaktionsgeschwindigkeit, aber sie können auch den Total Commander erheblich bremsen, wenn man gerade durch ein Verzeichnis navigiert. Größere Werte führen dazu, das es länger dauert, bis der Befehl ausgeführt wird.


Setze folgendes an den Anfang des Scripts:

#Persistent
SetTimer, TCDirSpecificActions, 1000
return


Der zweite Teil des Scripts legt fest, welche Aktion zu welchen Verzeichnissen gehört und am Ende wird der "Standardbefehl" festgelegt, also was passieren soll, wenn man sich in keinem der "besonderen" Vereichnisse befindet.


Bringe dies irgendwo im Script unter:

TCDirSpecificActions:
	IfWinActive, ahk_class TTOTAL_CMD
	{
		WinGetText, Text, A
		Loop, Parse, Text, `n
		{
		       ; Der Verzeichnisname befindet sich nicht immer in der 3. Zeile, manchmal auch schon vorher.
                       ; er endet aber immer mit ">"... also suchen wir das
                       IfInString A_LoopField , >
                       {
                             If  A_Index <= 3
			     {
				   StringTrimRight, Dir, A_LoopField, 2
                                   Break
			     }
                       }
		}


		If Dir <> %PreviousDir%
		{

 			; Dies ist der erste Abschnitt
			; In der Zeile unter dem Kommentar wird festgelegt,
                        ; welches Verzeichnis die Aktion dieses Abschnitts auslöst.
                        ; (Verzeichnisnamen mit Leerzeichen müssen ohne
                        ; Anführungszeichen angegeben werden)
			If Dir = c:\Music
			{
				; Der Wert "271" entspricht dem internen Befehl
				; aktiviere Benutzerdefinierte Ansicht #1
				; (diese Werte entsprechen denen in der totalcmd.inc)
				PostMessage, 1075, 271
				PreviousDir = %Dir%
				return
			}

			; Dies ist der zweite Abschnitt
			; Wenn Befehle/Aktionen rekursiv ausgeführt werden sollen,
			; zum Beispiel für "c:\Images und Fotos" und alle Unterverzeichnisse
			; benutze das IfInString-Format
			IfInString, Dir, c:\Images and Fotos
			{
				; Der Wert "272" entspricht aktiviere Benutzerdef. Ansicht #2
				PostMessage, 1075, 272
				PreviousDir = %Dir%
				return
			}

			; Dies ist der dritte Abschnitt
			If Dir = c:\Downloads
			{
				; Wert "324" = nach Datum sortieren
				PostMessage, 1075, 324
				PreviousDir = %Dir%
				return
			}

			; Dies ist der STANDARD Abschnitt
			; Hier müssen alle Befehle eingefügt werden, die nötig
			; sind, um zur normalen Ansicht zurückzukehren
			If PreviousDir <> DEFAULT
			{
				; Aktiviere die Kurzansicht
				PostMessage, 1075, 301
				; Sortiere nach Name
				PostMessage, 1075, 321
				PreviousDir = DEFAULT
			}
		}
 	}
return


zum Debuggen kann man die Parse Loop mit einer Messagebox ausstatten und sehen wie sich die Variablen verhalten

		
			;If A_Index <= 3
			{
				StringTrimRight, Dir, A_LoopField, 2
		                MsgBox, %A_Index% is %A_LoopField% -- %Dir%
				;Break
			}



Hotkey-triggered script




->Zurück zu AutoHotkey