スクリプト(Ver1.23対応版)
ブックマークツールにスクリプトを指定できます。
ブックマークやツールのパスの部分の記述によって秀丸ファイラーClassic独自のオブジェクトが使えるスクリプトにできます。
JScript/VBScriptのスクリプトエンジンを利用できます。

●パスの先頭に書く文字列
「js:」→JScriptを利用
「vbs:」→VBScriptを利用
例:「vbs:message "test"」
例:「js:Message("test");」

●「:」の後に書く文字列
スクリプトを直接記述できます。直接記述の場合は記述できる文字数には限界があります。
例:「js:Message("a");Open("c:\\");」
またはファイル名を記述するとファイルを参照します。ファイル参照の場合は限界は無いです。
例:「vbs:C:\folder\test.vbs」
例:「js:C:\folder\test.js」

●オブジェクトの説明
strは文字列、numは数値、[]は省略可。
bool値はvbsとjsで値が違うので原則使いません。真偽を表す場合は数値で1が真、0が偽としています。

グローバル
 オブジェクトを書かなくてもそのまま記述できます。(実際はHmFilerオブジェクト)
メソッド
Echo( str )メッセージボックスを表示。
Message( str [, num] ) メッセージボックスを表示。
numは省略可能でvbsのMsgBoxの第2パラメータ相当(V1.04)。
Question( str )YESかNOかを問い合わせ。戻り値で判定。
Beep()ビープ音を鳴らす。
EndMacro()スクリプト中断。
Command( num or str )コマンド値またはコマンド名によるコマンド実行。参照:コマンド一覧
ContextMenu( str1 [, str2] ) 選択中のファイルのコンテキストメニューに、str1の文字列と一致するメニューがあればメニューを実行する。(V1.02)
(例:"コピー(&C)"や"プロパティ(&R)")
または一致する動詞(Verb)があれば実行する。
(例:"copy"や"propaties")
サブメニューの場合str1で一致するサブメニュー名と、str2でサブメニュー内のメニュー項目名を指定。
(例:ContextMenu("プログラムから開く(&H)","フォト");)
一致するものが無ければ無視する。
SendTo( str ) strで指定するパスに選択中のファイルを送る。(V1.02)
絶対パスでない場合は%userprofile%\SendToにあるファイルと解釈する。
SelectAll()「全て選択」コマンド。
Cut()「切り取り」コマンド。
Copy()「コピー」コマンド。
Paste()「貼り付け」コマンド。
PasteLink()「ショートカットの貼り付け」コマンド
Open( str [, num1 [, num2 [, num3] ] ] ) strのパスを開く(*やファイル選択も可)。
num1は新規タブなどの指定(0〜6,省略可)。
 0:普通に開く 1:新規タブ 2:新規タブ(既存はアクティブ) 3:新規タブ(裏で) 4:新規タブ(裏で/既存はなし) 5:新規分割 6:普通に開く(既存はアクティブ)
num2はタブ挿入位置指定(0〜3,省略可)。
 0:右端に追加 1:左端に追加 2:右に挿入 3:左に挿入
num3はツリーのサブフォルダを展開方法(0〜2,省略可)
 0:既定 1:展開しない 2:展開する
Refresh( [num] ) 「最新の情報に更新」コマンド。
numに1を指定すると「最新の情報に更新(フォーカス)」コマンド相当。(V1.01)
CloseOtherTab() 他のタブを全て閉じる。
他のタブでロックしているタブも閉じます。
GetView()表示方法の取得。
SetView( num ) 表示方法の指定(0〜4)。
 0:詳細 1:一覧 2:アイコン 3:並べて表示 4:縮小版
Sort( num1 or str1 [,num2] ) ソート。
num1で数値で指定する場合は0〜3。
 0:名前 1:サイズ 2:種類 3:更新日時
str1で文字列で指定する場合は"name"/"size"/"type"/"date"またはカラム名。
num2はソート方向(0〜2,省略可)。
 0:反転 1:昇順 2:降順
 num2を指定してstr1で""を指定すると現在のソートカラムが対象。(V1.01)
GetItemCount()ファイル一覧の項目の個数を返す。
GetSelectedCount()選択された個数を返す。
GetNextItem( num1, num2 ) num2で指定する状態フラグに該当する次の項目のインデックスを返す。num1が-1で最初のヒット、0以上でその次。
例:最初の選択項目 iSel = GetNextItem(-1,2);
  最初のフォーカス項目 iFocus = GetNextItem(-1,1);
