2009-03-15 14 views
19

ファイルとフォルダにオーバーレイアイコンを表示するために、IShellIconOverlayIdentifierインターフェイスを使用するWindowsシェル拡張があります。私の内線番号はTortoiseCVSまたはTortoiseSVNのように少しです。プログラムでWindowsエクスプローラを更新できますか?

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

SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL) 

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

だから私はこのようなWM_SETTINGCHANGEを送信しようとした:Vista上

SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0) 

を、これはフォルダツリーではなく、右側のペインを更新します。

SHChangeNotify()とそれに続くWM_SETTINGCHANGEの組み合わせは、Vistaではかなりうまくいくようです。しかし、それが表示されても、私はまだXP上のフォルダツリーをリフレッシュできません。

これをより良くする方法はありますか?

XP用のより良いソリューションはありますか?

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

+0

XP用のTweakUIには、「修復アイコンキャッシュ」オプションがあります。 SPY ++を使用して、その動作を確認することができます。 –

+1

ヒュー!あなたの問題を解決できましたか? – A9S6

答えて

7

どのようにすればいいですか? この方がいいですか?

私は個人的に分かりません。あなたは似たようなことをするTortoiseプログラムについて言及していますので、参考にしてください。

これらは、この問題を処理する関連ソースファイルです。

私はそれらの意志のそれぞれにおけるRebuildIcons方法に注意してください。

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

おそらく、これはXPで動作させるためのトリックの一部です。

+1

良い方法はないのは残念です。私たちはこれを頻繁にやっていないことを望みます! –

+0

サイモン助けてくれてありがとう。 – HughE

+0

@jeffamaphone私たちはこれをあまり頻繁にやっていません。ほとんどの場合、1日数回。 – HughE

0

使用スパイ++は、WindowsエクスプローラでF5キーを押すか、表示のために使用されるもの、メニューのメッセージを見つけるとき

が次にしたいエクスプローラウィンドウを取得するためのFindWindowを使用してリフレッシュ/メッセージが送信されるWM_COMMMAND何を参照し、記録WM_COMMANDを送信しますそれ以前のメッセージなどです。

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

+0

私はそれを試みましたが、それは有用な何も表示されませんでした。それはすべての項目を削除し、それらをすべて再追加するようです。表示モードを何か他のものに戻したり戻したりするだけの場合は*リフレッシュするので、必ずしもその長さに行く必要はありません。 ': - |' – Synetech

+0

これらの変更を追跡して、技術的に可能な限りSpy ++を使用することは本当のPITAです。ツールの使用に慣れていない場合は、時間を無駄にすることがあります。 –

0

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

+1

この場合、最も簡単な方法は最良の方法ではありません。 – Idan

関連する問題