前回、 AutoHotkeyでGuiを使って値を入力する ことをやったので 今回はスクリプトの設定値を色々変更した時に 設定ファイルに書き出し、次回起動時にそれを読み込む、 ということをやってみます。
AutoHotkeyでの設定ファイルの読み書き
スクリプト例はこちら。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
|
MenuやGuiについては前回、前々回の記事で詳しく書いています。
上の例では
C:\Users\<USER>\AppData\Roaming\AutoHotkey\my_ahk.ini
というファイルに設定を書き込んで、起動時に読み込んでいます。 一般的なAppData\Roamingの中に設定ファイルを作っていますが、 スクリプトと同じフォルダとかにしたかったら、
IniDir := % A_LineFile . "\..\"
とします。
このスクリプトの一連の流れとしては
- 変数の
MyVal1
とかに初期値を入れる。 ReadValue()
で設定ファイルから値を読み込む。- 変数の変更が出来るGuiを作り、それをメニューから起動できるようにする。
- Guiで
OK
を押した場合、入力を変数に反映させ、ファイルに書き出す。
- Guiで
と言った感じ。
メニューに追加されたMy Settingをクリックすると上の様な感じのウィンドウが出ます。
値を変更してOKを押してもう一度立ち上げるとちゃんと反映されてるはずです。 ただ、この状態だと中で変数をキープしてるだけでも出来るので、 値を変更した後に、一度Exitしてスクリプトを終了させ、 もう一度立ち上げてウィンドウで値を確認してみます。
なんらか自分で先にいれた値が出てくれば成功です。
読み書きは基本的に
IniRead, <Output>, <File>, <Section>, <Key>, [Default]
で読み込み、
IniWrite, <Value>, <File>, <Section>, <Key>
で書き込みです。
AutoHotkeyでの設定の読み書きではSection
で区切り、
key
で値に名前を付けて保存します。
上の例だとこんな感じのファイルになります。
1 2 3 4 5 |
|
セクション名は[]
で囲まれ、各値は=
でkey
とつながる様に書かれます。
セクションが違えば同じキーの名前を使えます。
IniRead
では指定したファイル、セクション、キーに該当する値が
Output
に入ります。
ファイルがなかったり、キーがない場合にはDefault
の値が
入りますが、Default
を指定しない場合、ERROR
という文字列が入ります。
IniWrite
では書き込み先のフォルダが無いとエラーを出します。
なので上の例ではまずフォルダをチェックして作っています。
書き出しは指定したファイル、セクション、キーにValue
を書き出します。
こんな感じでやってみると意外と簡単に出来ました。