[ヘルプTop] [戻る]

その他のスクリプトコマンド

 ここでは、若干の応用を含んだスクリプトコマンドを取り上げます。
 内部メッセージコマンドや、連続コマンドや、各種の動作をさせるコマンドは、ここに記載されているコマンド類で実現が可能です。
 メッセージボックス
 外部コマンド実行
 フォルダー移動系コマンド
 内部コマンドメッセージ送信
 ファイルへ書き込み
 ファイルの読み込み
 本体から連動してきた選択状態の加工
 コンテキストメニューコマンドの実行
 レジストリ操作
 タブ情報
 音声合成
 任意のフォルダーの中からランダムに1つだけ取得
 システム情報の取得
 ベンチマーク検証
 その他
※「その他」には重要コマンドが多く含まれていますのでご注意ください。

メッセージボックス

 ポップアップメッセージを表示するコマンドです。
 メッセージボックスで押したボタンは、戻り値として変数に格納することができます。
 詳しくは「スクリプトの制御構文」を参照ください。

MessageBox

 指定されたテキスト文をメッセージボックスでポップアップで表示します。
 メッセージボックスのボタンタイプは、WindowsAPIのMessageBoxで使用されるフラグと等価です。
 ここでは割愛しますが、アイコン画像や、デフォルトボタンもフラグを組み合わせることで指定できます。
 メッセージボックスのタイプを16進数で記述する際は、16進数であると言うことを表現するために数字の先頭に「0x」を付記してください。
【書式】
MessageBox=[メッセージボックスのタイプ(10進数/16進数での数値)],[メッセージ本文]

【例】
MessageBox=0x131,2個目のボタンにフォーカスがあり、!アイコンで、OK/キャンセルのメッセージ

追加情報

MessageBoxOK

MessageBoxの省略形で、OKボタンのみのメッセージボックスを表示します。
MessageBoxコマンドのタイプは0x30(0x00000000 | 0x00000030)になります。
ボタンなどのフラグを意識せず、簡単にメッセージを表示したい場合に使用すると便利です。

【書式】
MessageBoxOK=[メッセージ本文]

【例】
var $value$ = test
MessageBoxOK=先ほど格納された変数の値は「$value$」です。

MessageBoxYN

Yes/Noで問い合わせるタイプのMessageBoxコマンドの省略形ですが、Noを選ぶとスクリプトをその時点で中断します。
MessageBoxコマンドのタイプは0x24(MB_YESNO | MB_ICONQUESTION)になります。
※MessageBoxYNは互換性維持のために残されてるコマンドなので、使用を推奨しません。

【書式】
MessageBoxYN=[メッセージ本文]

【例】
MessageBoxYN=スクリプトを続けますか?

外部コマンド実行

 外部コマンドを実行します。
 RunやExRunと異なり、各種の置換マクロが使えたり、起動したコマンドのリターンコードを受け取って制御を行うという目的のコマンドです。
 CallとExecコマンドは、リターンコードを戻り値として変数に格納することができます。
 詳しくは「スクリプトの制御構文」を参照ください。

Call

 外部プロセスを実行し、呼び出したコマンドが終了するのを待ちます。
 コマンド実行形式であるため、コマンドラインオプションを直接記述できますが、実行ファイル以外を関連付け実行するような使い方はできません。

 値には、変数、選択ファイル系マクロ、入力系マクロ、現在フォルダー系マクロ、現在時刻、内部状態取得、OS環境変数、特殊環境変数が使用できます。
 BootDirコマンドの設定値により、起動時フォルダーが指定できますが、BootDir=1(アプリケーションパスを使用)の記述は使用できません。
 なおBootDirコマンドで存在しないディレクトリを指定した場合は「ディレクトリ名が無効です」というエラーメッセージになります。
 ShowWindowコマンドの設定値により、起動時の表示状態が指定できます。
 TimeOutコマンドでタイムアウト値を指定することができます。
 タイムアウトしてメッセージが表示され、プロセスの強制中断した場合は258が返され、続行した場合はプロセスは稼動したまま259が返されます。
※自動終了しないコマンドを非表示で実行してしまうと、タスクマネージャで強制終了するしか方法がなくなるので、そのようなコマンドを利用する場合は十分ご注意ください。

【書式】
Call=起動コマンドのコマンドライン

【例】
Call=c:\test.bat /test

Exec

 外部プロセスを実行し、呼び出したコマンドの終了は待ちません。
 コマンド実行形式であるため、コマンドラインオプションを直接記述できますが、実行ファイル以外を関連付け実行するような使い方はできません。

 値には、変数、選択ファイル系マクロ、入力系マクロ、現在フォルダー系マクロ、現在時刻、内部状態取得、OS環境変数、特殊環境変数が使用できます。
 BootDirコマンドの設定値により、起動時フォルダーが指定できますが、BootDir=1(アプリケーションパスを使用)の記述は使用できません。
 なおBootDirコマンドで存在しないディレクトリを指定した場合は「ディレクトリ名が無効です」というエラーメッセージになります。
 ShowWindowコマンドの設定値により、起動時の表示状態が指定できます。
※自動終了しないコマンドを非表示で実行してしまうと、タスクマネージャで強制終了するしか方法がなくなるので、そのようなコマンドを利用する場合は十分ご注意ください。

【書式】
Exec=起動コマンドのコマンドライン

【例】
Exec=c:\test.bat -test

