追加機能一覧

提供: AutoHotkey Wiki
移動: 案内検索

追加機能一覧[編集]

 実行制御
Break LoopLabel 多重ループでループ名または階層数を指定してループを中断する。
Continue LoopLabel 多重ループでループ名または階層数を指定してループを処理をスキップする。
For key,value in object 指定のオブジェクトのキーと値の各組に対して一連のコマンドを繰り返す。
Loop Until Loop または Forループ の継続条件を指定する。
Try ... Catch 構造化例外処理を提供する。
Throw 例外をスローする。
 コマンド
FileEncoding スクリプト内のデフォルトのエンコーディングをセットする。
適応対象は、FileRead, FileReadLine, Loop Read, FileAppend, FileOpenテキストエンコーディングも参照。
GUI 下記、GUIの機能拡張を参照。
IniRead/Write/Delete 読み取り/書き込み、セクション全体を削除する。または、すべてのセクション名の一覧を取得する。
Menu, Tray, Icon タスクトレイアイコンの設定を変更する。
Run パラメータの解析方法が改良された。
SendInput {U+nnnn} ユニコード文字を直接送信する。
SendLevel AutoHotkeyスクリプトによって生成されたキーボードとマウスのイベントをホットキーとホットストリングで無視するかどうか送信レベルを設定する。
SetFormat, IntegerFast, h|H 16進表記設定時における英字部分の大文字/小文字を指定する。
SetRegView, RegView RegRead, RegWrite, RegDelete, Loop (レジストリ)で使用するレジストリビューの方式(32-bit/62-bit)を変更する。
Transform, HTML HTML用に文字列から実体参照に変換を行う。
WinGet, ..., ProcessPath 指定されたウィンドウを所有するプロセスのフルパスと名前を取得する。
 ディレクティブ
#If (式) #IfWinActive に似たキー定義の条件指定ができ、式を利用することでより詳細な指定ができる。
#IfTimeout #If ひとつあたりに費やせる時間を定義。
#MenuMaskKey WinキーまたはAltキーの押下解除を打ち消すため(各種メニューを出さないため)の同時に押すキーを変更する。
#Include <Lib> 関数ライブラリフォルダからインクルードする関数を明示的に指定する。
#InputLevel AutoHotkeyスクリプトによって生成されたキーボードとマウスのイベントをホットキーとホットストリングで無視するかどうか入力レベルを設定する。
#Warn 指定条件時のエラー警告を有効/無効にする。
 関数
Object() オブジェクトを作成する。
ObjAddRef() / ObjRelease() オブジェクトの参照カウンタ値を増減させる。
Exception Throwの例外オブジェクトを作成する。(コールスタックへのアクセス制限を提供する)
FileOpen() ファイルI/O操作を行うオブジェクトを作成する。
Func() 関数を参照し取得する。
GetKeyName/VK/SC キーの名前またはテキスト、仮想キーコードまたはスキャンコードを取得する。
InStr() 左または右からの文字列の指定されたアイテムを検索する。
IsByRef() ByRefパラメーターが変数に付属されたかどうか判断する。
IsObject() 変数内容の示す内容がオブジェクトがどうかを判定する関数。
StrPut() / StrGet() 特定のアドレスから/へ文字をコピーする。付加的な機能としてコードページ変換もできる。
Trim() 文字列の先頭/最後/両端から、特定の文字を削除する。
RegEx (?CNumber:Function) 正規表現パターンの評価中に関数を呼び出す。
関数ライブラリ 新しい"ローカル ライブラリ"と#Include <LibName>
関数の可変長引数 関数で不特定数のパラメタを受けとったり引き渡したりする。
静的初期化子 スタティック変数は任意の式を使用して初期化することができる。
 オブジェクト
総論 オブジェクトの振る舞いと利用方法の総論。
Object 拡張可能な連想配列。
Enumrator コレクション内のアイテムを列挙するオブジェクト。
File ファイルアクセスのインターフェイスを提供する File オブジェクト。FileOpen関数を利用することで作成することができる。
Func スクリプトで呼び出すことができる、ユーザー定義または組み込み関数を表す。
 COMオブジェクト
