タブファイラー開発ブログ

Tablacus ExplorerやX-Finderの作者のブログ

ListViewの一覧表示の幅を調整する

ListViewの一覧表示の幅を調整するには、ListView_SetColumnWidth で iCol を 0 にすれば設定できます。

しかし、バグだと思うんですが、最初の項目に移動しても半分切れて見えないみたいに左右がずれてしまう場合があるんです。
そんな訳でX-FinderとかTablacus Explorerでは以下のようなコードで対処しています。

ListView_SetColumnWidth(m_hwndLV, 0, 1);
ListView_SetColumnWidth(m_hwndLV, 0, nWidth);
ListView_EnsureVisible(m_hwndLV, ListView_GetNextItem(m_hwndLV, -1, LVNI_ALL | LVNI_FOCUSED), FALSE);

 
一度、幅を 1 にしてから指定したい幅を指定しています。そして、フォーカス位置に表示位置を移動しています。

今回のTablacus Explorerの調整でx64で一覧表示の際に自動的に文字列の最も長いものにあわせるのが上手くいかないので自前で幅を設定するようにしたら、このおかしな動作が出たのでした。
そういえば、X-Finderでもなにか対処した覚えがあったなと思い出して、対処方法をソースを引っ張り出してきました。

詳しくは Tablacus Explorerのソース をご覧ください。

Total Commander ファイルシステムプラグイン アドオン - Tablacus Explorer (9/15,2018/3/3追記あり)

Tablacus ExplorerでTotal Commanderのファイルシステムプラグイン(File system extensions)が使用できるようになりました。

TE64.exeの場合は64bit版のwfx64、TE32.exeの場合は32ビット版のwfxを使用します。

Total Commander - Plugins

上記サイトで[32+64 bit]の物は32bit版、64bit両方対応しています。

適当なフォルダにダウンロードしたプラグインを展開して置いておきます。

アドオンのオプションを開いて「wfx」ファイルを指定するために「参照」ボタンを押します。

f:id:tablacus:20160915234625p:plain

wfxファイルを選択すると以下の様にパスにwfxのパス、名前に名前が入ります。

※64bit版の場合もwfxを選択してください。(但し実行の際にはwfx64が読み込まれます)

「追加」を押して追加します。

f:id:tablacus:20160915234816p:plain

wfxの対応している機能が「情報」に表示されます。

f:id:tablacus:20160915234927p:plain

「OK」を押すと完了です。

では、ファイルシステムプラグインを使ってみましょう。アドレスバーに「\\\」を入力します。

f:id:tablacus:20160912234936p:plain

ここにインストールされているファイルシステムプラグイン(FSプラグイン)が表示されます。

CloudをダブルクリックするとCloudプラグインに入ります。

f:id:tablacus:20160912235111p:plain

新しい接続先を作るにはフォルダを作ります。(F7はTotal Commanderのフォルダを作るキーです。)

Tablacus Explorerの場合はデフォルトで「Ctrl+K」です。ただ、ここで接続先を作ったり、削除したり、訂正するには、このプラグインの仕様でTablacus Exploererを管理者で実行している必要があります。

通常権限で実行している場合は、管理者権限で実行し直してください。

(9/15追記)

Total Commander ファイルシステムプラグイン 1.01からは設定ファイル(ini)の保存場所の設定を行うように調整できたので管理者権限で実行する必要はなくなりました。

f:id:tablacus:20160912235433p:plain

新規フォルダを作成するダイアログで接続先の名前を入力したら、「OK」を押します。

f:id:tablacus:20160912235528p:plain

接続先のダイアログが表示されます。接続先とユーザー名を入力してください。

□Store login credential はチェックしない方が良いと思います。まだ、このTablacus Explorerのアドオンで暗号化して保存する機能を作成していないので、Tablacus Explorerを終了するとパスワードはディスクに保存されません。

(2018/3/3追記)

2017/1/31公開のアドオンTotal Commander ファイルシステムプラグイン 1.05からはマスターパスワードに対応しているのでStore login credential をチェックしても問題なくなっています。 

「OK」を押すと接続先ができます。

f:id:tablacus:20160912235933p:plain

できたフォルダでクラウドドライブに接続できるようになります。

このフォルダを作ってしまえば、管理者権限でなくても問題なく使えるようです

 

他にもLinuxのドライブをそのまま覗けたり、WebDAVのドライブがマウントできたりするプラグインがあります。

エクスプローラの機能を使ってもWebDAVにアクセスできますが、Total Commanderのプラグインの方が快適に使用できました。

また、プラグインによって管理者でしか動かないものや、管理者権限でないとアクセスする情報が減ったりするものがありました。(ドライブを直接覗くなどシステムに深く関わるプラグインLinuxのドライブが見えたりするもの等)

ただ、管理者権限で使うとドラッグ&ドロップなどの他のソフトとの連携に問題がでるのでずっと管理者という使い方はおすすめできませんが…

 

(9/15追記)

Total Commander ファイルシステムプラグイン 1.01からは設定ファイル(ini)の保存場所の設定を行うようにしたので、前のバージョンで保存した情報がそのまま読み込めません。

古い情報は「C:\Winodws」に保存されています。そのiniファイルをTablacus Explorerのconfigフォルダに移動してください。

 

Cloud プラグイン → tccloud.ini

WebDAV プラグイン → tcwebdav.ini

SFTP プラグイン → sftpplug.ini

 

Tablacus Explorerのconfigフォルダ開く方法はヘルプ(H)→configでOKです。

f:id:tablacus:20160916000328p:plain

 

 

Total Commander 圧縮プラグイン アドオン - Tablacus Explorer

Tablacus ExplorerでTotal Commanderの圧縮プラグイン(Packer extensions)が使用できるようになりました。