Shell

 シェル実行形式で外部プロセスを実行します。
 Call/Execとは異なり、直接コマンドラインオプションを記述できませんが、実行ファイル以外を関連付け実行することが可能です。
 Runコマンドと同様に、CommandLineOptionコマンドの設定値によりコマンドラインオプションが指定できますが、選択ファイルマクロが展開されるのはfor文中だけです。

 値には、変数、選択ファイル系マクロ、入力系マクロ、現在フォルダー系マクロ、現在時刻、内部状態取得、OS環境変数、特殊環境変数が使用できます。
 BootDirコマンドの設定値により、起動時フォルダーが指定できます。
 TimeOutコマンドは、BootMode=5の時のみ適用されます。
 ShowWindowコマンドの設定値により、起動時の表示状態が指定できます。

※自動終了しないコマンドを非表示で実行してしまうと、タスクマネージャで強制終了するしか方法がなくなるので、そのようなコマンドを利用する場合は十分ご注意ください。
※Runとの違い
 Shellコマンドは、動作や適用されるモード類はRunコマンドと全く同じです。
 Runコマンドはスクリプトのアイコンを取得対象であったり、スクリプトへのドラッグ&ドロップの対象になるため、環境変数と特殊環境変数しか使用できません。
 Shellコマンドはスクリプトのアイコンを取得対象にならず、スクリプトへのドラッグ&ドロップの対象にならないため、全ての置換マクロが適用されます。

var $hoge$
(OK)Commandline=?selfile? ?nowdir? ?any? $hoge$
(OK)Run=%ProgramFiles%test\testapp.exe %App_Dir%
(OK)Shell=%ProgramFiles%test\testapp.exe %App_Dir%
(NG)Run=?selfile? ?nowdir? ?any? $hoge$
(OK)Shell=?selfile? ?nowdir? ?any? $hoge$


【書式】
Shell=起動コマンドのコマンドライン

【例】
OpenMode=0
CommandLineOption= c:\data.dat
Shell=c:\test.vbs

フォルダー移動系コマンド

 アクティブリスト上のフォルダーを移動したり、ファイルを選択したりといった動作をします。
 また移動させる対象は、お気に入りタブ、ユーザー定義バーなど多岐に渡ります。
※フォルダー移動は他に前述のRunコマンドで指定する方法、外部コマンドのAsrload.exeのコマンドラインオプションで指定する方法もあります。
 Asrload.exeの使い方はコマンドの説明ページを参照ください。

FolderJump

 指定されたフォルダーを開きます。
 末尾の「\」は無視されます。
※別スレッド駆動の非同期動作なので、他のコマンドとの同期は取れません。

【書式】
FolderJump=[動作種別(0:ジャンプ、1:新しく開く、2:バックグラウンドで開く、3:画面分割している場合に反対側のウィンドウで開く)],[フルパス]

【例】
FolderJump=1,C:\WINDOWS

FileJump

 指定されたファイルまで開きます。
 指定されたファイルのあるフォルダーを開き、対象ファイルを選択します。
 末尾が「\」で終わっている場合、FolderJumpと同じ動作になりますが、こちらのコマンドの方が速度が遅くなります。
※別スレッド駆動の非同期動作なので、他のコマンドとの同期は取れません。

【書式】
FileJump=[動作種別(0:ジャンプ、1:新しく開く、2:バックグラウンドで開く、3:画面分割している場合に反対側のウィンドウで開く)],[フルパス]

【例】
FileJump=1,C:\WINDOWS

FavoriteJump

 任意のお気に入りタブで指定のフォルダーを開きます。
 デフォルトのキー配置でテンキーの各数字に割り当てられている「お気に入りタブ」で、それぞれ現在のフォルダーを保持している機能です。
 「お気に入りタブ」を見分けるには、タブのタイトルの先頭に数字が表示されます。

【書式】
FavoriteJump=[お気に入りタブの数字(0~9)],[フルパス]

【例】
FavoriteJump=1,C:\WINDOWS
FavoriteJump=2,C:\Program Files

UBJump

任意のユーザー定義バーで指定のディレクトリを開きます。

【書式】
書式:数字(1~9),基準フォルダー([ユーザーディレクトリ]\BAR\)からの相対パス
   数字(10),基準フォルダー([ユーザーディレクトリ]\Tablet\TabletAssist\)からの相対パス) ※10はタブレット支援バー固定です。

【例】
UBJump=1,Drive

FullStateOpen

 本来は復元スクリプトを実現するために作られたコマンドで、性能重視で人間が使う事を考えてない、かなりの上級者向けのコマンドです。
 ウィンドウ制御文字列を指定することで、任意の表示モードでウィンドウを開きます。
 最近使ったフォルダーバーや、前回終了時の情報ファイルに格納されている形式です。
 実際に文字列を作るのは難しいので、ユーザー定義バーの「現在タブ復元スクリプトの作成」を用いて作成すると良いでしょう。
 自動的に生成される文字列をコピー&ペーストして流用すると良いでしょう。
 詳細はこちらの「ウィンドウ制御文字列の書式」や「復元スクリプト詳細」を参照ください。
※Ver.14以前のFullStateOpenは「開く」動作でした。
 Ver.15以降はアクティブタブを別途指定する考慮のため「バックグラウンドで開く」動作になっています。

【書式】
FullStateOpen=[ウィンドウ制御文字列] 【例】
FullStateOpen=0000|0000|0003|0 1 0 02 00 0 00000098 00000000 00000000 00 00 c:\hoge\test|

FullStateOpenEx

 FullStateOpenとほぼ同じですが、渡されたパス文字列内に含まれる環境変数や変数を展開します。
 FullStateOpenがあまりにも非人道的な仕様なので、少し緩和したものがこちらになります。

内部コマンドメッセージ送信

 各種の内部コマンドをID指定で起動します。
 使用可能なコマンドは「AllCommand.txt」やメニューの定義ファイルを参照してください。
 合計で、約3,500個のコマンドIDが公開されています。

PostMessage/SendMessage

 メインウィンドウに向けて各種のコマンド発行します。
