注意してほしい事2

TRR を使用する際に注意してほしい事を挙げます。

普通の使い方 の方でも同じ様な趣旨のページがあります。
今回のは少しマニアックな内容のものを紹介しておこうと思います。

以前に紹介しておいたものは以下のページです。
普通の使い方 注意してほしい事1

OnExitを使う場合の注意

OnExitAHKコマンド を使う場合をあえて注意しておきます。

これを使用する場合は、指定したサブルーチンの処理の中に必ず ExitApp を指定してください。

OnExit は、ソフトを終了する時に指定の動作をさせる AHKコマンド です。
サブルーチンを指定します。
OnExit [, Label]

指定したサブルーチンの処理の中に ExitApp を指定する必要があります。

もしこれを指定しなかった場合、 何をしても終了しない TextRunRun ができあがってしまいます。

これは、 TextRunRun の仕様というより、 AutoHotkey の方の仕様です。

どのWebサイトでもよいのですが、参考にする場合、 AutoHotkey Wiki のWebサイトを参考にするとよいと思います。

外様のWebサイト

AutoHotkey Wiki は、このホームページとは全く関係のない別のWebサイトです。

AutoHotkey を説明している代表的なWebサイトなので参考例として挙げています。

AutoHotkey Wiki

このWebサイトの中にある以下のページを参考例として載せておきます。

OnExit - AutoHotkey Wiki

OnExit を実行した後の TRRまたはAHK 、終了する時に終了する動作の代わりに指定したサブルーチンを実行します。

その指定したサブルーチンの処理の中に ExitApp を含めておく必要があります。

ExitApp が無い場合、終了しない TRR またはAHK が出来てしまう事になります。

補足

具体的にいう必要は無いかもしれない事をとりあえず言っておきます。

TRR が普通に終了するパターンの場合、プログラムの内部で ExitApp を使う事で終了しています。

OnExit を使用した場合は、 TRR が終了する時、指定したサブルーチンが実行され、その処理の中に含まれている ExitApp によって初めて TRR を終了する事になります。

つまり、2回 ExitApp を使用する事で初めて終了が可能になるという状態になります。

これは、 AHK 自体も同じです。

指定したサブルーチンに含めるといっても、 TRR では、 G_subroutineアイテム を使う必要があるので、そのアイテムのスクリプトの中に含める事を意味します。

TRR のウインドウの位置とサイズを保存した後に終了させるスクリプトの例です。

Gosub , E_guiPositionSave
ExitApp

これを G_subroutineアイテム に登録して使う事になります。

この様に必ず ExitApp が実行されるスクリプトを記入してください。

念のため、強制終了させる方法を載せておきます。

これはあくまで最終手段です。
どうしても他の方法で終了しない場合のみ使用してください。

使った場合、パソコンにどの様な不具合を起こす可能性があるかを自分は把握している訳ではありません。
使う場合は自己責任で使用してください。

Taskkill /F /IM TextRunRun.exe

コマンドプロンプトかタスクバーの入力欄などを使って実行するものです。

netplwiz などはWindowsから使って

テキスト を使って
Run , netplwiz を実行すると netplwiz などが使えたりします。
ですが、 TRR からこれを使うことは薦めません。

netplwiz の事は、自分もよくは知りません。
Windows を起動した時にパスワードを入力しなくてもログインできるようにする裏技で使うといったものとして挙げられるものです。

ですので、 netplwiz の事は説明できません。
ネットで調べた方が正しい答えが得られます。

さて、なぜ TRR から使ってはいけないかですが、 テキスト から使って見ると分かると思いますが「設定内容が違う」みたいです。

netplwiz を使ってパソコンを起動した時にログインできる様にしているユーザーの人は、 普通に netplwiz を使って表示されるウインドウに設定されている内容と、
TRR から Run , netplwiz を使って表示させたウインドウでは、設定させている内容が違うのを確認できるのではないでしょうか?

おそらく、管理者の権限から使用していない事が原因かもしれませんがあまりよく理由は分かっていません。

ここで言っておきたい事は、 TRR から
Run , netplwiz といったものを動作させて設定したとしても正しく反映されるかどうかは怪しいという事です。

TRR を管理者の権限で起動して使う事も可能ですが、その使い方をしたとしても薦めません。

