最後の文字で実行。その2

前のページの続きです。

前のページで記入した事ですが、 最後の文字で実行 は、一つのタブ内に 10個設定でき、 タブは 25 までの合計 40個までしか設定できません。

この問題の解決方法として、設定したものを切り替える事ができる様にする事で、
実質できる事が増やせるというやり方で代用しようと思います。

設定したものを切り替える方法は前回説明した
F_lastWordSetFirstNumAllFromAllLineStr( ) の関数を使います。

最後の文字で実行を切り替える

TRR のスクリプトを使って 最後の文字で実行 の設定を切り替える事が出来るようにしたものを紹介します。

単純に切り替えるだけのものでもよかったのですが、
切り替えた後に以下の動作をするようなものを作りました。

切り替えた内容を表示する

テキストの文字で自動的に実行 のウインドウを表示させて、切り替え後の内容を表示させるようにしています。

タイマーを使って2分間だけ切り替わるようにする

&wait を使って、 10の番号のタイマーを使い、 2分後に元に戻るようにしています。

実行した後は、元に戻るようにする

&wait を使った処理は、 lastWord_タイマーキャンセルと という名前のアイテムを使う事で、 元に戻るようにします。
何かのアクション 最後の動作 をさせる場合は、このアイテムを同時に使うようにします。

前回、 fromFileName でファイルから登録する場合のと似たようなものを紹介しましたが、
今回作るスクリプトも、似たような記述になるため前回のと同じ変数を使っています。

ですので、前回のスクリプトと変数を分けてもよかったのですが、
一緒にしても問題ないため変数名が同じものを使用しています。
つまり、今回のスクリプトは、前回のスクリプトと合わせて使う事が前提になっています。

それでは、今回の アイテム を全て挙げていきます。

グローバル変数の宣言に使う アイテム は前回のと同じもので、続きを記入したものになっています。

lastWord_start1_globalLastWord.trr
global mylast1_startFolder = %A_ScriptDir%\trrEvery\user\lastWordUser
global mylast1_startSetFileName = \startTab
global mylast1_categoryExtension = .txt
global mylast1_tmpCategory
global mylast1_tmpCategoryNum
global mylast1_tmpReadLineNum
global mylast1_tmpReadFile
global mylast1_tmpAllLineStr
global mylast1_fileType
global mylast1_tmpFolder
; 以下のが今回追加した分
global mylast1_categoryFolder = %A_ScriptDir%\trrEvery\user\lastWordUser
global mylast1_categoryName = \category
global mylast1_tmpTooltip
global mylast1_O_toolTipX = 1002
global mylast1_O_toolTipY = 120
global mylast1_O_winShowOption = NA X1002 Y50 W240 H600
global mylast1_O_autoShowGui := True
lastWord_最初にもどす.trr
Gosub, E_lastWordRestoreFirst
lastWord_setStartFileName 2
lastWord_setStartFileName 3
lastWord_setStartFileName 4
lastWord_setStartFileName 5
%--
lastWord_タイマー処理前.trr
&wait -10 2m &&& lastWord_タイマーキャンセルと
lastWord_タイマーキャンセルと.trr
&timer -d 10
lastWord_最初にもどす
F_toolTipOutput("lastWordを元に戻した" , mylast1_O_toolTipX , mylast1_O_toolTipY , 3)
if( mylast1_O_autoShowGui ){
    Gui, %B_GuiNumLastWord%:Hide
}

