#ErrorStdOut

Sendet alle Syntaxfehler, die den Start eines Skripts verhindern, zur Standardfehlerausgabe (stderr), anstatt ein Dialogfenster anzuzeigen.

#ErrorStdOut Kodierung

Parameter

Kodierung [v1.1.33+]
Wenn weggelassen, wird standardmäßig CP0 (die Standard-ANSI-Codepage des Systems) verwendet. Andernfalls geben Sie eine Kodierungszeichenkette an, die festlegt, wie die Ausgabe kodiert werden soll. Zum Beispiel bewirkt #ErrorStdOut UTF-8, dass Fehlermeldungen als UTF-8 kodiert werden, bevor sie zur Standardfehlerausgabe (stderr) gesendet werden. Das Programm, das die Ausgabe erfasst, muss UTF-8 unterstützen, und in einigen Fällen muss es erst konfiguriert werden, damit es diese überhaupt erfassen kann.

Bemerkungen

Wenn diese Direktive im Skript nicht angegeben ist, wird jeder Syntaxfehler in einem Dialogfenster angezeigt.

[AHK_L 42+]: Fehler werden in stderr statt in stdout geschrieben. Die Windows-Eingabeaufforderung und umfangreiche Texteditoren können in der Regel beide Ausgabetypen anzeigen. Diese Änderung wurde erst mit [v1.1.19.01] dokumentiert.

Dies befähigt umfangreiche Texteditoren wie TextPad, SciTE, Crimson und EditPlus, zur fraglichen Zeile zu springen, sobald ein Syntaxfehler auftritt. Anstatt diese Direktive jedes Mal in ein Skript einzufügen, ist es üblicherweise besser, den Texteditor so einzustellen, dass er ein AutoHotkey-Skript mit der Befehlszeilenoption /ErrorStdOut startet (weiter unten finden Sie Anweisungen, wie Sie den Texteditor einstellen können).

Da AutoHotkey kein Konsolenprogramm ist, werden Fehler nicht direkt in der Windows-Eingabeaufforderung angezeigt. Dies kann umgangen werden, indem 1) [v1.1.33+] das Skript mit der Ahk2Exe-ConsoleApp-Direktive kompiliert wird, oder 2) die Ausgabe des Skripts über Piping oder Weiterleitung abgefangen wird. Zum Beispiel:

"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "Mein Skript.ahk" 2>&1 |more
"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "Mein Skript.ahk" 2>"Syntax-Fehler Log.txt"

Sie können die Ausgabe auch direkt via Piping in die Zwischenablage kopieren, indem Sie den systeminternen Clip-Befehl verwenden (für Windows XP und niedriger können Sie stattdessen cb.exe verwenden). Zum Beispiel:

"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "Mein Skript.ahk" 2>&1 |clip

Hinweis: 2>&1 bewirkt, dass stderr an stdout weitergeleitet wird, während 2>DateiName stderr nur an eine Datei weiterleitet.

#ErrorStdOut kann wie alle anderen Direktiven nicht bedingt ausgeführt werden.

Anweisungen für bestimmte Texteditoren

EditPlus:

  1. Wählen Sie in der Menüleiste Tools > Configure User Tools aus.
  2. Drücken Sie die Schaltfläche: Add Tool > Program
  3. Menu Text: Beliebig
  4. Command: C:\Program Files\AutoHotkey\AutoHotkey.exe
  5. Argument: /ErrorStdOut "$(FilePath)"
  6. Initial directory: $(FileDir)
  7. Capture output: Ja

TextPad:

  1. Wählen Sie in der Menüleiste Configure > Preferences aus.
  2. Klappen Sie den Eintrag "Tools" auf.
  3. Drücken Sie die Schaltfläche "Add" und wählen Sie "Program" aus.
  4. Kopieren und fügen Sie folgendes ein (passen Sie gegebenenfalls den Pfad an): C:\Windows\System32\cmd.exe -- drücken Sie anschließend OK.
  5. Klicken Sie dreimal auf das neue Element (cmd.exe) in der ListBox und benennen Sie es nach Belieben um (z.B. Skript starten).
  6. Drücken Sie "Apply".
  7. Wählen Sie das neue Element in der Baumstruktur links aus und tragen Sie folgende Informationen ein:
  8. Command (sollte bereits ausgefüllt sein): cmd.exe (oder der vollständige Pfad)
  9. Parameters (an eigenen Pfad anpassen, falls notwendig): /c ""C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "$File""
  10. Initial folder: $FileDir
  11. Setzen Sie folgende Häkchen: 1) Run minimized; 2) Capture output.
  12. Drücken Sie OK. Das neue Element sollte nun im Menü "Tools" vorhanden sein.

FileAppend (weil es auch Text zur stderr oder stdout senden kann)

Beispiele

Sendet alle Syntaxfehler, die den Start des Skripts verhindern, zur stderr, anstatt ein Dialogfenster anzuzeigen.

#ErrorStdOut