AutoHotkeyと違うところ
この TextRunRun は AutoHotkey のスクリプト プログラム を記入してそれを実行できますが、いくつか条件があります。
実際には、
AHK
のスクリプトをそのまま使用できるのではなく、
AHK
のスクリプトと、同じ動作をするように仕向けたスクリプトを実行してるだけだからです。
よって、使用してみて動作が意図どうりにいくかどうかを確認しながら使用することを勧めます。
ここでは、本来の AHK のスクリプトとの違いを説明します。
Loop関係とオブジェクト関係
まず、本来のスクリプトとの大きな違いを説明します。
それは、
- Loop文は使えない。
- オブジェクトを使用するものは使えない。
という点です。
AutoHotkey には、ループ文の種類がいくつかありますが、それらは 全て使えません。
オブジェクトも使えないので、オブジェクトを使うことが必要になる処理は 全て使えません。
関数
続いて、関数に関する事です。
関数を作成することはできません。
サブルーチンを自由な名前で作ることもできません。
既に宣言されている関数やサブルーチンを使用する事は可能です。
AHK の組み込み関数なども使用可能です。
- Mod(20, 7)
- Sqrt(16)
など
関数を宣言して使う事はできませんが、
二行以上アイテム
を関数と似たようなものとして使用する事はできると思います。
%1 や、 B_itemArg1 などを使うことで、引数と同じ様なものを使えます。
後、ユーザーが使うことを前提とした関数があります。
F_から始まるものは関数であり、ユーザーが使うために用意したものです。
どのような関数があるのかは、以下のページで確認できます。
辞書 F_の関数
一応、 入力補完の一覧の 特殊な単語 のタブ内でも確認できます。
しかし、説明をまだ記入していないので、このホームページでしか用途を確認できません。
サブルーチン
サブルーチンは、
Gosub
の
AHKコマンド
などがあるのでサブルーチンの実行はできます。
E_
から始まるものはサブルーチン名です。
これはユーザーが使うことを前提としたサブルーチンです。
どのようなサブルーチンがあるのかは、以下のページで確認できます。
辞書 E_のサブルーチン
一応、 入力補完の一覧の 特殊な単語 のタブ内でも確認できます。
しかし、説明をまだ記入していないので、このホームページでしか用途を確認できません。
サブルーチンを作る場合
サブルーチンを自由な名前で作ることはできません。
ですが、
G_subroutine1
といった名前のサブルーチンを用意しています。
G_subroutine1
は、
G_subroutine1
というアイテム名を実行するだけ、のサブルーチンです。
つまり、
G_subroutine1
の名前でアイテムを登録すれば、
自由な動作を指定できるサブルーチンを作る事と同じになります。
これらは、
G_subroutine1
から、
G_subroutine100
まで用意しています。
ちなみに、アイテムの種類はどれでもよいです。
二行以上のでも、ソフト・ファイルでも、どれでもよいです。
AHK は、サブルーチンを指定する必要がある AHKコマンド があります。
- Hotkey
- SetTimer
- OnExit
- Menu
- Guiのコマンドのgのオプション
などは、サブルーチンの指定が必要です。
これらを使う場合は、
TextRunRun
では、
G_subroutine1
などを使うしか方法がありません。
ホットキーラベル
サブルーチンが自由な名前で作れない事から、
ホットキーラベルを作って、
ショートカットキーをつくる事はできません。
代わりに、ショートカットキーを登録する方法として、
- HotkeyのAHKコマンドを使う
- キーの一覧のウインドウから のボタンを押してキーを登録する
といった方法を使います。
TextRunRun のショートカットキーには、
- テキスト上のキー
- 常時使用のキー
があり、そこで大きく分かれているのが特徴です。
他にも
&hotkeyAllGroundNewFromCommand
や
&hotkeyOnTextNewFromCommand
の規定のコマンドを使って登録する方法もあります。
のフォルダにファイルを作ってキーを登録する方法もあります。
変数はグローバルのみ使用可能
変数はグローバルでなければ、意味がありません。
一時的に使う変数だとしても、global宣言をした変数でなければ、使用できません。
宣言の仕方は、 AHK の書式と同じです。
global [変数名]
global [変数名] = 1
global [変数名] := [変数] や [式や値や関数]
グローバル宣言をせずとも使える変数として、
V_var1
から
V_var50
の変数があるので、
グローバル宣言を省略したければ、これらを使用してください。
global 宣言で変数を宣言するのは、起動時の処理の時点でしておくことを勧めます。
それも、起動時の処理の最も早い段階でしておくことを勧めます。
ErrorLevelはErrorLevel_TextRunRunを使う
AHK
の
ErrorLevel
の変数は意味を成しません。
よって、
ErrorLevel_TextRunRun
を使うことになります。
この変数は
TextRunRun
のスクリプトで
AHKコマンド
が実行された時に、
ErrorLevel
が変更される場合があると、
この変数にも、同じ値を代入するようなっているものです。
ErrorLevel_TextRunRun
を使うスクリプトを使用する時は注意点があります。
この
ErrorLevel_TextRunRun
は自動的に初期値に戻ったりはしません。
ErrorLevel_TextRunRun を使うスクリプトを使用する時は、スクリプトの前後に初期化の記述をしておく必要があります。
ErrorLevel_TextRunRun = 0
ErrorLevel_TextRunRun := False
F_ErrorLevel_TextRunRunRestore()
この 3つどれかを指定することになります。
if文
If Var = Var
[実行分]
の簡略式の if文は現在使えません。
普通の
if( 式 ){
; 実行文
}
などは使用できます。
IfInString, Var, SearchString
{
}
などの AHK のスクリプト特有の if 文も使用可能です。
計算式は一行の中で、一回しかできない。
計算式は、 1 + 1 はできますが、 1 + 1 + 1 はできません。
if( varName1 == True && varName2 == True ){
といった事はできません。
varName3 := varName1 == True
varName4 := varName2 == True
if( varName3 && varName4 ){
といった記述にして使う事になります。
( ) カッコのネスト対応していない
( ) のネストに対応していないため、
if( function( ) ){
}
という記述はできません。
V_var1 := function( )
if( V_var1 ){
}
といった記述にして使う事になります。
ただし、 { } のネストには対応しています。
{ } を複数の階層にして使ってもよく、今のところこれといって不具合は見つかっていません。
スペースで開ける
TextRunRun
では、半角スペースで区切った、
引数1、
引数2
といった区別で分けて認識させているので、
代入につかう
=
などは、スペースで分けて記述していないと
=
の意味として認識できません。
AutoHotkeyのスクリプトでは、
varName:=1+1
といったスペースを空けない記述が可能です。
しかし、 TextRunRun上では、
varName := 1 + 1
のようにスペースで開ける必要があります。
なお、
AHKコマンド
の引数の指定や、
関数の引数の指定のように、
,
カンマ
で区切る記述の場合は、
スペースで開ける必要はありません。
WinGetTitle,V_var1,A
といった、記述で使用可能です。
コメント
コメントは、
;
を先頭に記入した場合のみコメント文になります。
先頭以外に記入しても、コメント文として判別されません。
⁄∗ ∗⁄ は使用できない
⁄∗ ∗⁄
はコメントとして使用できません。