質問

IShellIconOverlayIdentifier a>ファイルとフォルダーにオーバーレイアイコンを表示するインターフェイス。私の拡張機能は、 TortoiseCVS TortoiseSVN

Windowsエクスプローラーでアイコンをすべて再描画する必要がある場合があります。これを行うには、次のように SHChangeNotify を呼び出します。

SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL)

これにより、開いているエクスプローラウィンドウのデスクトップと右側のペインが更新されます。エクスプローラーウィンドウの左側のフォルダーツリーは更新されません。

このように WM_SETTINGCHANGE をこのように送信してみました:

SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0) 

Vistaでは、これによりフォルダツリーが更新されますが、右側のペインは更新されません。

SHChangeNotify()の後に WM_SETTINGCHANGE を組み合わせたものは、Vistaでは非常にうまく機能するようです。しかし、XPのフォルダーツリーが表示されている場合、それを更新することはできません。

これをより良くするためのアイデアはありますか?

XPに適したソリューションはありますか

SHCNE_ASSOCCHANGED を送信することは、頭上でExplorerをクラビングするようなものです。これにより、デスクトップ全体が非常に激しくリフレッシュされ、開いているエクスプローラーウィンドウがスクロール位置を失う原因になります。少し暴力的でないものはありますか?

役に立ちましたか?

解決

  

どのようにすればいいのか誰にもアイデアはありますか   これは良いですか?

個人的には知りません。あなたは同様のことをするTortoiseプログラムに言及しているので、優れた出発点は、ソースで何をするかを見ることです:)

これらは、この問題を処理する関連ソースファイルのように見えます。

これらのそれぞれの RebuildIcons メソッドに注意してください:

  1. シェルアイコンのサイズまたは色深度を一時的な値に設定する
  2. 設定変更をブロードキャストすることにより、すべてのウィンドウを更新します
  3. シェルアイコンのサイズまたは色深度を元の値にリセットします
  4. 設定変更のブロードキャストですべてのウィンドウを2回更新します

これはおそらく、XPで動作させるための秘ofの一部でしょう。

他のヒント

spy ++を使用して、WindowsエクスプローラーでF5キーを押したときに送信されるWM_COMMMANDメッセージを確認するか、表示/更新に使用されるメニューメッセージを見つけます

FindWindowを使用して、目的のエクスプローラウィンドウを取得し、以前に記録したWM_COMMANDなどのメッセージを送信します。

これは、あらゆる種類のWindowsプログラムを制御する楽しい方法です。

F5キーコードを含むWM_KEYDOWNメッセージを開いているすべてのエクスプローラウィンドウに送信することもできます。ただし、これはちょっとしたハックです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top