2009-08-12 7 views
6

मैं यह जानना चाहता हूं कि डिवाइस के ईथरनेट बंदरगाह से कोई डिवाइस कनेक्ट होने पर मेरा एप्लिकेशन चालू हो रहा है। मुझे पता है कि यूएसबी पोर्ट के साथ ऐसा कैसे करें लेकिन समस्या यह है कि पोर्ट यूएसबी नहीं है!मेरे विनफॉर्म एप्लिकेशन में ईथरनेट पोर्ट सम्मिलन/निष्कासन का पता लगाना?

यदि यह एक यूएसबी डिवाइस था तो मैं बस WndProc को ओवरराइड करता हूं और संदेश को पकड़ता हूं, अगर यह WM_DEVICECHANGE है, तो मैं विजेता पर हूं, मैं सोच रहा था कि यह किसी भी डिवाइस के साथ जितना आसान हो सकता है बंदरगाह में प्लग?

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

उत्तर

2

मैंने इसे कभी भी इस्तेमाल नहीं किया, लेकिन मुझे लगता है कि NetworkChange.NetworkAvailabilityChanged ईवेंट आपकी आवश्यकताओं के अनुरूप हो सकता है।

अद्यतन

एक संक्षिप्त जांच इंगित करता है कि NetworkChange.NetworkAddressChanged बेहतर काम कर सकते हैं:

public static void Main() 
{ 

    NetworkChange.NetworkAddressChanged += (s, e) => 
    { 
     NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); 
     foreach (var item in nics) 
     { 
      Console.WriteLine("Network Interface: {0}, Status: {1}", item.Name, item.OperationalStatus.ToString()); 
     } 
    }; 

    string input = string.Empty; 
    while (input != "quit") 
    { 
     input = Console.ReadLine(); 
    } 
} 
0

मैं अगर है कि वास्तव में अपनी आवश्यकताओं के लिए अनुकूल है यकीन नहीं है, लेकिन आप System.Net.NetworkInformation.NetworkChange पर एक नज़र हो सकता था कक्षा, जिसमें 2 घटनाएं हैं जिनका आप उपयोग कर सकते हैं:

  • NetworkAddressChanged
  • NetworkAvailabilityChanged

ईवेंट हैंडलर में, आप देख सकते हैं कि नेटवर्क इंटरफेस शामिल एक ईथरनेट पोर्ट

0

NetworkChange वर्ग एक NetworkAvailabilityChanged घटना प्रदान करता है शुरू हो रहा है जब इंटरफेस ऊपर या उपाध्यक्ष के लिए नीचे से स्विच है विपरीत। संभावित रूप से कम स्तर के रूप में नहीं, जैसा कि आप खोज रहे हैं लेकिन आप इस घटना को ट्रैक करने में अपने उद्देश्य में विशिष्ट नहीं हैं।

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