lastWord_ツールチップタブ5.trr
mylast1_tmpTooltip := O_lastWordKey5_1 . "`n" . O_lastWordKey5_2 . "`n" . O_lastWordKey5_3 . "`n" . O_lastWordKey5_4 . "`n" . O_lastWordKey5_5 . "`n" . O_lastWordKey5_6 . "`n" . O_lastWordKey5_7 . "`n" . O_lastWordKey5_8 . "`n" . O_lastWordKey5_9 . "`n" . O_lastWordKey5_10
ToolTip , %mylast1_tmpTooltip%, %mylast1_O_toolTipX%, %mylast1_O_toolTipY%, 1
Gui, %B_GuiNumLastWord%:Hide
%--
lastWord_ワード表示タブ5.trr
if( mylast1_O_autoShowGui ){
    F_lastWordTabChange(5)
    F_showLastWord(mylast1_O_winShowOption, False, False)
} else {
    lastWord_ツールチップタブ5
}
%--
lastWord_setCategoryTab5タイマー.trr
mylast1_tmpCategoryNum = %B_itemArg1%
lastWord_タイマー処理前
mylast1_tmpCategory = %mylast1_categoryName%%mylast1_tmpCategoryNum%%mylast1_categoryExtension%
mylast1_tmpReadFile = %mylast1_startFolder%%mylast1_tmpCategory%
IfNotExist, %mylast1_tmpReadFile%
{
    F_errorOutput("以下のファイルが見つからない`n" . mylast1_tmpReadFile)
    return
}
FileRead, mylast1_tmpAllLineStr, %mylast1_tmpReadFile%
if( mylast1_tmpAllLineStr == "" ){
    F_errorOutput("以下のファイルの文字を取得できない`n" . mylast1_tmpReadFile)
    return
}
F_lastWordSetFirstNumAllFromAllLineStr(5, mylast1_tmpAllLineStr)
lastWord_ワード表示タブ5
%--

以上がスクリプトの全てです。
これらの アイテム を用意すれば使える様になります。

使い方というか、使用した例を挙げます。

まず、前回のファイルから登録する場合のと同じフォルダを使います。

%A_ScriptDir;%\trrEvery\user\lastWordUser

このフォルダの中に category1.txtcategory2.txt のファイルを作ります。

前回はファイル名にある番号はタブの番号を意味していました。
ですが今回のはタブの番号は関係ありません。

これらのファイルにある番号は
lastWord_setCategoryTab5タイマーアイテム を使用する時に指定する引数と関係しています。

lastWord_setCategoryTab5タイマー を使う際、引数に数字を指定します。
その数字が先程のファイル名の数字と関連しており、
lastWord_setCategoryTab5タイマー 1 を実行すると、
category1.txt に記述した内容を タブ5 内の項目に読み込む様になっています。

変更するのは 5番目のタブ 内の項目のみです。
ですので、前回のようにファイル名にある数字はタブの番号を意味している訳ではありません。

category1.txt といったファイルの中身には、前回のように
[キーになる文字] = [実行処理]10行記入した書式で記入したものを用意します。

以下が使用してみたものの例です。

まず、起動時に設定しておくものとして startTab3.txt を用意し、 タブ3 に設定するようにします。

startTab3.txt
種類1 = lastWord_setCategoryTab5タイマー 1 %--
種類2 = lastWord_setCategoryTab5タイマー 2 %--
種類3 = lastWord_setCategoryTab5タイマー 3 %--
中止 = lastWord_タイマーキャンセルと %--
表示 = &goFunc F_showLastWord(mylast1_O_winShowOption, False, False) &&& F_lastWordTabChange(3) %--
#
#
#
#
#

種類1 等を テキスト に入力すると、
タブ5 内の設定が category1.txt に記入した内容に切り替わる様にしているものです。

表示の行が長いですが、 アイテム として用意するほどのものでもないため少し長くなりますがスクリプト自体を載せています。

切り替える内容を記入したファイルはテキトーなものを挙げます。
好みで好きに変えて使う様にしてみてください。

category1.txt
ラジオ   = lastWord_タイマーキャンセルと Radikool %--
エディタ = lastWord_タイマーキャンセルと sakuraEdit %--
ブラウザ = lastWord_タイマーキャンセルと Edge %--
電卓 = lastWord_タイマーキャンセルと C:\windows\system32\calc.exe %--
#
#
#
#
#
#

[実行処理] の部分は、タイマーを使って一時的に設定を変更しているものを解除するために
lastWord_タイマーキャンセルとアイテム を同時に使う用にします。

