2009-03-15 11 views
12

हाँ, मुझे पता है कि यह एक बेवकूफ सवाल की तरह लगता है, यह सिर्फ एक बंद हैक मुझे कुछ हद तक काम करने की जरूरत है ताकि मैं कुछ और दिलचस्प हो सकूं।सी # से विंडोज डेस्कटॉप प्रोग्रामेटिक रूप से (यानी F5) रीफ्रेश कैसे करें?

संपादित करें: शायद अधिक जानकारी मदद मिलेगी: मैं डेस्कटॉप से ​​कुछ शॉर्टकट हटाने की कोशिश कर रहा हूं और मुझे उपयोगकर्ता को तुरंत इसे हटाने की आवश्यकता है (इसलिए उन्हें F5 दबाएं नहीं)।

+0

पुनश्च यह कहते हैं। गुगलिंग से पता चलता है कि विशेषज्ञों के एक्सचेंज से कोई भी वही प्रश्न है, लेकिन मैं अपनी वेबसाइट पर साइन अप नहीं करना चाहता हूं। – DSO

+1

@DSO: मुझे लगता है कि आप पृष्ठ के निचले भाग तक स्क्रॉल करके विशेषज्ञों के आदान-प्रदान पर जवाब प्राप्त कर सकते हैं .. (आपको विशेषज्ञों-विनिमय में डैश का उपयोग करना चाहिए, अन्यथा यह "विशेषज्ञ-कुछ और" जैसा दिखता है;]) –

उत्तर

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 इंटरफ़ेस के माध्यम से इसे एक्सेस करने की आवश्यकता होगी, जो कि सभी documentation माइक्रोसॉफ्ट COM इंटरऑप पर प्रदान करता है, के साथ काफी आसान होना चाहिए।

+0

टिप के लिए धन्यवाद, ऐसा लगता है कि यह शायद काम करेगा ... हालांकि टॉम से Win32 दृष्टिकोण तुरंत उपयोग करना थोड़ा आसान था। – DSO

संबंधित मुद्दे