FolderView(ShellBrowser)リファレンス

Tablacus Explorer のファイルビュー(te.Ctrl(CTRL_FV) などで取得できる ShellBrowser オブジェクト)のリファレンスです。

記法: P=プロパティ(FV.Name で読み、FV.Name = v で書く)、M=メソッド(FV.Name(...))。 Columns / SortColumn / CurrentViewMode / FilterView のように、実装がプロパティ・メソッド両方に対応するものは「P/M」と表記します。

目次

  1. 取得方法
  2. ナビゲーション
  3. 表示モード・設定
  4. アイテムの取得・選択
  5. 列・ソート・グループ・フィルタ
  6. ウィンドウ・タブ・関連オブジェクト
  7. アイテムの動的追加・削除(検索結果ビュー等)
  8. カスタマイズ用プロパティ
  9. 通知・内部用メソッド
  10. 定数
  11. 廃止・内部用

1. 取得方法

const FV = te.Ctrl(CTRL_FV);              // 現在のタブのビュー
const arFV = te.Ctrls(CTRL_FV, true);     // 表示中のビューすべて
const FV2 = te.CtrlFromWindow(hwnd);      // hwnd から
const FV3 = te.CtrlFromPoint(pt);         // 座標から

各イベント(OnBeforeNavigate など)の引数としても渡されます。


2. ナビゲーション

名前 種別 説明
Navigate(Path [, wFlags]) M 指定のパス/FolderItem/FolderItems へ移動する。wFlags は SBSP_*(下記)。移動先が別のビューになった場合はそのビューを、そうでなければ自身を返す
Navigate2(Path [, wFlags [, Type, ViewMode, FolderFlags, Options, ViewFlags, IconSize, TreeAlign, TreeWidth, TreeFlags, EnumFlags, RootStyle, Root]]) M 表示設定を指定して移動する。第3引数以降は SB_* の並び順(下表)で指定(TreeAlign を 0 にするとそこで打ち切り=以降は既定値)。移動後のビュー(FV)を返す
History P 履歴を FolderItems で返す(現在位置が Index、最新が先頭)。History = Path は Navigate と同様に動作する
FolderItem P(読み) 現在表示中のフォルダ(FolderItem)
Refresh([n]) M 再読み込みする。n が0以外で非表示のビューなら、表示されたときに実行する
NavigateComplete() M ナビゲーション完了待ちの状態を解除し、必要ならビューウィンドウを表示する(内部処理用)
Focus() M このビューをアクティブにし、タブを切り替える
Close() M このタブを閉じる。結果を真偽値で返す(閉じられない場合の条件は要確認)。タブコントロールがロック中でなければ配置を更新する
Suspend([mode]) M ビューを破棄してメモリを解放する(タブは残す)。0/省略=通常、1=ツリーも閉じる、2=「利用不可」状態にする、4=軽量(m_nUnload=8)

Navigate2 の引数順(第3引数以降):

順 引数 内容
1 Type CTRL_SB(1)または CTRL_EB(2)。それ以外は CTRL_SB
2 ViewMode FVM_*
3 FolderFlags FWF_*
4 Options ExplorerBrowser オプション(EBO_*)
5 ViewFlags ビューフラグ(Tablacus 独自)
6 IconSize アイコンサイズ
7 TreeAlign ツリーの位置(0で無効)
8 TreeWidth ツリーの幅
9 TreeFlags ツリーのフラグ
10 EnumFlags 列挙フラグ(SHCONTF_*)
11 RootStyle ルートの表示方法
12 Root ツリーのルート
FV.Navigate("C:\\Windows", SBSP_SAMEBROWSER);
FV.Navigate(null, SBSP_PARENT | SBSP_SAMEBROWSER);       // 上へ
FV.Navigate(null, SBSP_NAVIGATEBACK | SBSP_SAMEBROWSER); // 戻る
const newFV = FV.Navigate("C:\\", SBSP_NEWBROWSER);       // 新しいタブ

3. 表示モード・設定

名前 種別 説明
Type P CTRL_SB(1)か CTRL_EB(2)。変更するとレイアウトが再判定される(他の値は無視)
CurrentViewMode P/M ビューモード(FVM_*)。FV.CurrentViewMode = FVM_DETAILS
SetViewMode(mode [, iconSize]) M ビューモードを設定。2つ目を渡すとアイコンサイズも設定する。現在のビューモードを返す
IconSize P アイコンサイズ(px)。ビューが作成済みの場合に有効。変更時はシェルビューへ反映される
FolderFlags P FWF_*(フォルダ表示フラグ)。FWF_NOENUMREFRESH / FWF_USESEARCHFOLDER / FWF_SNAPTOGRID 以外のビットが変わるとビューへ反映される
Options P ExplorerBrowser のオプション(EBO_*)。CTRL_EB では設定が直接反映される
ViewFlags P Tablacus 独自のビューフラグ(保持するのみ。意味はスクリプト側の定義による)
SizeFormat P ファイルサイズの表示形式。変更時にリストが再描画される
Title P タブのタイトル(文字列)。取得時は & のエスケープを外して返す。タブが無いビューでは何も返らない
Index P タブ内の位置(0始まり)。代入するとタブを移動する
Id P(読み) ビューの識別番号(te.Ctrl(CTRL_FV, id) の id と対応する)
SessionId P(読み) 現在のフォルダのセッションID(ナビゲーションごとに変わる)。AddItem/AddItems の整合確認用
Parent P(読み) 親オブジェクト(通常は所属する TabCtrl)
Data P スクリプトが自由に保持できる値

