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

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

Windows 10 Fall Creators Updateのバグ対策 - Tablacus Explorer

Windows 10 Fall Creators Updateで発生している詳細表示でスクロールバーが出ている場合、マウスの範囲選択での複数選択をするとカーソルが画面の端っこに吹っ飛んでしまうという不具合の対策アドオンが良い感じに対策できました。

最初はマウスカーソルが端っこの場合、元の位置に戻すという対処療法でした。

これにはひとつ問題があり、マウスカーソルが飛んでからの対処療法なのでマウスカーソルが一度、端っこに行ってしまう為にどうしてもリストがスクロールしてしまいます。

スクロール位置も覚えて戻そうかなとテストしていたところ(リストビューのスクロール位置を戻すのが、詳細とその他やグループの有無で違うなど結構ややこしいかったのです)

デバッグ ビューで数値を表示してみると何故かマウスカーソルの吹っ飛んでしまう現象が起こりません。

もしかしてと思い

リストのマウスカーソル移動時で左右ボタンが押されている場合に、RedrawWindowで再描画を行うようにしてみました。

予想通り不具合は発生しなくなりました。

なんでこんなので直るのかは私には解りませんが、とにかく直りました。

ソースはこんな感じです。

リストビューじゃなくても何かをRedrawWindowで再描画すればOkっぽいです。

Windows 10 Fall Creators Updateでマウスカーソルが吹っ飛んで困っている方、ご自由にお使いください。

 

Fall Creators Update入れてみました。

Fall Creators Updateを入れてみました。

Creators Updateで発生していた不具合、詳細で移動後に真っ白になる、カラムが消えるという問題は直されている様で不具合のFixの部分に引っかからなくなっています。

ただ、詳細表示でスクロールバーが出ている場合、マウスの範囲選択での複数選択をするとカーソルが画面の端っこに吹っ飛んでしまうという不具合がTablacus ExplorerでもX-Finderでも発生します。

この不具合はこちらでは対策は難しそうですが、リストビューを使っている他のソフトでも発生しているようなので近々マイクロソフトの方でバグを直してくれるのではないかと思います。

10/29追記

とりあえずTablacus Explorerに対策アドオン「Windows 10 Fall Creators Updateのバグ対策」を作りました。

表示する日付時刻のフォーマットをカスタマイズ - Tablacus Explorer

表示する日付時刻のフォーマットをカスタマイズするにはオプション→一覧→日付時刻を変更します。

f:id:tablacus:20170917231208p:plain

24時間制で秒も表示するなら

yyyy-MM-dd HH:mm:ss 

午前、午後を表示するなら 

yyyy-MM-dd tt hh:mm:ss

 yyyyなどの文字列は以下のリンクの制御文字列を使います。

大文字と小文字を区別します。例えば、大文字の「M」は月を、小文字の「m」は分を、大文字の「H」は24時間制の時間を、小文字の「h」は12時間制の時間を表します。

GetDateFormat 関数

GetTimeFormat 関数

Shell execute hook をスクリプトで切り替える - Tablacus Explorer

Shell execute hookアドオン簡単に切り替えたいという要望があったので、スクリプトを書いてみました。これらのスクリプトを動作させる場合はShell execute hookアドオン1.02が必要です。古いバージョンでは正常に動作しません。

オン

オフ

切り替え

すぐに切り替えできるようにエクスプローラを再起動しています。

エクスプローラの再起動が不要な場合は「Explorer: true」の部分を「Explorer: false」にします。

 

フォルダを開く際にTablacus Explorerをエクスプローラの代わりに開く方法

  1. レジストリでフォルダに関連付ける
  2. アドオンの「Shell execute hook」を使う
  3. アドオンの「エクスプローラの代わりに開く」を使う

今回はこの3つの方法を説明します。
それぞれ、エクスプローラの代わりに開けるパターンが違うので組み合わせるなりしてください。

1.レジストリでフォルダに関連付ける

万が一に備えてレジストリのバックアップを取っておく
「ファイル名を指定して実行」よりregedit.exeを起動
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell(もしくはHKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell)に移動して右クリックし新規→キー(OpenとかExplorerがある階層)
名前に「Tablacus Explorerで開く」と入力し、その中にキーをつくって名前を「command」と入力する。
「command」の中にある(既定)を開いて「"C:\......\TE64.exe" /idlist,%I,%L」を入力。(C:\......\はTablacus Explorerをインストールしたフォルダにする)
32bit版を実行させたい場合はTE32.exeにする
Tablacdus Explorerを既定にしたい場合はshellにある(既定)のデータを「Tablacdus Explorerで開く」とする。
Windows 7 で開きたいフォルダが含まれるフォルダが開かれる場合は
そんな時は上記「"C:\......\TE64.exe" /idlist,%I,%L」を「"C:\......\TE64.exe" "%1"」にする