※フォーカス位置によって、動作しない場合があります。
(アドレスバーにフォーカスがある場合、各種バー上にフォーカスがある場合、リスト上のアイテムをリネーム中とか)
 複数アプリケーションが起動している場合は、Zオーダーが前の方に送られます。(FindWindow()というAPIで見つかる順です)
※スクリプト自体がバックグラウンドで処理されているので、本体と同期動作が必要なSendMessage系の使用は推奨しません。

【書式】
・非同期型
PostMessage=[コマンドID]
・同期型(終了を待つ)
SendMessage=[コマンドID]

【例】
更新の例
PostMessage=33301
名前順でソートの例
SendMessage=34100

PostMessageAll/SendMessageAll

 開いている全てのタブへコマンドを発行します。
 例えば、全てのタブを更新するとか、全てのタブを詳細表示にすると言った使い方を想定しています。
※スクリプト自体がバックグラウンドで処理されているので、本体と同期動作が必要なSendMessage系の使用は推奨しません。

【書式】
・非同期型
PostMessageAll=[コマンドID]
・同期型(終了を待つ)
SendMessageAll=[コマンドID]

【例】
PostMessageAll=33301

PostMessage1/PostMessage2

 画面の状態依存のメッセージコマンドです。
 これらのコマンドは子ウィンドウに対する制御なので、アプリケーション全体やOSに働きかけるようなコマンドは動作しません。
 ウィンドウを開く/閉じる/各種バーの制御/OSに対する制御コマンドなどですが、切り分けは曖昧になっておりますので現状有姿のままの仕様と考えてください。(この切り分けは予告無く変更される可能性があります)
 また、非同期で動いてアクティブリストを内部で判別しているようなコマンドも存在しており、アクティブ画面にしかコマンドが飛ばない場合もあります。

【書式】
画面分割されていない場合のみ、アクティブなリストにコマンド発行
PostMessage1=[コマンドID]

画面分割されている場合のみ、両方のリストにコマンド発行
PostMessage2=[コマンドID]

【例】
PostMessage1=33301
PostMessage2=33301

PostMessageBar

 各種バーに、バー固有のコマンドを送信します。(使用できるコマンドIDはメニュー定義ファイルを参照)

【書式】
PostMessageBar=[バーID],[バー固有のコマンドID]
バーIDバーの名称
1フォルダーバー
2プレビューバー(オプション表示のみ動作)
3最近閉じたフォルダーバー
11タブバー
100~108ユーザー定義バー1~9
【例】
フォルダーバーのオプションを表示
PostMessageBar=1,47950

PostMessageTab

 指定されたタブ番号へ、PostMessageでコマンドを発行する。
 タブ番号は横置きの場合は左から順に、縦置きの場合は上から順に0から割り振られます。
【書式】
PostMessageTab = [タブ番号],[コマンドID]
【例】
PostMessageTab = 1,35112
※タブ番号が1番のタブを閉じる
サンプル

ファイルへの書き込み

 指定したファイルにテキストを書き込むことができます。
 排他モードでファイルを開くので、スクリプト内で他のアプリケーションに渡す必要がある場合は、FileCloseを使用してファイルを閉じてください。
 また同時に1個しかファイルを開けませんので、複数のファイルを操作する必要がある場合は逐次ファイルを開いてください。
※Ver.5.3.0で追加されたコマンドです。

FileOpen

 指定されたファイルが存在しない場合は新規作成、存在する場合は追記モードで開きます。
 ファイルを開くことに失敗した場合はエラーメッセージが表示されます。

【書式】
FileOpen = 開くファイルのフルパス

FileOpenMode

 直後のFileOpenコマンドに対して、ファイルオープンモードを指定します。
 Includeで別のスクリプトファイルにまたがることはできません。
※新規作成モードの場合、既にファイルが存在する場合は警告なしでファイルサイズが0になるので十分ご注意ください。
※直後のFileOpenにしか影響を与えないので、一度FileOpenを実行してしまうと未指定状態に戻ります。ご注意ください。

【書式】
FileOpenMode = [パラメータ番号]

パラメータ番号
0追記モードでファイルを開く、存在しなければ作成(省略した場合の初期値)
1新規作成モードでファイルを開く

FileWriteA

 指定された文字列をASCIIコードで出力する。(日本語環境の場合はSJISで出力されます)
 改行コードはCRLFで自動付与されます。
 FileOpenでファイルを開いていないとエラーメッセージが表示されます。
※主にDOSコマンドなどにファイルを渡す目的で用意されています

【書式】
FileWriteA = 出力文字列

FileWriteW

 指定された文字列をUNICODEで出力する。(BOMは出力されません)
 改行コードはCRLFで自動付与されます。
 FileOpenでファイルを開いていないとエラーメッセージが表示されます。
※主にAs/R用のスクリプトを生成する目的で用意されています

【書式】
FileWriteW = 出力文字列

BomOut

 直後のFileWriteWコマンドに対して、先頭にBOMを出力するか否かを指定します。
 Includeで別のスクリプトファイルにまたがることはできません。
※直後のFileWriteWにしか影響を与えないので、一度FileWriteWを実行してしまうと未指定状態に戻ります。ご注意ください。

【書式】
BomOut = [パラメータ番号]

パラメータ番号
0BOM出力なし(省略した場合の初期値)
1BOM出力あり

FileClose

 現在開いているファイルを閉じます。
 任意のタイミングでファイルを閉じる目的のものなので、スクリプト終了時までファイルを開きっぱなしで良いのであれば省略可能です。
 FileOpenでファイルを開いていなくてもエラーになりません。
【書式】
FileClose