4. アイテムの取得・選択

名前 種別 説明
Items([flags [, bArray]]) M ビューのアイテムを FolderItems で返す。flags は SVGIO_*(省略時 SVGIO_ALLVIEW \| SVGIO_FLAG_VIEWORDER)。bArray が真なら SafeArray を返す
SelectedItems([bArray]) M 選択中のアイテムを FolderItems で返す。bArray が真なら SafeArray
ItemCount([flags]) M アイテム数を返す。flags 省略時は SVGIO_ALLVIEW。SVGIO_SELECTION なら選択数
Item(index) M index(0始まり、ビュー表示順)のアイテムを FolderItem で返す
FocusedItem P(読み) フォーカスのあるアイテム(FolderItem)
GetFocusedItem() M フォーカスのあるアイテムのインデックスを返す(整数)
SelectItem(item, flags) M アイテムを選択する。item は FolderItem・パス・インデックス(数値)・FolderItems。flags は SVSI_*。FolderItems を渡すと全件選択し、SVSI_FOCUSED などは先頭のみに適用される
GetItemPosition(item, pt) M アイテムの位置を pt(POINT のMemory)に書き込む。HRESULT を返す
SelectAndPositionItem(item, flags, pt) M アイテムを選択し、座標 pt へ配置する(アイコン表示用)。HRESULT を返す
GetItemRect(item, rc [, type]) M アイテムの矩形を rc(RECT のMemory)に書き込む(type は LVIR_*、省略時 LVIR_BOUNDS)。リストビューのあるビューのみ有効。HRESULT を返す
HitTest(pt [, flags]) M スクリーン座標 pt にあるアイテムのインデックスを返す(無ければ負値)。flags 省略時 LVHT_ONITEM。flags を省略した場合のみ、見つかったアイテムを FolderItem で返す
ViewMenu([flags]) M ビューのコンテキストメニュー(ContextMenu オブジェクト)を返す。flags 省略時は SVGIO_BACKGROUND(背景のメニュー)
TranslateAccelerator(hwnd, msg, wParam, lParam) M シェルビューにアクセラレータ処理を依頼する。HRESULT を返す
const items = FV.SelectedItems();
for (let i = 0; i < items.length; ++i) {
    const path = items[i].Path;
}
for (let i = 0; i < items.Count; ++i) {
    const path = items.Item(i).Path;
}
FV.SelectItem(FV.Item(0), SVSI_SELECT | SVSI_FOCUSED | SVSI_ENSUREVISIBLE | SVSI_DESELECTOTHERS);

5. 列・ソート・グループ・フィルタ

名前 種別 説明
Columns P/M 現在の列を文字列で返す(GetColumns(format) として使うと形式を指定できる)。文字列を代入すると列構成を設定する。シェルビュー(DefView)が未作成の間は何も返さない
GetColumns([format]) M Columns と同じ(取得用)。format で出力形式を指定
MapColumnToSCID(index, format) M 列インデックスに対応するプロパティ名を返す
SortColumn P/M ソート列を文字列で返す(GetSortColumn(format) として使うと形式を指定できる)。文字列を代入するとソートする
GetSortColumn([format]) M SortColumn と同じ(取得用)
GroupBy P グループ化の列を文字列で取得/設定する
AltSortColumn P 代替ソート列(文字列)。ファイル列挙完了後に再適用される
FilterView P/M フィルタ文字列。プロパティ代入でフィルタ文字列を設定し OnFilterChanged を呼ぶ。メソッド呼び出し FV.FilterView("text")(または FV.Search("text"))は検索フィルタを実行する(OnFilterView が登録されていればそちらを先に呼ぶ)
Search(text) M FilterView のメソッド版(検索の実行)

6. ウィンドウ・タブ・関連オブジェクト

名前 種別 説明
hwnd P(読み) ビュー全体のウィンドウハンドル(api 関数に渡す)
hwndView P(読み) シェルビュー(DefView)のハンドル
hwndList P(読み) リストビュー(SysListView32)のハンドル
hwndAlt P 代替ウィンドウのハンドル。設定するとビュー領域に配置される
TreeView P(読み) このビューのツリー(CTRL_TV)
ShellFolderView P(読み) シェルのフォルダビュー(IShellFolderView)ディスパッチ
Droptarget P(読み) 現在のフォルダへのドロップターゲット(DropTarget オブジェクト)