TE64.exeの場合は64bit版のwcx64、TE32.exeの場合は32ビット版のwcxを使用します。

Total Commander - Plugins

上記サイトで[32+64 bit]の物は32bit版、64bit両方対応しています。

適当なフォルダにダウンロードしたプラグインを展開して置いておきます。

アドオンのオプションを開いて「wcx」ファイルを指定するために「参照」ボタンを押します。

f:id:tablacus:20160904225016p:plain

wcxファイルを選択すると以下の様にパスにwcxのパス、名前に名前が入ります。

※64bit版の場合もwcxを選択してください。(但し実行の際にはwcx64が読み込まれます)

「追加」を押して追加します。

f:id:tablacus:20160904225118p:plain

正しくインストールされているか確認するには「オプション...」を押します。

f:id:tablacus:20160904225535p:plain

エラーが表示されなければOKです。

「OK」を押すと完了です。

f:id:tablacus:20160904225616p:plain

フィルタは空欄でOKです。扱うファイルを限定したい場合にのみ指定して下さい。

 

Total Commanderの圧縮プラグインは統合アーカイバSusieの書庫プラグインと同じような感じですが、公式にユニコードや64bitに対応していたり、統合アーカイバみたいに個別対応する必要がなかったりする辺りがメリットですね。

もちろん削除や圧縮にも対応しています。

実装に関してはSetProcessDataProc等をしっかり使っておかないとコールバックがないのにコールバックしてしまうプラグインが結構あり動作が不安定になったのでハマりました。

PackFilesやDeleteFilesの際にはhArcDataをINVALID_HANDLE_VALUE(-1)にしてSetProcessDataProcを呼んでいます。

 

ファイルシステムプラグイン(File system extensions)の方も要望が来ていて面白そうな拡張が多いので対応したいと思っています。

Shell execute hook アドオン - Tablacus Explorer

このアドオンは「エクスプローラの代わりに開く」に類似したアドオンです。

レジストリに登録するので、Tablacus Explorerを開いていない場合も動作します。

但し、レジストリに設定を書き込み、System32フォルダにdllファイルをコピーしますので、ポータブルで使いたい方は使用しないでください。

 

f:id:tablacus:20160728230550p:plain

設定はShell execute hookアドオンのオプションで行います。

EnableShellExecuteHooksと32bit、64bitのフックしたいものにチェックし、パスにTablacus Explorerを指定します。

OKを押して設定を変更するとUACの許可ダイアログや次のダイアログが表示されます。

f:id:tablacus:20160728230944p:plain

PCを再起動すると設定が適用されます。

 

※このアドオンのアンインストール方法

すべてのチェックをオフにしてパスを空にしてOKを押してください。

 

★Tips

このアドオンを設定後はアドオンがインストールされていますので、このアドオンを削除してもかまいません。

このアドオン削除後にアンインストールする場合はもう一度、アドオンをインストールして、オプションから上記のアンインストール処理を行ってください。

 また、アドオン設定画面で無効化しても無効化されません。

 

TE32.exeを実行している場合は64bitのチェックは変更できません。

64ビットWinodwsの場合は32bitにチェックで32bitアプリ、64bitにチェックで64bitアプリから起動するエクスプローラを監視します。

 

パスにTablacus Explorerの代わりにX-Finderのパスを入れるとエクスプローラの代わりにX-Finderが起動します。

 

Shell execute hookを使っていない場合はエクスプローラが起動します。その場合は「エクスプローラの代わりに開く」も併用してください。

選択が無い場合はフォーカス項目を選択して実行する - Tablacus Explorer

某所で{Enter}を押した際に選択が無くても、フォーカス項目のフォルダに移動したいという要望があったので作ってみました。

 

・選択が無い場合はフォーカス項目を選択して実行する

var Selected = FV.SelectedItems();
if (!Selected.Count) {
  FV.SelectItem(FV.FocusedItem, SVSI_SELECT);
}
te.OnDefaultCommand(FV);

 

f:id:tablacus:20160716211641p:plain

ちょっとしたスクリプト2016年4月 - Tablacus Explorer

某所で要望があった機能をスクリプトで書いてみました。

 

・ファイル群とフォルダ群の境目にジャンプ

var FV = GetFolderView(Ctrl,pt);
var Items = FV.Items();
var bFolder = !IsFolderEx(Items.Item(0));
var nIndex = Math.floor((Items.Count - 1) / 2);
var nDiff = nIndex;
while (nDiff) {
  if (bFolder ^ IsFolderEx(Items.Item(nIndex))) {
    nIndex += nDiff;
  } else {
    nIndex -= nDiff;
  }
  nDiff = Math.floor(nDiff / 2);
}
while (bFolder ^ IsFolderEx(Items.Item(nIndex))) {
  nIndex++;
}
FV.SelectItem(Items.Item(nIndex), SVSI_SELECT | SVSI_DESELECTOTHERS | SVSI_ENSUREVISIBLE | SVSI_FOCUSED); 

 

f:id:tablacus:20160404232159p:plain

ユーザースタイルシート(css) アドオン - Tablacus Explorer

Tablacus Explorerではタブ、ツリー、リスト以外の部分はスタイルシート(css)を使ってデザインを変更することができます。

※アドオンのタブプラスを使うとタブの部分もOKになります。

 

index.cssを直接書き換えもできますが、それだとアップデートの度に元に戻されてしまうので、ユーザースタイルシートアドオンを使います。

 

f:id:tablacus:20160317232835p:plain

上記の例では。入力ボックスの角丸とメニューの上にマウスを持って行った場合の色を変更しています。

f:id:tablacus:20160317232957p:plain

HTMLやCSS等に慣れた方向けのアドオンです。