2009-03-15 7 views
12

ええ、私はこれがちょっとした疑問のように思えます。それはちょっとしたハックで、ちょっとした仕事を包み込む必要があるので、もっと面白いものに進むことができます。C#からWindowsデスクトップをプログラムで(つまりF5)リフレッシュするにはどうすればよいですか?

編集: 多分もっと多くの情報が役立つでしょう:私はデスクトップからいくつかのショートカットを削除しようとしていて、すぐに削除されるのを見るためにユーザーが必要です(F5を押す必要はありません)。

+0

PSそれを呼び出します。グーグルでは、expertsexchangeの誰かが同じ質問をしていることが明らかになっていますが、私は自分のウェブサイトにサインアップしたくありません。 – DSO

+1

@DSO:ページの下部までスクロールすることで、エキスパート交換の回答に行くことができると思います(エキスパート交換でダッシュを使用する必要があります。そうでなければ「expert-something-else」のように見えます)。 ) –

答えて

36

SHChangeNotify APIを使用できます。その後、

[System.Runtime.InteropServices.DllImport("Shell32.dll")] 
private static extern int SHChangeNotify(int eventId, int flags, IntPtr item1, IntPtr item2); 

このよう

SHChangeNotify(0x8000000, 0x1000, IntPtr.Zero, IntPtr.Zero); 
+0

私は助けることができてうれしい –

+0

ありがとう、それは本当に私の問題を解決します。 – Sean

+1

@DSOどうやって "カット"しましたか? – SepehrM

2

私はあなたがIActiveDesktop::ApplyChangesを探していると思います。 COMインターフェイスを介してアクセスする必要があります。これは、MicrosoftがCOM Interopで提供するすべてのdocumentationでかなり簡単に行う必要があります。

+0

ヒントのおかげで、これはおそらくうまくいくように見えますが、TomのWin32アプローチはちょっと使いやすくなっています。 – DSO

関連する問題