#ErrorStdOut

スクリプトの起動を妨げる構文エラーは、ダイアログを表示するのではなく、標準エラーストリーム(stderr)に送信します。

#ErrorStdOut Encoding

パラメータ

Encoding

If omitted, it defaults to CP0 (the system default ANSI code page). Otherwise, specify an encoding string indicating how to encode the output. 例えば、#ErrorStdOut "UTF-8"は、エラーメッセージをUTF-8にエンコードしてからstderrに送ります。出力をキャプチャするプログラムは、UTF-8をサポートしている必要があり、場合によってはUTF-8を期待するように設定する必要があることもあります。

注:このパラメータは式ではなく、引用符(「シングル」または「ダブル」のいずれか)で囲むことができます。

備考

If this directive is unspecified in the script, any syntax error is displayed in a dialog.

エラーは標準出力ではなく、標準エラーに書き込まれます。コマンドプロンプトやファンシーエディターでは、通常両方表示されます。

これにより、TextPad、SciTE、Crimson、EditPlusなどの高級エディタは、シンタックスエラーが発生したときに問題のある行にジャンプすることができます。#ErrorStdOutディレクティブはすべてのスクリプトに追加する必要があるため、通常はAutoHotkeyスクリプトを起動する際にコマンドラインスイッチ /ErrorStdOutを使用するようにエディタを設定する方がよいでしょう(設定方法は以下をご覧ください)。

AutoHotkeyはコンソールプログラムではないので、コマンドプロンプトに直接エラーが表示されることはありません。これは、1)Ahk2Exe ConsoleAppディレクティブでスクリプトをコンパイルするか、2)パイプやリダイレクトでスクリプトの出力をキャプチャすることで回避することができます。事例:

"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "My Script.ahk" 2>&1 |more
"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "My Script.ahk" 2>"Syntax-Error Log.txt"

また、オペレーティングシステムに内蔵されたクリップコマンドを使用すれば、出力を直接クリップボードにパイプすることができます。事例:

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

注: 2>&1はstderrをstdoutにリダイレクトさせ、2>Filenameは、stderrのみをファイルにリダイレクトさせる。

他のディレクティブと同様に、#ErrorStdOutは条件付きで実行することはできません。

特定のエディターへの指示

EditPlus:

  1. メニューバーから、「ツール」→「ユーザーツールの設定」を選択します。
  2. Press button: Add Tool > Program
  3. Menu Text: Your choice
  4. Command: C:\Program Files\AutoHotkey\AutoHotkey.exe
  5. Argument: /ErrorStdOut "$(FilePath)"
  6. Initial directory: $(FileDir)
  7. Capture output: Yes

TextPad:

  1. メニューバーから、「設定」→「環境設定」を選択します。
  2. ツールの項目を展開します。
  3. 追加ボタンを押し、「プログラム」を選択します。
  4. コピー&ペースト(パスに合わせる)してください:C:\Windows\System32\cmd.exe -- を入力したのち、OKを推してください。
  5. ListBoxに新しく追加された項目(cmd.exe)をトリプルクリックし、任意の名前に変更します(例:Launch Script)。
  6. 適用を押す。
  7. 左のツリーで新規項目を選択し、以下の情報を入力します:
  8. コマンド(すでに記入されているはずです):cmd.exe(またはそのフルパス)
  9. パラメータ(必要であれば、パスに合わせて調整してください):/c ""C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "$File""
  10. 初期フォルダ:$FileDir
  11. 以下の項目にチェックを入れてください:1) 最小限の実行、2) 出力の捕捉。
  12. OKを押す。新たに追加された項目は、「ツール」メニューに存在するようになります。

FileAppend(標準エラーまたは標準アウトにテキストを送信することもできるため)

スクリプトの起動を妨げる構文エラーは、ダイアログを表示するのではなく、標準エラーとして送信されます。

#ErrorStdOut