7. アイテムの動的追加・削除(検索結果ビュー等)

検索結果フォルダなど、プログラムでアイテムを制御するビュー用です。

名前 種別 説明
AddItem(item [, sessionId]) M アイテムを1つ追加する。sessionId を指定した場合、現在の SessionId と一致しなければ失敗(E_ACCESSDENIED)する
AddItems(items [, bDeleted [, OnCompleted]]) M 配列/FolderItems のアイテムを別スレッドで追加する。bDeleted=真で追加ではなく削除として扱う。第3引数が関数オブジェクトなら完了時に呼ばれ、真偽値なら NavigateComplete を実行するか決める。ステータスバーに処理中メッセージが表示される
RemoveItem(item) M アイテムを削除する(検索結果ビュー等)。HRESULT を返す(S_OK で500ms後にステータス更新)
RemoveAll() M 全アイテムを削除する。戻り値は結果コード

8. カスタマイズ用プロパティ

JavaScript のオブジェクトまたは関数を代入して、ビュー単位で動作を差し替えます。

名前 説明
TotalFileSize フォルダサイズのキャッシュ用オブジェクト。キーはパス、値は合計サイズ。ナビゲーションごとに新しい空のオブジェクトに置き換わる
ColumnsReplace 列名をキーに、列の表示内容を差し替えるオブジェクト。te.ColumnsReplace より優先される
OnIncludeObject アイテムをフィルタするコールバック。FilterView を設定すると解除される
AltSelectedItems SelectedItems の代替として扱う FolderItems。設定されていると ItemCount(SVGIO_SELECTION) がこの Count を返す

9. 通知・内部用メソッド

名前 説明
Notify(event, item1 [, item2 [, bTotalFileSize]]) シェル変更通知(SHCNE_*)をビューに伝える。event が名前変更(SHCNE_RENAMEITEM/SHCNE_RENAMEFOLDER)なら item2 も使用。bTotalFileSize が真なら該当アイテムのフォルダサイズを再計算、偽/省略なら TotalFileSize のキャッシュを破棄して再描画

10. 定数

consts.js で定義されているものを掲載します。

SBSP_*(Navigate のフラグ) SBSP_SAMEBROWSER = 1 / SBSP_NEWBROWSER = 2 / SBSP_OPENMODE = 0x10 / SBSP_EXPLOREMODE = 0x20 / SBSP_RELATIVE = 0x1000 / SBSP_PARENT = 0x2000 / SBSP_NAVIGATEBACK = 0x4000 / SBSP_NAVIGATEFORWARD = 0x8000 / SBSP_ACTIVATE_NOFOCUS = 0x80000 / SBSP_WRITENOHISTORY = 0x08000000

FVM_*(ビューモード) FVM_AUTO = -1 / FVM_ICON = 1 / FVM_SMALLICON = 2 / FVM_LIST = 3 / FVM_DETAILS = 4 / FVM_THUMBNAIL = 5 / FVM_TILE = 6 / FVM_THUMBSTRIP = 7

SVSI_*(SelectItem のフラグ) SVSI_DESELECT = 0 / SVSI_SELECT = 1 / SVSI_EDIT = 3 / SVSI_DESELECTOTHERS = 4 / SVSI_ENSUREVISIBLE = 8 / SVSI_FOCUSED = 0x10 / SVSI_TRANSLATEPT = 0x20 / SVSI_SELECTIONMARK = 0x40 / SVSI_POSITIONITEM = 0x80 / SVSI_CHECK = 0x100 / SVSI_CHECK2 = 0x200 / SVSI_KEYBOARDSELECT = 0x401 / SVSI_NOTAKEFOCUS = 0x40000000 / SVSI_NOSTATECHANGE = 0x80000000

SVGIO_*(Items/ItemCount/ViewMenu) SVGIO_BACKGROUND = 0 / SVGIO_SELECTION = 1 / SVGIO_ALLVIEW = 2 / SVGIO_CHECKED = 3 / SVGIO_TYPE_MASK = 0xf / SVGIO_FLAG_VIEWORDER = 0x80000000

その他の FWF_*、EBO_*、LVHT_*、LVIR_*、SHCNE_* も consts.js にあります。

Type の値: CTRL_SB = 1(ShellBrowser)/ CTRL_EB = 2(ExplorerBrowser)。te.Ctrl(CTRL_FV) はどちらのビューも返します。


11. 廃止・内部用

名前 状態
NameFormat 廃止。何もしない
VirtualName 廃止(SB_VirtualName)
Searches / ViewProperty コード上でコメントアウトまたは USE_VIEWPROPERTY ビルドのみ。通常は使えない

関連