【例】
FileOpen = c:\test1.txt
FileWriteA=あいうえお
FileClose
FileOpen = c:\test1.txt
FileWriteA=かきくけこ(追記)
FileOpen = c:\test2.txt
FileWriteA = さしすせそ(新規作成、この時点でc:\test1.txtがクローズされ、ロック解除)
Exec = %WINDIR%\notepad.exe c:\test1.txt
※出力ファイルがロックされていても構わない例なので、FileCloseは省略しています。

※ファイル操作系のコマンドに関する注意事項
 スクリプトは起動時にスクリプトファイルを読み込み、実行中にスクリプトファイルを閉じた状態で動作します。
 これを利用して自分自身を書き換えるという、自己改ざんが実現可能です。
 悪用事例が見つかりましたら、本機能は一切の予告も警告もなく削除されますのでご了承ください。

ファイルの読み込み

DetectCodepage

 指定したファイルのコードページを求めます。
 候補が複数ある場合、コードページの判別に迷ったら日本語であると仮定した上で判別ポイントの多数決を行います。
 文字コードの判別ができない場合「ERROR」と返します。
※少々乱暴な表現ですが、コードページとは文字コード種類を示す番号のようなものです。
※Windowsがサポートするすべてのコードページが使用できますが、残念ながらWindowsの変換機能をそのまま使用しているので厳密なものではありません。
※コードページ21027(US Ascii)は判別が上手くいかなくて誤認した時に良く使われます。
※Ver.13.4.0.0で追加された機能です。

【書式】
 var $codepage$ = DetectCodepage, 文字コード種を調べるフルパスファイル名

【補足】
使用可能なコードページはこちらも参照ください。

SetCodepage

 FileRead/FileAllReadで外部のファイルを読み込む場合、コードページを指定することで任意の文字コードのファイルを読み込めるようになります。
※Ver.13.4.0.0で追加された機能です。

【書式】
//ShiftJisを読み込む
SetCodepage=932

FileRead

 指定されたファイルから1行読み込みます。
 SetCodepageが未指定の場合はUNICODEのフラットテキストのファイルしか読めません。
 BOMはファイルの先頭のみ読み飛ばします。
 ファイルの終端まで行くと「ERROR」を返します。
 1行の最大長は32KBで、それ以上は読み出せません。
※書き込み時のファイルとは完全に独立しており、このコマンドが呼び出されたタイミングでファイル全体をメモリに読み込みます。
 指定ファイル名が前回と同じであれば、続けて次の行を取り出します。
 指定ファイル名が前回と異なる場合は、メモリに保持していたデータを破棄して新しいファイルを読み込みます。
 ファイル名の比較は大文字/小文字を区別します。
 改行はCR/LF/CRLFを認識します。
※Ver.10.0.0で追加されたコマンドです。

【書式】
変数 = FileRead,フルパスファイル名
【例】
var $1行目$=FileRead,C:\hoge\test.txt
var $2行目$=FileRead,C:\hoge\test.txt
var $別のファイル1行目$=FileRead,C:\hoge\test2.txt

【補足】
少々複雑なサンプル

FileAllRead

 指定されたファイルから全行を、全て読み込みます。
 SetCodepageが未指定の場合はUNICODEのフラットテキストのファイルしか読めません。
 BOMはファイルの先頭のみ読み飛ばします。
 通常の変数の代入式では、タブ文字、前後のスペース、改行文字などが格納できませんが、この機能を使った場合は特殊な例外になります。
 具体的にはSpeechコマンドへXMLファイルの内容を丸投げして読ませる目的で作られたコマンドです。
※他のコマンドの利用時に、禁止文字が半角スペースに置換されて失われる場合がありますのでご注意ください。
※Ver.10.0.0で追加されたコマンドです。

【書式】
変数 = FileAllRead,フルパスファイル名
【例】
var $全行$=FileAllRead,C:\hoge\test.txt

【補足】
少々複雑なサンプル

本体から連動してきた選択状態の加工

 本体から連動してきたファイルなどの選択状態を加工するコマンドです。
 本体からの連携せず、処理対象を動的に変更したい場合などに使用してください。
 また、任意文字列の配列をfor文でループするといった応用も可能です。

RemoveSelectItems

 リストから渡される選択アイテムのリストを全件削除、条件に合致するものを削除します。
※選択アイテムのリストは、for文などで使用する元になります。
※Ver.7.3.0で追加されたコマンドです。

【書式】
全件削除
RemoveSelectItems
条件に一致するものだけ削除(*.txtか、*.iniで一致するものを削除する)
RemoveSelectItems = *.txt;*.ini
条件に一致しないものだけ削除(先頭に!があると否定の意味になり、*.txtか*.iniで一致するものだけ残す)
RemoveSelectItems = ! *.txt;*.ini

AppendSelectItem

 リストから渡される選択アイテムのリストに追加します。
※Ver.10.0.0で追加されたコマンドです。

【書式】
AppendSelectItem=文字列
※任意の文字列の配列でループをまわすというのも、この機能を使用することで実現が可能です。

AppendCsvSelectItem

 リストから渡される選択アイテムのリストに、カンマ区切りで渡されたテキストをまとめて追加します。
※Ver.7.3.0で追加されたコマンドです。

【書式】
AppendCsvSelectItem=文字列
【例】
var test = あ,い,う,え,お
RemoveSelectItems
AppendCsvSelectItem=test
for
  messageboxok = ?SelFile?
next
※あ,い,う,え,おと順番に表示される

GetSelectItems

 指定したフォルダー以下のファイルを走査して、選択リストに追加します。
※Ver.7.3.0で追加されたコマンドです。

【書式】
GetSelectItems=[フルパスディレクトリ名/フルパスのワイルドカード指定]
【例】
GetSelectItems=C:\windows\*.log
GetSelectItems=C:\windows\
GetSelectItems=C:\windows

コンテキストメニューコマンドの実行

 右クリックメニューに表示されるコマンドを実行します。