GetItemState( num ) numのインデックスの項目の状態フラグを返す。(論理和)
0x01:フォーカス,0x02:選択,0x04:新しいファイル(色の設定が有効なとき)
GetItemText( num1 [, num2] )num1のインデックスの項目のテキストを返す。num2はサブ項目(0〜,省略可)。
GetItemPath( num )numのインデックスの項目のパスを返す。
IsFolder( num ) numのインデックスの項目がフォルダであるかどうかを返す。フォルダの場合数値の1、フォルダでない場合数値の0。
注意:V1.00でドライブや「マイコンピュータ」など、フォルダツリーとして現れるものも1が返っていましたが、V1.01でファイルシステム上のディレクトリ、またはファイルを列挙できる場所(c:\や\\pc\share)の場合に1を返すように仕様変更。
GetColumnCount()詳細表示時のカラム数を返す。
GetColumnText( num )カラムのテキストを返す。
SetClipboard( str )文字列をテキスト形式でクリップボードにコピー。
GetDirectory()現在のパスのあるフォルダ(=ディレクトリ)を返します。
SelectItem( num1 or str1 [, num2] ) 第1パラメータで文字列指定の場合:
「検索して選択...」コマンドと同じ挙動をします。
(現在のフォーカス以降にあるファイル名の中に文字列が含まれるものを選択し、該当が複数あれば順番に選択。最後の場合は選択解除)
num2に0x02を含む場合は、「検索して選択...」コマンドと同じではなく、拡張子を含んだ完全に一致する項目を選択します。
num2は選択する方法を指定します。(論理和)
0x01:追加選択
0x02:ファイル名に完全一致するもの(拡張子非表示でも)(V1.01)
第1パラメータで文字列指定でワイルドカードの場合:
ワイルドカード指定の場合はワイルドカードで複数選択。
num2は選択する方法を指定します。
0x01:追加選択
第1パラメータで数値指定の場合:
インデックス指定の選択。
num2は選択する方法を指定します。
0x01:追加選択
AddBookmark( str1, str2 [,str3 [, num1] ] ) ブックマークに追加します。
str1は表示名。str2はパス。str3はアイコンのパスとインデックス(例:"hmfilerclassic.exe,1")。
num1はリンクバーの表示(0〜3)
 0:アイコンとテキスト 1:アイコンのみ 2:テキストのみ 3:表示しない
GetFocusTarget() 現在フォーカスのあるウィンドウの種類を返します。
1でファイル一覧、2でフォルダ枠(またはタブごとのフォルダ枠)、0でそれ以外。
GetKeyState( num1, num2 ) キーボードの状態を取得します。
num1には仮想キーコードを指定します。(例:0x10はVK_SHIFT/0x11はVK_CONTROL/0x04はVK_MBUTTON)
num2が0の場合Win32APIのGetKeyStateと同じです。
num2が1の場合リンクバーなどのボタンを押したときの中ボタンの状態が取得できます。
num2が2の場合Win32APIのGetAsyncKeyStateと同じです。
返り値は0x8000のビットがキーが押されているか。0x0001のビットがキーのトグル状態。
(例:if(GetKeyState(0x04,1)&0x8000){...})
ExpandFolder( str[, num1 [, num2] ] ) フォルダツリーを選択せずに展開/折りたたみします。(V1.01)
strは対象のパス。
num1は展開方法。(省略可)(論理和)
 0x01:画面内に入るようにスクロール
 0x02:サブフォルダを折りたたむ
 0x04:テンキーの「*」による展開相当
num2はnum1で0x04指定時の深さ。(省略可)
 明示的に指定した深さまで展開します。
 0または省略時は2と同等で、既に展開完了時は1つずつ階層を掘り下げていきます。
