環境
私はプログラミングが出来ないし英語も読めない。普段の変数名は全角日本語だ
- AutoHotkey v2 (2.0.2)
- Windows8.1 Update1 (64bit)
v1.1からv2.0への大きな変更点
- var = valueが廃止
- クオートは"" or ''
- ClipboardがA_Clipboardに変更
- Gosub廃止
- 変数名、関数名、ラベル名は文字、数字、アンダースコア、非ASCII文字のみ。@ # $は廃止
- 入れ子の関数内ではグローバル変数を宣言せずに変数の読み込みが可能だが、変更を加えるとローカル変数になる
Scope - %objName% := Object()が不可。困った!
https://ahkscript.github.io/ja/docs/v2/Language.htm#dynamic-variables objName := "obj" ; %objName% := Object() ; ← Error obj := Object() %objName%.foo := "str" ; ← これはOK Msgbox %objName%.foo list:=" ( MenuName, MenuItemName, Label )" ; V1 Menu, %array1%, %array2%, %array3% ; V2 %array1% := Menu() ← Error。手詰まり ; MapObjectの中に入れてしまえば%var%:=Object()に近いことはできる mn := "MenuName" var_ := Map() var_[mn] := Menu() var_[mn].Add(mn " - Item1", MenuHandler) var_[mn].Add() var_[mn].Add(mn " - Item2", MenuHandler) var_[mn].Show() var_["MenuName"].Show() return MenuHandler(Item, *) { MsgBox "You selected " Item }
- Script Library Folders
- A_ScriptDir "\Lib\" ; Local library.
- A_MyDocuments "\AutoHotkey\Lib\" ; User library.
- "directory-of-the-currently-running-AutoHotkey.exe\Lib\" ; Standard library.
エスケープ文字
記述 | 解釈 | 備考 |
---|---|---|
`s | Space |
クオートのエスケープ
Splitting a Long Line into a Series of Shorter Ones
"()", '()' はヒアドキュメント
ver | " | "" | `" | ' | '' | `' | |
---|---|---|---|---|---|---|---|
:= "" | v1 | Error | " | Error | ' | '' | ' |
v2 | Error | Error | " | ' | '' | ' | |
:= '' | v2 | " | "" | " | Error | Error | ' |
:= "()" | v1 | Error | " | Error | ' | '' | ' |
v2 | " | "" | Error | ' | '' | `' | |
:= '()' | v2 | " | "" | `" | ' | '' | Error |