2008-08-23 14 views
7

क्या कोई भी तरीका है, किसी भी भाषा में, जब कोई उपयोगकर्ता फ़ाइल का नाम बदलता है तो मेरे प्रोग्राम को हुक करने के लिए?विंडोज एक्सप्लोरर के नाम बदलें ईवेंट के साथ मेरे प्रोग्राम को हुकिंग

उदाहरण के लिए: उपयोगकर्ता एक फ़ाइल का नाम बदलता है और नाम बदलें की पुष्टि करने के लिए प्रेस (या क्लिक दूर) दबाता है। फ़ाइल से पहले वास्तव में नाम बदल दिया गया है, मेरा प्रोग्राम इस घटना में "सुनता है" और एक संदेश पॉप अप करता है "क्या आप वाकई सी: \ test \ file.txt को C: \ test \ test.txt में बदलना चाहते हैं?"।

मैं सोच रहा/उम्मीद कर रहा हूं कि यह सी ++, सी # या .NET के साथ संभव है .. लेकिन मेरे पास कोई सुराग नहीं है जहां देखना है।

उत्तर

5

आप शायद नेट ढांचे में FileSystemWatcher class का उपयोग करके इस का समाधान कर सकते हैं।

वर्ग की टिप्पणी से

:

आप नाम, विलोपन, या सृजन फाइल या निर्देशिका के लिए देख सकते हैं। उदाहरण के लिए, टेक्स्ट फ़ाइलों का नाम बदलने के लिए, फ़िल्टर गुण को "* .txt" पर सेट करें और के पैरामीटर के लिए निर्दिष्ट नामित RenForChanged विधि को कॉल करें।

0

मेरा अनुमान है जो किसी फ़ोल्डर पर (नाम बदलने सहित) के संचालन की निगरानी के लिए है, कि इस संभव नहीं है मैं this मिला, लेकिन वहाँ फ़ाइलों के लिए एक समान विधि के लिए प्रकट नहीं होता।

@ रिचर्ड, फ़ाइलसिस्टम वाटर अच्छा है अगर आपको केवल परिवर्तनों की निगरानी करने की आवश्यकता है, लेकिन उसे उनको बाधित करने की आवश्यकता है जो यह नहीं कर सकते हैं।

0

IFileOperationProgressSink.PreRenameItem निकटतम समर्थित बात मैं के बारे में पता है। दुर्भाग्यवश, यह एक्सप्लोरर में एक हुक नहीं है - इसलिए आप इसे केवल अपने IFileOperation कार्यों के लिए उपयोग कर सकते हैं। अपनी जरूरतों के आधार पर, आप अपने ConfirmRename (या कुछ), और वहां से शाखा करने के लिए एक खोल एक्सटेंशन लिख सकते हैं।

अन्यथा, आप SHFileOperation hooking पर देख रहे हैं, मुझे लगता है। यह अप्रबंधित कोड में किया जाना होगा, क्योंकि आप Explorer.exe में लोड हो जाएंगे। Vista के लिए, इसे IFileOperation में बदल दिया गया है - जिसका शायद मतलब है कि आपको इसे बनाने और अपने नकली को पार करना होगा।

व्यक्तिगत रूप से, मुझे लगता है कि आप एक नाम बदलने के बाद से बात कर रहे हैं, परिवर्तन के बाद इस बात की पुष्टि , और यह नाश यदि आवश्यक हो तो की wilhelmtell's idea सबसे अच्छा विचार है।

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

  • कोई संबंधित समस्या नहीं^_^