2009-03-15 13 views
12

Evet, bunun aptalca bir soru gibi gözüktüğünü biliyorum, sadece bir kerelik hack, biraz daha sıradan bir görevi tamamlamam gerekiyor, böylece daha ilginç bir şeye geçebiliyorum.Windows masaüstü programlı olarak nasıl yenilenir (örn. F5) C#?

DÜZENLEME: Belki de daha fazla bilgi yardımcı olabilir: Masaüstünden bazı kısayolları kaldırmaya çalışıyorum ve hemen kaldırıldığını görmem gerekiyor (bu yüzden F5 tuşuna basmak zorunda kalmıyorlar).

+0

PS diyoruz. googling, expertsexchange'den birinin aynı soruyu sorduğunu, ancak web sitelerine kaydolmak istemediğimi ortaya koyuyor. – DSO

+1

@DSO: Sanırım, sayfanın en altına doğru ilerleyerek uzman değişimi üzerine cevap alabilirsiniz. (Eğer uzmanı değiş-tokuşlarda kullanmalısınız, aksi halde "uzman-bir şey-başka" gibi görünür);) –

cevap

36

SHChangeNotify API'sini kullanabilirsiniz.

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

ve sonra bu şekilde

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

Yardım ettiğim için teşekkürler –

+0

Teşekkürler, gerçekten sorunumu çözüyor. – Sean

+1

@DSO Nasıl "Kes" yaptınız? – SepehrM

2

Sanırım IActiveDesktop::ApplyChanges'u arıyorsunuz. COM ıntrop üzerinden documentation Microsoft tarafından sağlanan oldukça kolay olması gereken COM arabirimi üzerinden buna erişmeniz gerekecektir.

+0

Bahşiş için teşekkürler, bu muhtemelen işe yaramaz gibi görünüyor ... ancak Tom'dan Win32 yaklaşımı hemen kullanmak için biraz daha kolaydı. – DSO

İlgili konular