2009-11-23 16 views
6

के माध्यम से एक नया ड्राइव कनेक्ट होने पर अधिसूचना प्राप्त करें मुझे यूएसबी पोर्ट, फायरवायर पोर्ट आदि के माध्यम से विंडोज सिस्टम में एक नया ड्राइव प्लग करने के दौरान पता लगाना चाहिए। मुझे WM_DEVICECHANGE संदेश से अवगत है , लेकिन इसका उपयोग करने के लिए इसे एक खिड़की खोलने की आवश्यकता है। क्या पृष्ठभूमि सी # में प्रक्रिया बनाने का कोई तरीका है जो यह पता लगाता है कि जब नई ड्राइव प्लग इन होती है?यूएसबी या अन्य माध्यमों (सी #)

पृष्ठभूमि जानकारी: मैं कंपनी हटाने योग्य ड्राइव से कीड़े को हटाने के लिए इस ऐप को लिखना चाहता हूं। नियमित एंटीवायरस सॉफ़्टवेयर इसे हटाने में विफल रहा है। हमारे पास एक स्क्रिप्ट है जो कीड़े को हटा देगी, लेकिन इसे मैन्युअल रूप से चलाया जाना चाहिए, जो प्रकोप को शामिल करने के लिए पर्याप्त नहीं है।

उत्तर

4

एक windows service चाल करना चाहिए

एक सेवा के रूप CodeProject DriveDetector दोबारा काम की कोशिश करो और आप क्या जरूरत है

+2

क्या यह और यह काम किया। एक सेवा के लिए, मुझे बस यह सुनिश्चित करना पड़ा कि मैंने एक और थ्रेड बनाया है जो अनंत लूप के साथ बनाया गया है जो एप्लिकेशन को कॉल करता है। DoEvents()। यदि आप ऐसा नहीं करते हैं, तो ड्राइवडेटेटर लटकाएगा और WM_DEVICECHANGE संदेशों को प्राप्त करने में विफल रहेगा। इसके अलावा, मुझे यह सुनिश्चित करना था कि सेवा के लिए डेस्कटॉप इंटरैक्शन सक्षम है, क्योंकि ड्राइवडिएक्टर अपने काम करने के लिए एक छिपे हुए फॉर्म का उपयोग करता है। – Phil

+0

खुशी हुई यह मदद की! –

+3

इस परियोजना पर वापस देखकर, मुझे एहसास है कि सेवा के साथ डेस्कटॉप परस्पर संपर्क की अनुमति देना अच्छा अभ्यास नहीं है। आजकल मैं एक नियमित निष्पादन योग्य बनाने और स्टार्टअप फ़ोल्डर में इसे छोड़ने की सलाह देता हूं। – Phil

0

इस ब्लॉग पोस्ट शो कैसे प्रणाली घटनाओं को संभालने के लिए, https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/howdoi/?p=135 हो सकता है आप इसके लिए उपयोग कर सकते हैं करना चाहिए था यदि आप

+0

दुर्भाग्यवश, डिवाइस परिवर्तन से संबंधित किसी भी सिस्टम ईवेंट को नहीं देखा गया। – Phil

0

को संभालना चाहते हैं तो आपको RegisterDeviceNotification पर सब्सक्राइब करना होगा, और इसे सेवा स्थिति संभाल से जोड़ना होगा। http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/9ae4478a-1133-44ba-8a1c-3e4be3856e37 भी देखें।

मुझे यकीन नहीं है कि इसे कैसे कार्यान्वित किया जाए, यह बहुत समय पहले हुआ है।

0

आप एक छिपी हुई विंडो बना सकते हैं या एक सेवा चला सकते हैं क्योंकि इसे विंडो हैंडल या सर्विस स्टेटस हैंडल के साथ काम करना चाहिए।