Anführungszeichen (") haben nur innerhalb von Ausdrücken eine besondere Bedeutung. Überall sonst werden sie wie normale Buchstaben/Zeichen behandelt. Wenn allerdings ein Skript ein Programm oder Dokument startet/öffnet, erwartet das Betriebssystem Anführungszeichen vor und hinter jedem Kommandozeilen-Parameter, der Leerzeichen enthält, wie in diesem Beispiel:
Run, Notepad.exe "C:\Meine Dokumente\Adress-Liste.txt"
Variablen werden immer in Prozentzeichen eingeschlossen mit Ausnahme der untenstehenden fett ausgezeichneten Beispiele:
1) In Parametern, die Eingangs- oder Ergebnisvariablen sind: StringLen, OutputVar
, InputVar
2) Links von
Zuweisungen: Var
= 123abc
3)
Links von traditionellen
(non-expression) if-Statements: If
Var1
< %Var2%
4) Überall in Ausdrücken.
Beispiel:
If (Var1
<> Var2)
Var1
:= Var2
+ 100
Buchstäbliche Prozentzeichen müssen durch voranstellen eines Graves `
(Betonungszeichen)
escaped
werden. Beispiel: MsgBox Der
aktuelle Prozentsatz ist 25`%.
Buchstäbliche Kommas müssen ebenfalls escaped werden (`,), allerdings
nicht, wenn sie in MsgBox
oder als letzter Parameter eines Befehls verwendet werden (in diesem
Fall ist das Grave erlaubt, aber nicht notwendig).
Wenn Kommas oder Prozentzeichen innerhalb eines Ausdrucks in Anführungszeichen eingeschlossen sind, ist das Grave erlaubt, aber nicht notwendig. Beispiel: Var := "15%"
Jede Zeile, die Sie beim Skriptstart sofort ausgeführt haben wollen, sollte ganz oben im Skript stehen, vor dem ersten Hotkey, Hotstring oder Return. Einzelheiten im Abschnitt Auto-execute.
Auch muss ein Hotkey, der mehr als eine Zeile ausführt, seine erste Zeile unter dem Hotkey haben statt in derselben Zeile.
Beispiel:
#space:: Win+Leertaste
Run Notepad
WinWaitActive Unbenannt - Editor
WinMaximize
Return
Einige Programme müssen in ihren eigenen Ordnern gestartet werden (wenn Sie nicht sicher sind, ist dies das Beste). Beispiel:
Run, %A_ProgramFiles%\Anwendung\Anw.exe, %A_ProgramFiles%\Anwendung
Man kann es testen: Da Dateien in den Cache aufgenommen werden, kann eine temporäre Datei bei relativ kleinen Ausgaben sehr schnell sein. Wenn die Datei sofort nach Benutzung gelöscht wird, wird sie oft noch nicht mal auf die Festplatte geschrieben.
Beispiel:
RunWait %comspec% /c dir > C:\Temp.txt
FileRead, Inhalt, C:\Temp.txt
FileDelete, C:\Temp.txt
Um eine temporäre Datei zu vermeiden - insbesondere, wenn die Ausgabe groß ist - , könnten Sie CmdRet benutzen. Alternativ dazu gibt es das kleine Freeware-Utility cb.zip (4 KB), das bis zu 512 KB Output eines Befehls oder Programms erfassen kann. Der Text wird in die Zwischenablage geschrieben, auf die ein Skript per Clipboard-Variable zugreifen kann.
Beispiel:
RunWait %comspec% /c dir | cb.exe
MsgBox %clipboard%
Zuerst ein Beispiel, das ein fremdes Skript beendet:
DetectHiddenWindows On ; Damit können versteckte Hauptfenster eines Skripts erkannt werden.
SetTitleMatchMode 2 ; Hierdurch braucht man nicht den kompletten Pfad der untenstehenden Datei anzugeben.
WinClose Skriptname.ahk - AutoHotkey ; Tragen Sie hier den Dateinamen des Skripts ein (case sensitive).
Um ein anderes Skript zu unterbrechen oder anzuhalten, ersetzen Sie die letze Zeile (s. o.) mit einer der folgenden:
PostMessage, 0x111, 65305,,, Dateiname des Skripts - AutoHotkey ;Unterbrechen.
PostMessage, 0x111, 65306,,, Dateiname des Skripts - AutoHotkey ;Pause.
Um das ganze Skript per Tastendruck zu unterbrechen oder anzuhalten, weisen Sie dem Pause-Befehl einen Hotkey zu wie im folgenden Beispiel:
^!p::Pause Drücken Sie Strg+Alt+P zum Anhalten, und ein zweites Mal zum Weitermachen.
Um Aktionen anzuhalten, die sich innerhalb einer Loop wiederholen, schauen Sie sich das folgende funktionierende Beispiel an: einen Hotkey, der seine eigene sich wiederholende Aktion startet und beendet. Mit anderen Worten: Bei ersten Drücken startet die Loop, bei zweiten Mal hält sie wieder an.
#MaxThreadsPerHotkey 3
#z:: ; Win+Z hotkey (Passen Sie diesen Hotkey Ihren Wünschen an.)
#MaxThreadsPerHotkey 1
if KeepWinZRunning ; Dies heißt, dass ein darunterliegender Thread schon in der folgenden Loop läuft.
{
KeepWinZRunning := false ; Signalisiert, dass die Loop des Threads anhalten soll.
return ; Beendet diesen Thread; dadurch startet der darunterliegende Thread neu und "bemerkt" die Änderungen, die die vorige Zeile gemacht hat.
}
; Andernfalls:
KeepWinZRunning := true
Loop
{
; Die nächsten vier Zeilen seien die Aktionen, die Sie wiederholt haben wollen (passen Sie sie Ihren Wünschen an):
ToolTip, Drücken Sie Win-Z nochmal`, um das Blinken zu beenden.
Sleep 1000
ToolTip
Sleep 1000
; Aber verändern Sie nicht den Rest.
if not KeepWinZRunning ; Durch nochmaligen Drücken von Win-Z signalisiert der Benutzer der Loop zu stoppen.
break ; Schleife verlassen.
}
KeepWinZRunning := false ; Bereitet das nächste Drücken dieses Hotkeys vor.
return
Wenn die Hotkeys, Maus-Klicks oder Sends eines Skripts bei
stark belasteter CPU merklich langsamer sind als normal, kann die
Erhöhung der Prozess-Priorität helfen. Fügen Sie dazu die folgende
Zeile
am Anfang des Skripts ein:
Process,
Priority, , High
Mit diesem Skript von Rajat.
Die vielleicht sicherste Methode mit dem Internet Explorer ist die Benutzung von DllCall und COM, wie auf http://www.autohotkey.com/forum/topic19256.html gezeigt. In diesem Zusammenhang: Der Inhalt von Adressleiste und Statusleiste kann, wie auf http://www.autohotkey.com/forum/topic19255.html gezeigt, abgerufen werden.
Eine ältere, weniger sichere Methode: Die Technik des folgenden Beispiels funktioniert mit dem Internet Explorer für die meisten Web-Seiten. Eine ähnliche Technik könnte für andere Browser verwendet werden:
Run, www.yahoo.com
MouseMove, 0, 0 ; Vermeidet, daß die Statusleiste einen mouse-hover-Link statt "Fertig" anzeigt.
WinWait, Yahoo! - Microsoft Internet Explorer WinActivate StatusBarWait, Done, 30
if ErrorLevel
MsgBox Wartezeit abgelaufen oder das Fenster wurde geschlossen.
else
MsgBox Die Seite ist geladen.
Der EnvAdd-Befehl kann zu einem Zeit-String im YYYYMMDDHH24MISS-Format eine Anzahl von Tagen, Stunden, Minuten oder Sekunden addieren oder subtrahieren. Das folgende Beispiel subtrahiert 7 Tage von der angegebenen Zeit:
EnvAdd, ZeitVariable, -7, days
Unter EnvSub ist ein Beispiel, wie man die Zeitdifferenz zwischen Tagen oder Zeiten bestimmt. Zusätzlich enthält die eingebaute Variable A_Now die aktuelle Ortszeit. Schließlich gibt es einige eingebaute Datum/Zeit-Variablen, wie auch der FormatTime-Befehl, mit denen sich benutzerdefinierte Datum/Zeit-Strings erzeugen lassen.
Einige Spiele benutzen ausschließlich DirectInput. Ein Nebeneffekt kann sein, dass sie sämtliche simulierten Tastendrücke und Maus-Klicks ignorieren. Um dies zu umgehen, probieren Sie die folgenden Vorschläge aus:
Siehe Winamp automatisieren.
Hier ist ein Beispiel.
Im Start-Menü / Programme gibt es einen Ordner namens Autostart. Wenn Sie in diesem Ordner eine Verknüpfung zu Ihrem Skript erstellen, wird es bei jedem PC-Start ausgeführt. So erzeugt man eine Verknüpfung:
Beachten Sie, dass Maus-Hotkeys mit Windows 95/98/Me nicht möglich sind. Auf anderen Betriebssystemen sollten sich die linke und rechte Maustaste normal zuweisen lassen (Beispiel, "#LButton::" ist der Win+LinkeMaustaste - Hotkey). Die mittlere Maustaste und die Drehung des Maus-Rades sollten zuweisbar sein, mit Ausnahme von Mäusen, deren Treiber diese Tasten direkt überwachen.
Die vierte und fünfte Maustaste (XButton1 und XButton2) lassen sich zuweisen, wenn Ihr Maustreiber erlaubt, dass das System die Klicks sieht. Wenn sie nicht sichtbar sind -- oder ihre Maus mehr als fünf Tasten hat, die Sie benutzen wollen -- versuchen Sie, die zur Maus gehörende Software so einzustellen, dass beim Betätigen einer jeden Maustaste ein Tastendruck gesendet wird. Ein solcher Tastendruck kann in einem Skript als Hotkey definiert werden. Wenn z. B. die vierte Maustaste - nach einer entsprechenden Konfiguration - bei jedem Druck Strg+F1 sendet, können Sie diese Taste als Hotkey ^F1:: in einem Skript benutzen.
Wenn bei einer 5-Tasten-Maus die vierte und fünfte Taste nicht sichtbar sind, können Sie versuchen, als Ihren Maustreiber den im Betriebssystem voreingestellten zu verwenden. Dies setz voraus, dass für speziell Ihre Maus ein solcher Treiber existiert und Sie ohne die Features leben können, die Ihre Maus-Software bietet.
Benutzen Sie die Namen der Tasten (Tab und Space) statt ihrer Buchstaben. Beispiele: #Space steht für Win+Space und ^!Tab ist Strg+Alt+Tab.
Dies wird auf der Remapping-Seite beschrieben.
Die bevorzugte Methode ist #IfWinActive. Beispiel:
#IfWinActive, ahk_class Notepad
^a::MsgBox Sie haben bei aktiviertem Notepad Strg-A You gedrückt.
Windows 95/98/Me: Obwohl die oben beschriebene Methode funktioniert, zeigt Strg-A in einem Nicht-Notepad-Fenster keinerlei Wirkung, nicht mal seine ursprüngliche Funktion. Um dies zu umgehen, benutzen Sie:
$^a::Send ^a ; Dieser Hotkey muß unter Windows 9x ganz oben stehen. Das $-Präfix erlaubt dem Hotkey, sich selbst zu senden.
#IfWinActive, ahk_class Notepad
^a::MsgBox Sie haben bei aktiviertem Notepad Strg-A gedrückt.
Mit Einleitung-Taste (prefix-key) ist die Taste gemeint, die bei einem aus mehreren Tasten bestehenden Hotkey gedrückt wird. Siehe folgendes Beispiel, das Numpad0 in eine Präfix-Taste wandelt:
Numpad0 & Numpad1::MsgBox, Sie haben gerade NumPad1 gedrückt, bei schon betätigter Numpad0-Taste.
Damit Numpad0 so funktioniert, als wäre es nie ein Hotkey gewesen, fügen Sie den folgenden Hotkey hinzu:
$Numpad0::Send, {Numpad0}
Mit dem Präfix $ wird einer Warnung vor einer unendlichen Schleife vorgebeugt (weil der Hotkey "sich selbst sendet"). Zusätzlich startet die obige Aktion beim Loslassen der Taste.
Hier sind ein paar Beispiele.
Man kann, aber nur unter Windows NT, 2000, XP oder darüber. Dieses Beispiel-Skript wandelt die 000-Taste in ein Gleichheitszeichen um. Sie können sie nach Ihren Wünschen ändern, indem Sie die Send, =-Zeile mit Zeilen Ihrer Wahl auswechseln.