[ヘルプ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]
フォルダーバーのオプションを表示 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 = [パラメータ番号]
FileWriteA
指定された文字列をASCIIコードで出力する。(日本語環境の場合はSJISで出力されます)
改行コードはCRLFで自動付与されます。 FileOpenでファイルを開いていないとエラーメッセージが表示されます。 ※主にDOSコマンドなどにファイルを渡す目的で用意されています 【書式】 FileWriteA = 出力文字列 FileWriteW
指定された文字列をUNICODEで出力する。(BOMは出力されません)
改行コードはCRLFで自動付与されます。 FileOpenでファイルを開いていないとエラーメッセージが表示されます。 ※主にAs/R用のスクリプトを生成する目的で用意されています 【書式】 FileWriteW = 出力文字列 BomOut
直後のFileWriteWコマンドに対して、先頭にBOMを出力するか否かを指定します。
Includeで別のスクリプトファイルにまたがることはできません。 ※直後のFileWriteWにしか影響を与えないので、一度FileWriteWを実行してしまうと未指定状態に戻ります。ご注意ください。 【書式】 BomOut = [パラメータ番号]
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
タブ情報
タブの保持している情報を取得します。
スクリプトが動いているスレッドと、画面のスレッドは独立しており、スクリプトで取得できる情報と画面が一致しなくなる場合がありうると言うことにご注意ください。 前述の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のように、遊び要素のあるコマンド類と組み合わせて使用することを想定しています。
【書式】 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 【取得情報情報種別】
ベンチマーク検証
性能検査用のスクリプトコマンドです。
ほぼ使うことは無いと思いますが、処理にかかった時間を計測するための機能です。 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(パラメータだけを変えても再描画されないので、最新の状態へ更新コマンドを発行)
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座標オフセット], [画像のフルパス]>
【例】 画像指定解除 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=[出力モード],出力ファイルのフルパス 出力モード
var $保存するタブセット名$=input,保存するタブセット名を入力してください CreateNowRestoreScript=4,?nowdir?\$保存するタブセット名$_?Date?-?Hour?-?Minute?-?Second?.txt ActiveTabNo
タブバー上にあるタブの何番目を選択状態にするかを指定する。。
※アクティビティ切り替え用の復元スクリプトにて、アクティブタブをセットする目的で作られたものです。 並列/遅延で動作する、まとめてタブを閉じる系/まとめて新たにタブを開く系の動作と極めて相性が悪く、確実な実用性を約束するものではありません。 タブの個数を数え間違え、意図しないタブが選択される場合があるのでご注意ください。 サンプルは「復元スクリプト詳細」を参照ください。 【書式】 ActiveTabNo=[タブバーの並び順で何番目かを指定] 【例】 ActiveTabNo=11 関連項目 ・基本的なスクリプトコマンド ・スクリプトコマンドリファレンス ・スクリプトの制御構文 ・置換マクロリファレンス ・置換マクロ対応表 ・実行コマンドの違い一覧 ・定義系コマンド一覧 ・ウィンドウ制御文字列の書式 ・復元スクリプト詳細 |