AutoHotkey: Automatische Verzeichnis-spezifische Konfiguration / Aktionen: Unterschied zwischen den Versionen

Aus TCWikide
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(5 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:


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).
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 dei 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.
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.




Zeile 24: Zeile 24:
  Loop, Parse, Text, `n
  Loop, Parse, Text, `n
  {
  {
If A_Index = 3
      ; Der Verzeichnisname befindet sich nicht immer in der 3. Zeile, manchmal auch schon vorher.
{
                        ; er endet aber immer mit ">"... also suchen wir das
StringTrimRight, Dir, A_LoopField, 2
                        IfInString A_LoopField , >
Break
                        {
}
                              If A_Index <= 3
    {
  StringTrimRight, Dir, A_LoopField, 2
                                    Break
    }
                        }
  }
  }
   
   
Zeile 43: Zeile 48:
  {
  {
  ''; Der Wert "271" entspricht dem internen Befehl
  ''; Der Wert "271" entspricht dem internen Befehl
                                ''; activiere Benutzerdefinierte Ansicht #1''
''; aktiviere Benutzerdefinierte Ansicht #1''
  ''; (diese Werte entsprechen denen in der totalcmd.inc)''
  ''; (diese Werte entsprechen denen in der totalcmd.inc)''
  PostMessage, 1075, 271
  PostMessage, 1075, 271
Zeile 51: Zeile 56:
   
   
  ''; Dies ist der zweite Abschnitt''
  ''; Dies ist der zweite Abschnitt''
  ''; Wenn Befehle/Aktionen rekursivIf ausgeführt werden sollen,''
  ''; Wenn Befehle/Aktionen rekursiv ausgeführt werden sollen,''
  ''; zum Beispiel für "c:\Images und Fotos" und alle Unterverzeichnisse''
  ''; zum Beispiel für "c:\Images und Fotos" und alle Unterverzeichnisse''
  ''; benutze das ''IfInString''-Format''
  ''; benutze das ''IfInString''-Format''
  IfInString, Dir, c:\Images and Photos
  IfInString, Dir, c:\Images and Fotos
  {
  {
  ''; Der Wert "272" entspricht aktiviere Benutzerdef. Ansicht #2''
  ''; Der Wert "272" entspricht aktiviere Benutzerdef. Ansicht #2''
Zeile 65: Zeile 70:
  If Dir = c:\Downloads
  If Dir = c:\Downloads
  {
  {
  ''; Wert "272" = nach Datum sortieren''
  ''; Wert "324" = nach Datum sortieren''
  PostMessage, 1075, 324
  PostMessage, 1075, 324
  PreviousDir = %Dir%
  PreviousDir = %Dir%
Zeile 73: Zeile 78:
  ''; Dies ist der STANDARD Abschnitt''
  ''; Dies ist der STANDARD Abschnitt''
  ''; Hier müssen alle Befehle eingefügt werden, die nötig''
  ''; Hier müssen alle Befehle eingefügt werden, die nötig''
                        ''; sind, um zur normalen Ansicht zurückzukehren''
''; sind, um zur normalen Ansicht zurückzukehren''
  If PreviousDir <> DEFAULT
  If PreviousDir <> DEFAULT
  {
  {
Zeile 86: Zeile 91:
  return
  return


zum Debuggen kann man die Parse Loop mit einer Messagebox ausstatten und sehen wie sich die Variablen verhalten
<pre>
;If A_Index <= 3
{
StringTrimRight, Dir, A_LoopField, 2
                MsgBox, %A_Index% is %A_LoopField% -- %Dir%
;Break
}
</pre>
[http://www.ghisler.ch/wiki/index.php/AutoHotkey:_Automatic_directory-specific_configuration_/_actions Hotkey-triggered script]


{{Rückverweis|AutoHotkey|AutoHotkey}}
{{Rückverweis|AutoHotkey|AutoHotkey}}

Aktuelle Version vom 24. Oktober 2013, 06:35 Uhr

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