ContextCommandText

 現在、リスト上で選択しているアイテムに対して右クリックメニューのコマンドをテキスト形式で指定して実行します。
 メニューに表示されている文字列を、上から部分一致で探して実行するので、似ている項目がある場合は想定外のコマンドを実行しないように気をつけてください。
 ※右クリックメニューに対して前方一致するコマンドを実行します。
 ※下位階層のメニューコマンドは対象外となります。
【書式】
ContextCommandText=[コマンドテキスト]
【例】
ContextCommandText=プロパティ
ContextCommandText=SVN 更新

ContextCommandID

 現在、リスト上で選択しているアイテムに対して右クリックメニューのコマンドをIDで指定して実行します。
※選択しているファイルが異なる場合、同じIDでも動作が異なる場合があります。
※使用しているソフトウェアや設定などの環境によってIDと動作が一致しない場合がありますので、異なるPC間での運用の際にはご注意ください。
※コマンドIDを調べるには、隠し機能である「リストで選択している状態のコンテキストメニューを表示し、項目を選択するとコマンド名とIDをクリップボードにコピーするコマンド」(ID:35907)を利用すると取得できます。
 詳細は、Appendixの隠し機能の頁を参照ください。
【書式】
ContextCommandID=[コマンドID]
【例】
ContextCommandID=48000

レジストリ操作

 レジストリキーの「HKEY_CURRENT_USER\Software\AMA_Soft\ASR\Main001」の階層のデータを読み書きします。
※バーのレイアウト/管理情報はライブラリの管理情報が多いのでアクセスを許可していません。
 もちろん相対指定はできませんし、As/Rの管理範囲外の書き込みは禁じられているのでOSやその他のシステムに影響を与える事はありませんが、レジストリ操作には違いないので十分ご注意ください。
 また不適切な値を登録するとAs/Rが動作しなくなる可能性もありえますので、設定のエクスポートを行ってバックアップを取ってから使用してください。
※設定値は膨大な数があり、資料化が大変なので非公開とさせていただきます。
 ビット演算が必要な箇所や、複雑な計算が必要な設定項目もあります。

WriteRegNum

 レジストリに数値を書き込みます。数値は10/16進数が使えます。
【書式】
WriteRegNum=[As/Rの管理階層のセクション],[エントリ],値
【例】
WriteRegNum=ListMouse,DropCreateDir,0
※ファイルにドロップでフォルダーを作成をOFFにする設定です。

WriteRegString

 レジストリに文字列を書き込みます。
【書式】
WriteRegString=[As/Rの管理階層のセクション],[エントリ],値
【例】
WriteRegString=ListInit,InitPath,c:\
※新しくタブを開く際の初期ディレクトリの設定です。

ReadRegNum

 レジストリの数値を読み込みます。
 設定値が見つからない場合は0を返します。
【書式】
ReadRegNum,[As/Rの管理階層のセクション],[エントリ]
【例】
var $変数$ = ReadRegNum,ListMouse,DropCreateDir

ReadRegString

 レジストリの文字列を読み込みます。
 設定値が見つからない場合は「ERROR」を返します。
【書式】
ReadRegString,[As/Rの管理階層のセクション],[エントリ]
【例】
var $変数$ = ReadRegString,ListInit,InitPath

LoadSetting

 設定を再読み込みします。
【書式】
LoadSetting=[画面更新フラグ]
【例】
LoadSetting=1

画面更新フラグ
1以外設定を再読み込むだけで更新しない
1設定を再読み込みし、画面の再構築をして反映させる

タブ情報

 タブの保持している情報を取得します。
 スクリプトが動いているスレッドと、画面のスレッドは独立しており、スクリプトで取得できる情報と画面が一致しなくなる場合がありうると言うことにご注意ください。
 前述のPostMessageTabも併用すると、特定のタブに対してコマンドを実行することができます。

GetTabPath

 開いているタブの番号を指定して、指定されたタブのパスを返す。
 タブ番号はタブバーに表示されている順番で、0から始まる数値を指定する。
 範囲外の数字を指定すると"ERROR"という文字列を返す。
 パスの終端には必ず\が付与される。
 仮想フォルダーの場合はGUID表記のパスで返される。
【書式】
var 変数 = GetTabPath,[タブ番号]
【例】
var $変数$ = GetTabPath,1

GetTabIndex

 開いているタブの中から、指定されたワイルドカード文字列と一致する最初のタブ番号を返す。
 またワイルドカード文字列に「My」を指定した場合は、現在アクティブなタブの番号を返す。
 スクリプトと画面のスレッドの動作は同期していないので、スクリプトへ返された値が正しいことを保障しない。
 ワイルドカードを使用せず完全一致を見る場合は、タブの持っているパスは必ず\記号で終わっていることに注意すること。
 一致するタブが存在しない場合は"ERROR"という文字列を返す。

【書式】
var $変数$ = GetTabIndex,[ワイルドカード文字列/My]
【例】
var $変数$ = GetTabIndex,c:\test??\*
var $変数$ = GetTabIndex,My

音声合成

Speech

コントロールパネルの音声合成で指定された言語および設定で、指定された文字列を読み上げます。

※Ver.13.0.6.0より前のバージョンではスペルミスでSpeachになっています。
 Ver.14から使えなくなりますのでご注意ください。
※モードによってXML文字列を渡すことによって、抑揚や速度などが定義可能です。
 興味のある方は、こちらを参考にしてください。
XML TTS Tutorial

【書式】
Speech=[音声合成で発音する文字列、抑揚などの制御を加えるならこの文字列を改行無しのxmlで記述する]
【日本語が使用できる場合の例】
Speech=こんにちは、世界!
【英語が使用できる場合の例】
Speech=Hello world!