ComObjActive() OLEに登録されている実行中のオブジェクトを取得する。
ComObjArray() COMで利用する SAFEARRAY を生成する。
ComObjConnect() 指定の接頭辞で始まるユーザ定義関数に、COMオブジェクトのイベントを接続する。
ComObjCreate() COMオブジェクトを作成する。
ComObjEnwrap() / ComObjUnwrap() COMオブジェクトをラップ/アンラップする。
ComObjError() COMエラーの通知を有効化/無効化する。
ComObjFlags() COMラッパーオブジェクトの動作を取得またはフラグを変更する。
ComObjGet() COMコンポーネントによって提供されるオブジェクトへの参照を取得する。
ComObjMissing() COMオブジェクトのメソッド呼び出し時に、任意パラメタのデフォルト値として利用されるオブジェクトを生成する。
ComObjParameter() COMメソッドにパラメータとして渡す値と型をラップする。
ComObjQuery() インターフェイスまたはサービスのCOMオブジェクトを照会する。
ComObjType() COMオブジェクトの型情報を取得する。
ComObjValue() COMラッパーオブジェクトに格納されている値やポインタを取得する。
 組み込み変数
A_Is64bitOS OSが64-bitなら「1」、32-bitなら「0」。
A_IsUnicode ユニコード版では真(1)を格納。ANSI版では未定義。(=偽として扱える)
A_FileEncoding ファイル内容操作関連コマンドで利用するデフォルトエンコーディングを格納する。詳しくはFileEncodingを参照。
A_OSVersion Windows 7、Windows 8に対応。詳しくは組み込み変数を参照。
A_PriorKey 最後に押したキー または キーを離す前に押した最後のキーの名前。詳しくは組み込み変数を参照。
A_PtrSize ポインタの占めるバイトサイズを格納。32-bitでは 4、64-bitでは 8となる。 32-bit版AHKの場合4バイトである。
A_RegView SetRegViewで指定した、レジストリビューの方式。(Default/32/64)
A_ScriptHwnd スクリプトの非表示メインウインドウのユニークID。(HWND/ハンドル)
 データ型
Ptr ポインタ型(新設)。ポインタやハンドルを引き渡す時はこの型を利用する。
AStr, WStr DllCall内でのみ利用可。詳細はDllCallを参照。
 ユニコード
互換性 DllCall等でユニコードを扱う方法について。
スクリプトファイル スクリプトファイルでユニコードを扱う場合の注意点。
SendInput SendInputでユニコードを扱う。
 その他
ahk_exe ウインドウの所有するプロセス名(EXEファイル)またはパスで識別することができる。
データ型 DllCall, NumGet, NumPut で利用可能な新たなデータ型。
デバッグ機能 インタラクティブなデバッグ機能(行毎のスクリプト実行など)
エラー処理 Try/Catch/ThrowA_LastErrorの有用性が増加。
GUIの機能拡張 GUIコマンド関連に様々な機能拡張がなされた。
アイコンサポート リソース識別子と任意アイコンサイズのサポートなど。
その他の変更点 AutoHotkey_Lにおける変更がスクリプトに及ぼす影響について。
バージョン履歴 AutoHotkey_Lリビジョンの履歴

ユニコードスクリプトファイル[編集]

バイトオーダーマーク(BOM)付きの UTF-8 または UTF-16 で記述されたスクリプトファイルは、ユニコードとしてロードされる。
しかしながら、以下の警告は適応される:

  • ANSI版では、テキストは全てネイティブストリングフォーマットに変換されるので、いくつかの文字はプレースホルダに置き換わる可能性がある。
  • スクリプトのコンパイルにはUTF-8形式で有る必要があり、Ahk2Exeはどんなバイトオーダーマークも削除する。

エラー処理[編集]

多くのコマンドは、エラー処理のためのErrorLevelの代わりに Try/Catch が使用できるようになった。例:

Try
{
    FileCopy, file1.txt, C:\folder
    FileDelete, C:\folder\old.txt
}
Catch
    MsgBox An error occured!

加えて、以下のコマンドはデバッグ支援ためにA_LastErrorがセットされる。
FileAppend, FileRead, FileReadLine, FileDelete, FileCopy, FileMove, FileGetAttrib/Time/Size/Version, FileSetAttrib/Time, FileCreateDir, RegRead, RegWrite, RegDelete

関数ライブラリ[編集]

この機能は、%A_MyDocuments%\AutoHotkey\Lib にある「ユーザライブラリ」、AutoHotkeyディレクトリ内の「標準ライブラリ」、%A_ScriptDir%\Lib にある「ローカルライブラリ」から自動的にインクルードされる。詳しくは関数を参照。

#Include <LibName> は、明示的に関数ライブラリのいずれかにあるライブラリファイルを組み込むことが出来る。

GUIの機能拡張[編集]