GetTabBarCount() タブバーの数を取得します。(V1.01)
0のときタブモードではないです。1以上でタブモードです。2以上はタブが分割しているかを判断できます。
GetTabCount( [num] ) タブの数を取得します。(V1.03)
numは分割されている場合、どの分割かを指定します。左/上の分割を0として数えます。
numに-1を指定すると、現在フォーカスのある分割のタブの数を返します。
numに-2を指定すると、全ての分割を合計したタブの数を返します。
省略すると-2と同じです。
GetTabState( num1, num2 ) タブの状態を取得します。(V1.04)
num1はタブの番号です。
タブの番号は全ての分割の通し番号で、0から数えます。
num2は取得する状態を種類を指定します。
0はロック状態、1は閉じるのを禁止の状態、2はタブごとの親を指定している場合の親のパスです。
GetCurrentTab( [num] ) 現在アクティブなタブの番号を取得します。(V1.03)
タブの番号は0から数えます。
numは分割されている場合、どの分割かを指定します。左/上の分割を0として数えます。
numに-1を指定すると、現在フォーカスのある分割のアクティブなタブの番号を返します。
numに-2を指定すると、フォーカスのあるタブの、左/上の分割から数えた全ての分割の通し番号を返します。
省略すると-2と同じです。
Sleep( num )一定時間待つ(ms)。CPU停止するわけではなく、非同期処理がある場合はその間処理する。
GetWildcard() 現在のフィルタ(ワイルドカード)を返します。(V1.03)
SetWildcardはありません。設定はOpen("*.xxx");という感じで設定します。
GetClipboardFiles() クリップボードにファイルがコピーされている場合、ファイルのパスの配列を返します。(V1.03)
クリップボードがテキストなどファイル以外の内容の場合は要素数が0以下(0や-1)になります。
パスが無い場所(「コンピュータ」など)をコピーしている場合は取得できません。
配列は、いわゆるSAFEARRAYという種類の配列です。jsの場合はtoArrayで変換するとArrayオブジェクトとして扱えます。
vbsの例:
varSafeArray = GetClipboardFiles
numFiles = UBound(varSafeArray) '要素数
strPath = varSafeArray(0) '要素0〜numFiles-1
jsの例:
varSafeArray = GetClipboardFiles();
objArray = varSafeArray.toArray();
numFiles = objArray.length; //要素数
strPath = objArray[0]; //要素0〜numFiles-1
 
プロパティ
Versionバージョン番号。V1.23β45の場合123045。(取得のみ)
Busy非同期処理が処理中であるかどうか。(取得のみ)
ScriptFullNameスクリプトファイルの自身のファイル名。(取得のみ)(V1.11)

Configオブジェクト
プロパティ
HiddenVisible隠しファイル表示の状態の数値(取得/設定)
CheckBoxチェックボックス表示の状態の数値(取得/設定)
TrackSelect 「ポイントして選択し、シングルクリックで開く」の状態の数値(取得/設定)
0で通常、1でポイントして選択、2でポイントして選択で常に下線。
SplitMode 分割方向(取得/設定)(V1.01)
1で上下、2で左右。現在分割しているかどうかはGetTabBarCountで取得します。
MixSortソートで「フォルダとファイルを区別しない」かどうか(取得/設定)(V1.01)
AlwaysFolderUpperソートで「フォルダを常に上位にする」かどうか(取得/設定)(V1.01)
StandardButtonsBar標準のボタンの表示状態(取得/設定)(V1.02)
AddressBarアドレスバーの表示状態(取得/設定)(V1.02)
LinkBarリンクバーの表示状態(取得/設定)(V1.02)
ToolItemBarツール項目バーの表示状態(取得/設定)(V1.02)
FilterBarフィルタバーの表示状態(取得/設定)(V1.02)
DriveBarドライブバーの表示状態(取得/設定)(V1.02)
StatusBarステータスバーの表示状態(取得/設定)(V1.02)
ThumbnailSize縮小版のサイズ(取得/設定)(V1.02)

ConfigSystemオブジェクト
プロパティ
SystemVisibleシステムファイル表示(Windows共通)の状態の数値(取得/設定)
ExtVisible拡張子表示(Windows共通)の状態の数値(取得/設定)

●その他
「WScript」というオブジェクトは無いです。
他のオブジェクト作成は JScriptでは new ActiveXObject、VBScript では CreateObject が使えます。
「js:」は「jscript:」または「javascript:」と書いてもいいです。
「vbs:」は「vbscript:」と書いてもいいです。

「script:」と書いてファイル指定時は拡張子に関連付けされているスクリプトエンジンを利用します。
例:「script:C:\folder\test.vbs」
例:「script:C:\folder\test.js」
(他のスクリプトエンジンは動作確認はしていないです)

スクリプトの例







戻る