無線LANで接続したアンドロイドのフォルダにアクセスする - Tablacus Explorer
WebDAVを使うと無線LANで接続したアンドロイド(Android)のフォルダにアクセスできるようになります。
まず、アンドロイドにWebDAVサーバーをインストールして実行します。
アンドロイドのプレイストアで「webdav server」で検索してWebDAV Serverをインストールします。
WebDAV Serverを実行します。
真ん中のボタンを押してWebDAVサーバーを開始します。
サーバーを開始したら表示されるURLアドレスをメモします。
この場合は「http://192.168.0.106:8080」です。
次に以下のサイトからTotal CommanderのWebDAVプラグインをダウンロードします。
WebDAVの隣の「32+64 bit」をクリックして「webdav.zip」をダウンロードします。
ダウンロードした「webdav.zip」を適当なフォルダに展開します。
次にTablacus ExplorerでTotal Commander ファイルシステムプラグイン アドオンをインストールします。
まず、ヘルプ(H)→アドオンを入手
Total Commander ファイルシステムプラグインの「インストール」をクリック
左ペインの「アドオン」をクリックしてアドオン画面に移動し、Total Commander ファイルシステムプラグインの「オプション」をクリック
「参照...」をクリック
さっき展開したwebdav.zipの「davplug.uwfx」を選択して「開く(O)」をクリック
成功すると情報欄に様々な情報が表示されるので、「追加」をクリック
「OK」をクリック
「OK」をクリックしてアドオンの追加が完了します。
アドレス バーに「\\\WebDAV」と入力して「Enter」を押します。
「Ctrl」を押しながら「K」を押してフォルダ作成画面を開きます。(最近インストールした方は「F7」でもOK)
適当な名前を付けて「OK」を押します。
設定画面になるので、メモしたURLアドレスを「Connect to」に入れます。
そして、Send/Receive accents in URLs as UTF-8 Unicodeにチェックします。(チェックしないと日本語ファイルが文字化けします。)
「OK」を押します。
名前を付けたフォルダに移動するとアンドロイドのフォルダにアクセスすることができます。
あとは適当なフォルダに移動したり、ファイルを取り出したり、入れたりできます。
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を使用します。
上記サイトで[32+64 bit]の物は32bit版、64bit両方対応しています。
適当なフォルダにダウンロードしたプラグインを展開して置いておきます。
アドオンのオプションを開いて「wfx」ファイルを指定するために「参照」ボタンを押します。
wfxファイルを選択すると以下の様にパスにwfxのパス、名前に名前が入ります。
※64bit版の場合もwfxを選択してください。(但し実行の際にはwfx64が読み込まれます)
「追加」を押して追加します。
wfxの対応している機能が「情報」に表示されます。
「OK」を押すと完了です。
では、ファイルシステムプラグインを使ってみましょう。アドレスバーに「\\\」を入力します。
ここにインストールされているファイルシステムプラグイン(FSプラグイン)が表示されます。
CloudをダブルクリックするとCloudプラグインに入ります。
新しい接続先を作るにはフォルダを作ります。(F7はTotal Commanderのフォルダを作るキーです。)
Tablacus Explorerの場合はデフォルトで「Ctrl+K」です。ただ、ここで接続先を作ったり、削除したり、訂正するには、このプラグインの仕様でTablacus Exploererを管理者で実行している必要があります。
通常権限で実行している場合は、管理者権限で実行し直してください。
(9/15追記)
Total Commander ファイルシステムプラグイン 1.01からは設定ファイル(ini)の保存場所の設定を行うように調整できたので管理者権限で実行する必要はなくなりました。
新規フォルダを作成するダイアログで接続先の名前を入力したら、「OK」を押します。
接続先のダイアログが表示されます。接続先とユーザー名を入力してください。
□Store login credential はチェックしない方が良いと思います。まだ、このTablacus Explorerのアドオンで暗号化して保存する機能を作成していないので、Tablacus Explorerを終了するとパスワードはディスクに保存されません。
(2018/3/3追記)
2017/1/31公開のアドオンTotal Commander ファイルシステムプラグイン 1.05からはマスターパスワードに対応しているのでStore login credential をチェックしても問題なくなっています。
「OK」を押すと接続先ができます。
できたフォルダでクラウドドライブに接続できるようになります。
このフォルダを作ってしまえば、管理者権限でなくても問題なく使えるようです。
他にもLinuxのドライブをそのまま覗けたり、WebDAVのドライブがマウントできたりするプラグインがあります。
エクスプローラの機能を使ってもWebDAVにアクセスできますが、Total Commanderのプラグインの方が快適に使用できました。
また、プラグインによって管理者でしか動かないものや、管理者権限でないとアクセスする情報が減ったりするものがありました。(ドライブを直接覗くなどシステムに深く関わるプラグインLinuxのドライブが見えたりするもの等)
ただ、管理者権限で使うとドラッグ&ドロップなどの他のソフトとの連携に問題がでるのでずっと管理者という使い方はおすすめできませんが……
(9/15追記)
Total Commander ファイルシステムプラグイン 1.01からは設定ファイル(ini)の保存場所の設定を行うようにしたので、前のバージョンで保存した情報がそのまま読み込めません。
古い情報は「C:\Winodws」に保存されています。そのiniファイルをTablacus Explorerのconfigフォルダに移動してください。
Cloud プラグイン → tccloud.ini
SFTP プラグイン → sftpplug.ini
Tablacus Explorerのconfigフォルダ開く方法はヘルプ(H)→configでOKです。
Total Commander 圧縮プラグイン アドオン - Tablacus Explorer
Tablacus ExplorerでTotal Commanderの圧縮プラグイン(Packer extensions)が使用できるようになりました。
TE64.exeの場合は64bit版のwcx64、TE32.exeの場合は32ビット版のwcxを使用します。
上記サイトで[32+64 bit]の物は32bit版、64bit両方対応しています。
適当なフォルダにダウンロードしたプラグインを展開して置いておきます。
アドオンのオプションを開いて「wcx」ファイルを指定するために「参照」ボタンを押します。
wcxファイルを選択すると以下の様にパスにwcxのパス、名前に名前が入ります。
※64bit版の場合もwcxを選択してください。(但し実行の際にはwcx64が読み込まれます)
「追加」を押して追加します。
正しくインストールされているか確認するには「オプション...」を押します。
エラーが表示されなければOKです。
「OK」を押すと完了です。
フィルタは空欄で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ファイルをコピーしますので、ポータブルで使いたい方は使用しないでください。
設定はShell execute hookアドオンのオプションで行います。
EnableShellExecuteHooksと32bit、64bitのフックしたいものにチェックし、パスにTablacus Explorerを指定します。
OKを押して設定を変更するとUACの許可ダイアログや次のダイアログが表示されます。
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);
ちょっとしたスクリプト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);