この アイテム の後に実行させたいものを記入する事でタイマーを解除して設定を元に戻しつつ、任意の動作を実行させる事ができます。

上の例では、 RadikoolsakuraEditEdge は元々 アイテム として登録していないと当然使用できません。

category2.txt
シャープ = lastWord_タイマーキャンセルと &sendScriptToText any &sharpss %--
パーセント = lastWord_タイマーキャンセルと &sendScriptToText any &parsentss %--
展開 = lastWord_タイマーキャンセルと &sendScriptToText any &textOut %--
相対パス = lastWord_タイマーキャンセルと &sendScriptToText any &relativePath %--
絶対パス = lastWord_タイマーキャンセルと &sendScriptToText any &fullPath %--
ストックの1 = lastWord_タイマーキャンセルと &collabText 6 1
確認 = lastWord_タイマーキャンセルと &openConfirm
#
#
#

とりあえず、規定のコマンドを使用して テキスト に記入してある文字を操作する系のを用意してみました。

テキスト の最後の文字に シャープ と記入すると、 &sharpss が実行されて、その前の文字が # で囲まれるといったものです。

処理の部分には &sharpss だけを記入してちゃんと動作すればよかったのですが、それだけだとうまく動作できなかったので
&sendScriptToText を使って動作させるようにしました。

&sendScriptToText に関しては別のページで説明します。

辞書 &sendScriptToText

これとは別に &sendScriptToText を使った例のページがあります。
話が脱線するので見なくてもよいですが、一応参考例としてそのページを挙げておきます。

細かい説明 追加するランチャーの使用例。その2

補足

&sharpss だけだと動作できない理由ですが、内部動作の仕様に関する事になります。

lastWord_タイマーキャンセルとアイテム の後に処理を記述して実行させようとしている以上、二行以上のスクリプトとして実行している事になります。

その場合だと、 テキスト を操作させる系の &sharpss といったものはそのままでは使用できません。

あえて、説明しなくても分かると思いますが
シャープ を記述すると、 &sharpss #で囲む が実行され、
パーセント を記述すると、 &parsentss %で囲む が実行され、
展開 を記述すると、 &textOut #% を一つ展開する。 が実行され、
相対パス を記述すると、 &relativePath ファイルパスなら、相対パスに変換。 が実行され、
絶対パス を記述すると、 &fullPath 相対パスなら、絶対パスに変換。 が実行されます。

その次の ストックの1 を記述した場合ですが
&collabText 6 1 がスクリプトになっています。 このスクリプトの例だと、ストック青の入力欄 1 に記入してあるスクリプトを実行します。

これは、 テキスト の文字を操作する系ではないので、 &sendScriptToText を使う必要はありません。
そして、今までの様に %-- を最後に記入していません。
ですので テキスト側にある「最後の文字のキーになる文字」以外の記述してある文字を引数として扱う事になります。

もっとも、 &sendScriptToText を使っている場合も、 テキスト の文字を引数として使う事になりますが。

確認 を記述した場合、 &openConfirm つまり、 Alt+o を実行した場合と同じ事をします。

これは、引数を指定しないと意味をなさないためこれも %-- をつけないようにします。

%--を最後につけた方がいい

この 最後の文字で実行 の実行処理ですが、 引数を指定して動作をさせるのには向いていないため、 基本的には [実行処理] の最後に %-- を付ける事を薦めます。

category2.txt の場合はあえて引数を使う例を挙げましたが。

引数を指定して動作をさせるのには向いていない理由は、
最後の文字で実行 は「Windowsの音声認識」を使って動作させる事を目的にしていたものなので、 「Windowsの音声認識」を使った場合、引数に正しい文字のみを記入する事が難しいからです。

「Windowsの音声認識」を使った例は次のページで挙げていきます。

最後の文字で実行 の設定を切り替える例を挙げてみました。

今回挙げた例はこの設定の項目を増やす一つの例です。

説明は大雑把でテキトーだったかもしれませんがこんな説明で終わります。
使ってみて気に入った方は、処理を追加したり、改良したりしてみて使ってみてください。