(特徴)
レジストリを使用する
関連付けなので他のソフトからエクスプローラを開く際は開けない。
Windows+Eも置き換えできない。

 

2.アドオンの「Shell execute hook」を使う

tablacus.hatenablog.com

(特徴)
レジストリを使用する
Windows10でデスクトップのフォルダを開く際に使えなかった

 

3.アドオンの「エクスプローラの代わりに開く」を使う

このアドオンはtablacus Explorerが起動していないと動作しません。
そのため、アドオンの「タスクトレイ」の「閉じる代わりにタスクトレイに格納」を使ってtablacus Explorerを閉じない設定にし、スタートアップでTablacus Explorerを実行するようにすればこの問題に対処できます。

(特徴)
レジストリを使用しない
Tablacus Explorerを実行していない場合は使えない。

フォルダリストメニュー(Folder list menu) アドオン - Tablacus Explorer

アドオンのフォルダリストメニューはクリップフォルダやm3uに格納されたフォルダをメニューで開いてジャンプできるようにするアドオンです。

フォルダリストメニューをインストールするとタイプに「Folder list menu」が追加されます。

f:id:tablacus:20170606232336p:plain

オプションにフォルダ一覧が格納されたテキストファイルを指定します。

 ※バージョン1.01で階層メニューに対応しました。

パス\表示名1 c:\path\name1

パス/表示名2 c:\path\name2

パス|表示名3 c:\path\name3

エディタ等でフルパスの前に表示するパス名と表示名を入れます。

パス名と表示名の区切りは半角の「\」「|」「/」のどれかを用いてください。

ジャンプするパスに%Installed%等の環境変数を使うこともできます。また、表示名とジャンプするパスの区切りをタブにすると指定したファイルの親フォルダからの相対パスを指定することもできます。

※バージョン1.02で新しいタブで開けるようになりました。

f:id:tablacus:20170620224806p:plain

※バージョン1.03で区切り線に対応しました。

「-」だけの行で区切り線になります。階層に対応する場合はパス名\-等にします。

-

パス\-

パス/-

パス|-

※バージョン1.04でアイコンが指定できるようになりました。

パスの一行前に「#EXTIMG:ファイル名.png」を指定します。アイコンは「png,jpg」等画像フォーマットを指定できます。

#EXTIMG:ファイル名.png

C:\hogehoge

 #EXTIMG:..」とするとパス名からアイコンを取得します。

#EXTIMG:...

C:\hogehoge

※バージョン1.04で外部ファイルの実行が可能になりました。

パスを「`」(バッククォート)で囲むとファイルを実行します。

例)電卓を実行する

`calc.exe`

※バージョン1.05でアイコンのサイズが指定できるようになりました。

パスの一行前に「#EXTIMG:ファイル名.png,16」と指定します。「,」から後ろが表示されるアイコンのサイズになります。この場合は16です。

#EXTIMG:ファイル名.png,16

C:\hogehoge

 ※Tablacus Explorer 17.7.30でJavaScriptが実行できるようになりました。

javascript:から始めるとスクリプトを実行できます。

表示名        javascript:alert(1);

「"」が含まれたスクリプトを実行する場合は

 パスの一行前に「#EXTINF:-,表示名」と指定します。

#EXTINF:-,表示名

javascript:alert("OK");

 

 

XMLHttpRequest

Tablacus ExplorerのアップデートをGitHubReleases · tablacus/TablacusExplorer · GitHubGitHubREST APIを利用するように変更しました。

ついでに、ネットの読み込みのオブジェクトをIE独自のCreateObject("Msxml2.XMLHTTP")から標準のnew XMLHttpRequest()に変更しました。

ここでいくつかの非互換の部分がありました。

 

1.textノードが読み込みできないので先に「textContent」を読み込みする

var s = item[i].textContent || item[i].text;

 JavaScript演算子「||」は便利ですね。

 

2.responseStreamが使えないので代わりにresponseBodyを使う

responseStreamはストリームなので大きいファイルでも安心なんですが、IE独自っぽいですね。Tablacus Explorerの場合はそんなに大きなファイルをダウンロードすることもなさそうなので多分responseBodyでも問題ないと思います。

 

XMLHttpRequestIE 7から実装しているのでもう対応しておく方が良さそうです。