※音声合成エンジンについて
Microsoft社の提供している音声合成エンジンは2種類存在します。
Microsoft Speech Platform(日本語を含めほとんどの言語が無償配布、エンジンのみ)と、SAPI(日本語版はOfficeと配布、コントロールパネルに登録される)と呼ばれているものです。
残念ながら、As/RではSAPIを使用しているのでMicrosoft Speech Platformをインストールしていても喋らせることができません。
Windows8以降であれば、SAPIの日本語版も標準で搭載されていますが、Windows7ではOfficeなどに同梱されているものを導入する必要があります。

SpeechFlag

 Speechコマンドで渡されたテキストをどのように解釈するかを指定します。
 フラグは以下のように定義されており、組み合わせで使用することができます。
 初期値は0です。
※Speechコマンドの前にセットしておくこと。
※SpeechFlagをVoiceXMLモード(0x8)をセットした場合、SpeechVolume/SpeechRateSpeedは初期値として扱われます。
※非同期モードにすると、読み上げ終了前にメモリを解放するので使用しないでください。
 スクリプト自体がバックグラウンドで実行されれるので、あまり非同期読み上げのメリットは少ないと思われます。

【書式】
SpeechFlag = フラグ組み合わせ
【例】
SpeechFlag=9
追加情報

SpeechVolume

 Speechコマンドでの読み上げ時の声の音量を指定します。(0-100)
 初期値は100です。
※Speechコマンドの前にセットしておくこと。

【書式】
SpeechVolume = 読み上げ音量
【例】
SpeechVolume=70

SpeechRateSpeed

 Speechコマンドでの読み上げ時の声の速さを指定します。(0-20)
 初期値は10です。
※Speechコマンドの前にセットしておくこと。

【書式】
SpeechRateSpeed = 読み上げ速度
【例】
SpeechRateSpeed=18

任意のフォルダーの中からランダムに1つだけ取得

Random

 指定ディレクトリ直下のファイル名もしくは、フォルダー名をランダムで返します。
 存在しないディレクトリを指定したり、下位階層に何も存在しない場合、ワイルドカード指定で1件もヒットしない場合は空文字を返します。
 BackgroundImageやPlayWavのように、遊び要素のあるコマンド類と組み合わせて使用することを想定しています。
  1. ディレクトリの走査上限数は1000件で、それ以上のファイルが存在しても無視します。
  2. 乱数種は厳密なものではないので、厳密性が求められる用途には使用しないでください。
  3. 走査フォルダーが空の場合は、空文字を返します。

【書式】
var 変数=Random,[フルパスディレクトリ名/フルパスのワイルドカード指定]

【例】
var 変数=Random,C:\Image\*.jpg
var 変数=Random,C:\Image\
var 変数=Random,C:\Image
var $起動時イベントで音鳴らすスクリプト$ = Random,C:\sound
PlayWav = $起動時イベントで音鳴らすスクリプト$

//10分おきに呼び出すイベントスクリプトに登録する例
var $背景画像$ = Random,C:\階層を作ってたくさん画像を放り込んでるフォルダー
var $IsFile$
RETRY:
if $背景画像$ ==
	MessageboxOK = 空のディレクトリだったので中断!
	exit
endif
$IsFile$ = IsFile,$背景画像$
if $IsFile$ == 0
	//取得したものがディレクトリだったので、更に下位階層を探索する
	$背景画像$ = Random,$背景画像$
	goto RETRY
endif
BackgroundImage = All,4,200,0,$背景画像$

システム情報の取得

GetSystemMetrics

 MoveWindowコマンドと連携するために用意されたコマンドです。
 システムの様々な表示要素の幅と高さと、システムの現在の構成値を取得します。
【書式】
変数 = GetSystemMetrics,取得情報を表す数値
【例】
var $value$ = GetSystemMetrics,1

追加情報

MainWindowPosition

 MoveWindowコマンドと連携するために用意されたコマンドです。
 本体のウィンドウ座標を返します。
 本コマンドはGetWindowPlacement()というWindowsのAPIを使用しているため、Windows10でAerpテーマを使用している場合は他のOSとは異なる値を返してきます。
 OS同梱のexeも完全には対応してない状況なので当面は今後の状況の推移を見守っております。
 その結果によっては、本スクリプトコマンドの仕様が変更される可能性があることをご了承ください。
【書式】
変数 = MainWindowPosition,[取得情報種別]
【例】
var $left$ = MainWindowPosition,1
【取得情報情報種別】
意味
1左上座標のX座標(left)
2左上座標のY座標(top)
3右下座標のX座標(right)
4右下座標のY座標(bottom)
5最小化されているか否か(0/1)
6最大化されているか否か(0/1)

ベンチマーク検証

 性能検査用のスクリプトコマンドです。
 ほぼ使うことは無いと思いますが、処理にかかった時間を計測するための機能です。

LogMessage

 ログバーにメッセージを送信します。
 MessageBox系やデバッグバーなどでも検証は可能ですが、ログバーの出力は処理を止めないという点が大きく異なります。
 ログ種別は「スクリプトスレッド」動作種別は「情報」で出力します。

【書式】
LogMessage=[送信文字列]
【例】
var %aaa%=ほげ
LogMessage=%aaa%

BenchStart/BenchStop

 ベンチマークテスト用のタイマーの初期化と経過時間の取得を行います。
 BenchStartで計測タイマーを初期化し、呼ばれるたびにリセットします。
 BenchStopを呼ぶことで、BenchStart~BenchStopが呼ばれるまでかかった時間(ミリ秒単位)を計測して変数に代入します。

【書式】
BenchStart
変数 = BenchStop