netplwiz といった、 Windows を設定するようなものを使う場合は普通の方法で使用させたほうが良いです。

普通の方法とは、
下のタスクバーにある ここに入力して検索 の入力欄を使うか、 Windowキー+R のキーを使った時に表示する「ファイル名を指定して実行」のウインドウを使って実行させる事です。

これは、 AHK の方を使った場合も同じだと思います。

この様に管理者の権限が必要な設定のものを使用する時は、 TRR を通して使うような事はせず、「普通の方法」から使用させたものを使う様にしてください。

設定ができるAHKコマンドについて

起動時に実効する処理の中に、設定をする AHKコマンド を使用してしまうと、その設定が TRR が終了するまで残るので注意してください。

DetectHiddenWindowsSetKeyDelay などの事です。
AHK の起動時にこれらを使った場合と同じです。

TRR の起動時に実効する処理は、
AutoHotkey-execute といわれているものと同じです。

SetKeyDelay は、 Send などを使った時の、一つ一つのキーの間隔を指定出来るものです。

SetKeyDelay [, Delay, PressDuration]
Delay にキーの間隔、
PressDuration にキーを押され続ける間隔をミリ秒で指定します。

これを使うと、連続でキーを送信するスクリプトを作る際は便利です。
間隔を開けてキーを送信する場合も Sleep で間隔を指定せずに使う事も可能になります。

SetKeyDelay , 500
Send , a
Send , b
Send , c

さて、問題なのはこのような SetKeyDelay を使ったスクリプトを 起動時に実行するアイテム などで使用してしまった場合です。

その場合、 TRR を起動している間はずっと、キーの間隔が開いてしまう状態になってしまいます。

起動時に実行するアイテム 以外で使用する分には、その処理の間だけ SetKeyDelay の効果が続き、その後に初期値に戻ります。

キーとキーの間隔が遅い場合は、 SetKeyDelay起動時に実行するアイテム の中で実行されている可能性を考えてみてもよいかもしれません。

起動時に実行するアイテム の中で、設定をする AHKコマンド を使ってしまうと、 TRR の起動中にずっとその効果が残ってしまうので、それらは 起動時に実行するアイテム の中では使用しない様に注意してください。

起動時に実行するアイテム の中で使用する場合は、その後に初期値に戻る処理を実行させる様にしてもよいです。
最後に実行させた方が設定として残ります。

以下に設定をする AHKコマンド を挙げておきます。

  • DetectHiddenText
  • DetectHiddenWindows
  • CoordMode
  • SetDefaultMouseSpeed
  • SetKeyDelay
  • SetMouseDelay
  • SetWinDelay
  • SetControlDelay
  • SetStoreCapslockMode
  • SetTitleMatchMode
  • SendMode
  • AutoTrim
  • StringCaseSense
  • SetFormat

これらは 起動時に実行するアイテム で使用しないか、使用しても初期値に戻す様にしてください。

なお、 DetectHiddenWindows
DetectHiddenWindows , OffTRR のプログラムの中で設定される様にしています。

AHK を設定するものとして、 #IfWinActive などの、左端に # がつくものがありますが、 TRR では、 # がつくものはそもそも使用できません。

起動時に Exit は使わないで

これも 起動時に実行するアイテム の事ですが、
この中で Exit は使わない様にしてください。

return の方を使う様にしてください。

AHKreturn は、
AutoHotkey-execute のサブルーチンの中で使う return
関数の中で使う return があると分けて考えてよいと思います。

AutoHotkey-execute のサブルーチン の様なもの の中で使う return は、起動時に実効する処理の最後を意味するものです。

関数の中で使う return は起動時に実効する処理の中でその関数を使ったとしても、その関数を返す 終了する 意味しか持ちません。
なので起動時に実効する処理が終了するものではありません。

TRR起動時に実行するアイテムreturn を指定しても、関数の return と同じです。
なので起動時に実効する処理が終了するものではありません。

ですが、 Exit は、 AutoHotkey-execute のサブルーチン の様なもの の中で使う return と同じ様に起動時に実効する処理の最後を意味するものになってしまいます。

起動時に実効する処理が途中で中断してしまうと、 TRR の起動時の処理が途中で止まってしまいます。

起動時に実行するアイテム には、 AutoHotkey-execute の処理を途中で止める様な処理を指定しない様に気を付けてください。