AutoHotkeyと違うところ2

AutoHotkeyと違うところ2

普通の使い方 の方で説明した AutoHotkeyと違うところ のページの第2弾です。

第1弾はこちらで確認してください。

普通の使い方 AutoHotkeyと違うところ

本来の AHK のスクリプトとの違いを説明します。

思いついた事を列挙する形で挙げているので 手抜きのような形になっています。

いつかちゃんと分かりやすくしようと思います。

  1. #ではじまる、
    プリプロセッサ指令のようなものは使用できません。

  2. %  式
    といった、%の後に式を記述する方法は使用できません。

    MouseMove, 200, % 100 + valueName

    といった事はできません。

    %  式 を使わずに引数内で計算できるはずの AHKコマンド の場合も、計算しながらの引数指定はできません。

    MouseMove, 200, 100 + valueName

    といった事はできません。

    valueName  :=  100  +  valueName
    MouseMove,  200,  %valueName%
    

    の様にしなければなりません。

  3. 式を複数行にわけて分割することはできません。

    MsgBox,  番号
            ,  ダイアログ
            ,  メッセージ
    

    といった事はできません。

  4. ヒアドキュメントといわれているものは使えません。

    valueName  =
    (
        複数行の
        文字列
    )
    

    といった事はできません。

  5. 文字列の連結は . を必ず使う必要があります。

    AHK では、 . を使わなくても文字列の連結が出来るようですが、 TRR上では . が連結の際に必ず必要です。

    AHK では、以下の様にしても可能ですが、

    funcName( "変数の値は " varName " です。" )

    TRR上では

    funcName( "変数の値は " . varName . " です。" )

    のように、 . を付けます。

  6. AHK のスクリプトは多くの場合、大文字と小文字のどちらを使っても大丈夫な事が多いですが、
    TRR上では、大文字と小文字を正しく記述しないと認識できない事が多いです。

    特に、AHKコマンド は大文字と小文字を正しく記述しないと認識できません。

  7. AHKコマンド は、基本 , で引数を区切りますが、
    スペースでも区切る事が可能です。

    WinMaximize A

    ですが、 TRR上では、 AHKコマンド, でしか引数を区切れません。

    WinMaximize , A

    その代わり、 , を無駄に最後に記入していても、
    本来の AHK のスクリプトと違って、 最後の引数が無い状態で AHKコマンド を認識できたりします。

    Reload ,
    Reload は同じものとして動作します。

  8. 昔のバージョンで
    2025年1月11日

    バージョン 2.00.02 とそれ以前では

    RegExMatch( ) の関数は使えません。

    使えないというより、引数3 に代入させるための変数を指定する仕様になっていますが、その変数に値を代入させる事ができません。

    同じく、 RegExReplace( ) の関数の引数4 も代入させるための変数として、その変数に値を代入させる事ができません。

    バージョン 2.00.03 以降では

    RegExMatch( )RegExReplace( ) の関数は普通に使えると思います。

    書式

    RegExMatch( Haystack, NeedleRegEx [, UnquotedOutputVar="", StartingPos=1] )

    RegExMatch( ) は、引数3 に変数名を指定しますが、この TextRunRun はグローバル変数しか使えないため、あらかじめ global の宣言をした変数でなければ使えない事には注意が必要です。

    RegExReplace( ) は、引数4 に同じような変数名を指定します。 )

    この様に、思う様に動作しない関数などはちょくちょく見つけては使える様にできるだけ直していこうと思っています。
    ( 一応ですが )

  9. AHK には、
    SetFormat, integer, H を使って、数字を 16進数に変換する方法があります。

    ですが、これを TextRunRunのスクリプト内で使うと、 TextRunRun を動作させている AutoHotkey のプログラムの中での数字も 16進数に変換されてしまい、意図しない動作をする様になってしまいます。

    なので、 TextRunRunのスクリプト内で使う場合は早く元の状態に戻す処理を行った方がよいです。

    SetFormat, integer, H
    ; 0を足して 16進数に変換する。
    varName := varName + 0
    ; 以下を実行して 10進数のルールになる様に戻す
    SetFormat, integer, D
    

    もしくは、 TextRunRunのスクリプト内では、
    SetFormat, integer, H は使わない様にした方がよいかもしれません。

    AutoHotkey のプログラムの方で使う事を薦めます。

  10. 2022年2月14日
    今のバージョンで

    ? を使った条件分岐の構文は使えません。

    書式

    varName := ( [条件式] ) ? [Trueの場合の値] : [Falseの場合の値]

    これは使えないというより、わたしブランボンが勘違いして違う仕様のものを作ってしまっている状態です。
    ですのでいつか直そうと思っています。

    暇ができた時に直そうと思っています。
    いつになるかは分かりませんが。