【例】
BenchStart
MessageBoxOk=適当に時間がかかる処理(BenchStart~1回目のBenchStopまでの時間)
var $a$ = BenchStop
MessageBoxOk=適当に時間がかかる処理(BenchStart~2回目のBenchStopまでの時間)
var $b$ = BenchStop
LogMessage=$a$ / $b$

その他

 分類できない、単発のコマンドをまとめました。
 地味ですが強力な機能が多いです。

CheckGrammar

 文法間違いなどで認識できないスクリプト行が存在した場合に、処理を続行するか否かの確認メッセージを表示する/しないを切り替えます。
 未設定の場合は、0が指定されています。
 制御スクリプトの作成時は、1を指定しておくと不具合の修正が楽になります。
 またデバッグエディタを指定し、処理を続行しない旨の「いいえ」を選択するとデバッグ用のテキストエディタを起動します。

※よそ様のエディタを用いて例示しているものは公開情報を元に記載しているので未検証です。
 間違っていたらご指摘ください。

【書式】
CheckGrammar=[0:チェックなし/1:チェックあり/デバッグエディタの指定]

【例】
CheckGrammar=1

【秀丸エディタでエラー発生行を開く例】
CheckGrammar=(インストールパス)\Hidemaru.exe /j?ErrorLine? "?ScriptPath??ScriptName?"

【EmEditorでエラー発生行を開く例】
CheckGrammar=(インストールパス)\EmEditor.exe "?ScriptPath??ScriptName?" /l ?ErrorLine?

【サクラエディタでエラー発生行を開く例】
CheckGrammar=(インストールパス)\sakura.exe "?ScriptPath??ScriptName?" -Y=?ErrorLine?

【Wz Editor7でエラー発生行を開く例】
CheckGrammar=(インストールパス)\WZ EDITOR 7\wzeditor.exe /j?ErrorLine? "?ScriptPath??ScriptName?"

EOF

 出現位置から後ろのスクリプトの読み込みを終了します。
 Exitと異なり、出現位置から後ろの変数定義やラベル定義も読み込まないので、スクリプト末尾以外で使用しないでください。
 スクリプトファイルの末尾に、コメントを挿入する目的と、不要な読み込みを明示的に終了させることができるように用意されています。

【書式】
Eof

Exit

 呼ばれた時点でスクリプトの実行を終了します。
 ループ内から強制終了したり、処理の分岐結果などでスクリプトを中断したい場合に使用します。
 EOFとは異なり、以降も字句解析の対象となります。

【書式】
Exit

Icon

 明示的なアイコンファイルの指定です。未指定の場合はRun節のアイコンを取得します。
 なお、Icon節で指定した方がアイコンキャッシュの生成にかかる速度面で有利に働きます。
 またIconとRunは先に出てきた方を採用するので、極力ファイルの先頭に記述することを推奨します。
 こちらはマルチアイコンファイルに対応しております。カンマ区切りでアイコンインデックスを記載してください。

【書式】
Icon=[アイコン画像を取得するパス<,アイコンインデックス>]

【例】
Icon=C:\WINDOWS\explorer.exe,5

MoveWindow

 メインウィンドウを指定された座標に移動します。
※Windows10でAeroが有効な場合、他のOSとは表示位置が若干ずれる可能性があることをご注意ください。

【書式】
MoveWindow=[left],[top],[width],[height]

【例】
MoveWindow=0,0,800,600

PlayWav

 Wavファイルを非同期で再生します。
 必殺技を叫びながらコマンドを実行するための機能です。
 要望に沿って作られたものですが、現在利用されているかは定かではありません。

【書式】
PlayWav=[wavファイルのフルパス]

【例】
PlayWav=c:\test\test.wav

Select

 リスト上に表示されているアイテムを選択します。(実体名で比較します)
 ワイルドカードを使用することで部分一致の検索が可能です。
 また、セミコロンで区切って複数指定することが可能です。
 実体名をもたない仮想アイテムは、必ずヒットしません。

【書式】
Select=[選択するファイル名]

【例】
Select=*.cpp;*.h

Wait

 この記述が見つかったタイミングで、ミリ秒単位で指定するウェイトです。
 (RunWaitとは動作のタイミングが異なります)
 ファイル出力直後からOSが認識するタイムラグを待ったり、アプリケーションの連続起動で誤動作することを抑制したりします。
 主に前述のPostMessageの待機時間の調整を主目的にしています。
 連続でアプリケーションを起動した場合、DDE通信が追いつかなくて誤動作を起こすアプリケーションがある場合に使用します。
 参考までに、MS-Office製品やWZ Editorなどでウェイトを入れた方が良いバージョンがあります。

【書式】
Wait=[ウェイト(ミリ秒)]

【例】
Wait=50

ListInnerParam

 アクティブなリストの内部情報を書き換えます。
 パラメータの変更だけなので、再描画はされないことをご注意ください。
 (内部情報を操作するコマンドなのでVer.5以降しか動作しません)

【書式】
ListInnerParam=[パラメータ番号][変更値]

【例】
ListInnerParam=1,0(一覧モードのファイル名のテキスト幅を0にして自動調整モードにする)
postmessage=33301(パラメータだけを変えても再描画されないので、最新の状態へ更新コマンドを発行)

パラメータ番号変更するパラメータ
1ファイル名のテキスト幅(一覧/詳細一覧のみ反映)数値
2拡張子のテキスト幅(詳細一覧のみ反映)数値
3サイズのテキスト幅(詳細一覧のみ反映)数値
4日付のテキスト幅(詳細一覧のみ反映)数値
5属性のテキスト幅(詳細一覧のみ反映)数値

Include

 外部スクリプトを実行し、外部スクリプトの実行が終わると、現在行に戻ってきます。
 共通的な変数の定義や、サブルーチン化したスクリプトの呼び出しなどに使用することを想定しています。