GUIコマンド関連に様々な機能拡張がなされた。

  • GUIを参照する際に1~99の数の代わりに名前やHWNDを使用できる。
  • Gui, New - 新しい匿名GUIを作成する。
  • 名前付きまたは匿名のGUIはいくつでも作成することができる。
  • 新しいGUIオプション: +HwndOutputVar, +ParentGUI
  • GUIの所有者は任意のウィンドウを指定できる: +Owner%HWND%
  • Gui, Font - テキストのアンチエイリアスを制御する。
  • Internet Explorer WebBrowserコントロールなどのActiveXコントロールがサポートされた。
  • GuiControlGet, OutputVar, Name - GUIコントロールに関連付けられた変数の名前を取得する。
  • GUIメニューを使用する場合、Ctrl+O などのキーボードアクセラレータが自動的にサポートされる。
  • フォントの品質はFontのサブコマンドによって制御することができる。

スタティック変数[編集]

スタティック変数は任意の式を使用して初期化することができる。例:

Sleep 500
MsgBox % Time() "ms since the script started."
Time() {
    static Tick := A_TickCount
    Return A_TickCount - Tick
}

テキストエンコーディング[編集]

FileRead, FileReadLine, Loop Read および FileAppend の各コマンドではシステム規定のANSIコードページに加え、Windowsのサポートするテキストエンコーディングの殆どを利用することができる。 FileEncodingでは規定のエンコーディングを設定でき、FileReadFileAppend での読み/書き方法を変更することができる:

FileRead, OutputVar, *Pnnn Filename
FileAppend [, Text, Filename, Encoding]

nnn はコードページ識別番号を指定する。EncodingFileEncodingで利用されるのと同等のものが指定可能。

関連項目: スクリプトの互換性

Send / ControlSend[編集]

以下の方法でスクリプトからユニコード文字を直接送信することができる:

  • ユニコードの文字コード(nnnnは接頭辞 "0x" を除いた16進数)で送信するする文字を指定。
Send, {U+3042}{U+3044}{U+3046}{U+3048}{U+304a} ; 「あいうえお」と出力される
  • 直接ユニコード文字をSendコマンドに記述する
Send, あいうえお ; 「あいうえお」と出力される

これは以下のような方法で実現している:

  • WindowsAPIを用いて文字から仮想キーコードへ変換を行う。これは SendMode に依存している。
  • Sendコマンドは SendInput() API を利用している。即ち現在の SendMode は無視される。
  • ControlSend コマンドでは WM_CAHR メッセージを該当ウィンドウまたはコントロールにポストしている。

なお、この機能はIMEのユニコード文字出力機能を利用しているので、ユニコード文字を出力した際に常にIMEがONとなる。
また、Google日本語入力などユニコード文字出力機能をもたないIMEを利用しているときは、何も出力されない場合がある。

SetFormat[編集]

16進数フォーマットを指定する場合、H(Hex)/h(hex)の大文字・小文字の違いは英字(A-F)部分の出力時の大文字・小文字に影響するようになった:

SetFormat, IntegerFast, H  ; 大文字
SetFormat, IntegerFast, h  ; 小文字

データ型[編集]

NumPut, NumGet および DllCall で新たなデータ型が利用できるようになった。

Ptr メモリ上のアドレスを示す。今のところIntと同等であるが、将来完全に64ビットへと移行した場合はInt64と同等になるはずである。
他の整数データ型と同様に、接頭辞U や、接尾辞P * にも対応している。
AStr, WStr DllCall でのみ利用可能である。互換性の項目を参照のこと。

可変長引数関数と関数呼び出し[編集]

可変長引数の関数呼び出しは、関数にパラメータの可変数を渡すために使用することができる。可変引数の関数は配列を介してパラメータの可変数を受け取ることができる。

アイコンサポートの改良[編集]

通常サイズ以外が利用可能[編集]

OSでサポートされる任意のサイズのアイコンを実行ファイルから抽出することができるようになった。
複数サイズのアイコンがアイコングループ内に存在するときは、最も適切なサイズが使用される。
リビジョン17以前では、どのアイコンもシステムによって自動的に選択されて「大きいアイコン」に合わせてリサイズされ、更に求められるサイズに再度リサイズされていた。

リソース識別子が指定可能[編集]

アイコン番号でマイナス値を指定した場合、実行ファイル内のグループアイコンを特定するようになる。
以下はトレイアイコンにAHKの実行ファイルのデフォルトアイコンをセットしている:

Menu, Tray, Icon, %A_AhkPath%, -160