スクリプトをもっと詳しく

As/R本体の状態の制御


 今のAs/Rの状態を見ながら、コマンドを実行していくタイプのスクリプトをちょろちょろっと書いてみます。

 例えば、「フォルダーバーを『常に』表示する」なんてコマンドは、わりかし複雑というか、めんどくさいんですよ。
 キモなのは、As/Rの今の状態を知るってことから始めます。

 でまぁ、いきなり正解を書いちゃいますが

CheckGrammar = 1
MessageBoxOk = フォルダーバーの表示ステータス:?State:TreeBar?
if ?State:TreeBar? == 0
	PostMessage = 400
else
	MessageBoxOk = すでフォルダーバーを表示してるので、何もしないYO!
endif
exit

 順に説明していきます。
 「CheckGrammar = 1」
 これは、文法チェックモードに切り替えるってコマンドで、エラーがあるとエラー行を表示してくれます。
 1の代わりにエディタのフルパスを書いておくと、エラー発生行をエディタで開くってぇ技もあります。
 そうですね、秀丸エディタを使ってる人が多そうなので調べてみました。
 たぶんこんな感じの指定で良いと思います。(違ってたら突っ込みプリーズ)
CheckGrammar=C:\Program Files\Hidemaru\Hidemaru.exe /j?ErrorLine? "?ScriptPath??ScriptName?"
 スクリプトを作成するときにCheckGrammarコマンドは役に立ちますので、詳しく知りたい場合はヘルプを参照ください。

「MessageBoxOk=フォルダーバーの表示ステータス:?State:TreeBar?」
 メッセージボックスを表示します。
 キモなのは、「?State:TreeBar?」の部分で、フォルダーバーの表示の有無を0か1かで返してくる置換マクロです。

「if ?State:TreeBar? == 0」
 で、その置換マクロが0だったらフォルダーバーが非表示状態なので

「PostMessage = 400」
 フォルダーバーの表示切替コマンドを発行します。
 400がフォルダーバーの表示切り替えコマンドのIDです。
 コマンドIDはアホみたいにたくさんあるんで、AllCommand.txtの中から検索して探すと良いです。

「else」  前出のif文にかかるところで、条件に合致しない場合という分岐です。
 つまり、「?State:TreeBar?」が0以外の場合に以降の処理を実行します。

「MessageBoxOk = すでフォルダーバーを表示してるので、何もしないYO!」
 何もしないのもアレなので、メッセージを出してみました。

「endif」
 if文の影響範囲の終端目印です。
 if文は、if~else~endifのような、処理の分岐のための構文なので、これを使うことで複雑なスクリプトが作成できるようになります。
 (※もちろんelse節は不要なら省略可能です)

「exit」
 スクリプトの終端を示します。
 この時点で、本体に制御が戻ります。



 こんな風に、本体の状態を知ることで、他のバーの状態、表示モード、現在のパスがネットワークなのか、仮想フォルダなのかなどなど、いろんな情報の取得ができますので、さまざまなシーンに応じて動作にあわせたスクリプトを作成することができます。