※呼び出した外部スクリプトは、変数定義と選択アイテムの情報のみ、呼び出し元のスクリプトから引き継ぎます。
 特に変数は、多重定義にならないようにご注意ください。
※再帰チェックはしないので、自分自身を呼びだす際にはスタックオーバーフローにならないように注意してください。
※State系の置換マクロは呼び出された側で、再度取得されます。
※Ver.5.3.0で追加されたコマンドです。

【書式】
Include=スクリプトのフルパス

【例】
・親スクリプトの記述
var $test$=親スクリプトで定義した変数 Include=c:\test\script\test_script.txt
Include=c:\test\script\test_script.txt

・test_script.txtの記述
MessageBoxOK = $test$
$test$ = 子スクリプトで値を格納した変数

ExitAll

 スクリプトの実行を終了します。
 Exitとの違いは、Includeで呼び出した外部スクリプトの中であってもExitAllの出現時点で終了します。

※呼び出したスクリプトへ戻りません。処理を戻す必要がある場合は、Exitを使用してください。
※Ver.5.3.0で追加されたコマンドです。

【書式】
ExitAll

UpdateState

 通常はスクリプト呼び出し直後の値を保持するState系の置換マクロですが、この内容を最新の状態に更新します。

※State系の置換マクロは固定された値ではないので、常に現在アクティブなビューのアクティブリストを対象とします。
 特に画面分割していたり、すばやくタブを切り替える場合は十分ご注意ください。
※Ver.5.3.0で追加されたコマンドです。

【書式】
UpdateState
【例】
MessageBoxOK = 選択数:?State:SelectedCount?
Select = *.txt
UpdateState
MessageBoxOK = 選択数:?State:SelectedCount?

BackgroundImage

 各種リストコンポーネントの背景画像を指定します。
 bmp,png,jpg,gif,tif,emf,ico,wmfは表示できます。
※画像を縮小する場合はサムネイルエンジンを使うので、これ以外に動画なども表示可能です。
※Ver.5.5.0で追加されたコマンドで、Ver.4系では動作しません。

【書式】
BackgroundImage = [ターゲット], <[描画方法], [X座標オフセット], [Y座標オフセット], [画像のフルパス]>
項目説明
ターゲット Now 現在アクティブなリスト(画面分割時には両方に送信)
One現在アクティブなリスト(画面分割時にはアクティブ側のみ送信)
All全てのリスト
0~8ユーザー定義バー
描画方法 0 原寸位置指定描画
座標位置を100分率で指定
スクロールの影響を受ける< /td>
1原寸位置指定タイル描画
並べて表示
1枚目の描画位置に座標が100分率で適用される
2 原寸で右下端固定
座標は無視する
スクロールの影響を受けない
3 原寸で右下端固定
座標は無視する
スクロールの影響を受けない
32ビットBMP/透過GIF/透過PNGなどのアルファブレンド情報を持つ画像を表示する
4 縮小して右下端固定
座標を画像のピクセルとみなし、これに収まるように画像を縮小する
本縮小画像はサムネイルエンジンを使っているので動画やファイルアイコンなども表示できる
画像は潰れる、アスペクト比を完全には保持しないので鑑賞用には向かない
邪魔にならないような、マスコット表示的な使い方を想定
X座標 原寸表示の場合は位置を示す100分率(0~100)
縮小表示の場合は画像幅(0~65535)
左端を基点とした百分率で配置を指定
100%にすると右端になる
Y座標 原寸表示の場合は位置を示す100分率(0~100)
縮小表示の場合は画像幅(0~65535)
上端を基点とした百分率で配置を指定
100%にすると下端になる
画像のフルパス パス指定 画像ファイルのフルパス

【例】
画像指定解除
BackgroundImage = All
BackgroundImage = Now

画像を指定(全部のリスト中央の下に描画)
BackgroundImage = All,0,0,50,100,c:\test\image.bmp

先頭の選択ファイルを指定(ランチャの右下あたりに描画)
for
BackgroundImage = 0,0,100,90,?selfile?
break
next

CreateRestoreScript

前回終了時の情報を保存する機能は、Ver.15にて廃止になりました。

CreateNowRestoreScript

CreateRestoreScriptの代替機能です。
指定されたファイル名で、現在のタブ構成の復元スクリプトを作成します。
出力モードの指定により、4種類の復元スクリプトを生成できます。
復元スクリプトの詳細については「復元スクリプト詳細」を参照ください。

【書式】
CreateNowRestoreScript=[出力モード],出力ファイルのフルパス
出力モード
1現在のタブ
2全てのタブ
3一旦閉じる+全てのタブ
4タブセット
【例】
var $保存するタブセット名$=input,保存するタブセット名を入力してください
CreateNowRestoreScript=4,?nowdir?\$保存するタブセット名$_?Date?-?Hour?-?Minute?-?Second?.txt

ActiveTabNo

タブバー上にあるタブの何番目を選択状態にするかを指定する。。
※アクティビティ切り替え用の復元スクリプトにて、アクティブタブをセットする目的で作られたものです。
 並列/遅延で動作する、まとめてタブを閉じる系/まとめて新たにタブを開く系の動作と極めて相性が悪く、確実な実用性を約束するものではありません。
 タブの個数を数え間違え、意図しないタブが選択される場合があるのでご注意ください。
 サンプルは「復元スクリプト詳細」を参照ください。

【書式】
ActiveTabNo=[タブバーの並び順で何番目かを指定]
【例】
ActiveTabNo=11

関連項目
基本的なスクリプトコマンド
スクリプトコマンドリファレンス
スクリプトの制御構文

置換マクロリファレンス
置換マクロ対応表
実行コマンドの違い一覧
定義系コマンド一覧
ウィンドウ制御文字列の書式
復元スクリプト詳細