2013-02-21 80 views
6

मैं एक विंडोज़ अनुप्रयोग जो क्षेत्र विवरण देता है विकासशील हूँ -> एक्सWindows में पढ़ना डिवाइस प्रबंधक के संपत्ति फील्ड्स 7/8

कहाँ एक्स ->

राइट क्लिक करें मेरा कंप्यूटर>

Properties > 

      Device Manager > (select any Item - Say KeyBoard) > 

        Click it > standard PS/2 KeyBoard > 

           double Click standard PS/2 KeyBoard > 

              click the Details Tab > 

संपत्ति के तहत प्रदर्शन नाम, समस्या कोड, अभिभावक भाई बहन इत्यादि जैसे विभिन्न फ़ील्ड हैं?

मैं उनके मूल्य प्राप्त करना चाहता हूं। मैं किस विंडोज एपीआई का उपयोग कर सकता हूं। मैं विंडोज 7 के साथ-साथ विंडोज 8 के लिए भी कर रहा हूं। मुझे आशा है कि एपीआई वही रहेगी। इसके अलावा मुझे 64 बिट मशीन भी है। यह किसी भी डिवाइस के लिए सच होना चाहिए जिसका विवरण मैं डिवाइस प्रबंधक से जानना चाहता था।

भी मैं बस सभी परिचालनों को पढ़ना चाहता हूं - पढ़ना और कोई सेट (लेखन) इसलिए मुझे लगता है कि मुझे व्यवस्थापकीय अधिकारों का उल्लंघन करने में कोई समस्या नहीं होगी। कृपया सुझाव दें। मैंने संदर्भ के लिए स्नैपशॉट्स जोड़े हैं! उदाहरण के लिए कहें मैं छुपा यूएसबी शिकायत माउस (डी 0 (सक्रिय) या डी 2 (नींद) के वर्तमान राज्य को जानना चाहता हूं।

Image Showing the Powerdata Field for HID Compliant Mouse

Image Showing the Power State for HID Complaint Mouse That is D0 - Active

मैं इस पावर राज्य D0 जाओ की जरूरत है।

उत्तर

1

आपके पास PowerShell के साथ ऐसा करने का सबसे आसान समय (मुझे लगता है) होने वाला है। यदि आप कुछ सी # कोड लिख रहे हैं तो आप सिस्टम में प्रकारों का उपयोग करके एक पीएस स्क्रिप्ट निष्पादित कर सकते हैं। प्रबंधन। ऑटोमेशन नामस्थान, जैसे कि पावरशेल (लिंक: http://msdn.microsoft.com/en-us/library/system.management.automation.powershell(v=vs.85).aspx) लेकिन मैं पीएस कंसोल का उपयोग करके अपना परीक्षण शुरू करूंगा।

आप पहली बार (PowerShell का उपयोग करके) चाहिए पता लगाने WMI तो इस आदेश

Get-WmiObject -List -namespace root\CIMV2 

का उपयोग कर अपने वातावरण में वस्तुओं एक बार आप वर्ग के साथ की पहचान क्या आप इस आदेश का उपयोग उस वर्ग पर विवरण प्राप्त कर सकते हैं के लिए देख रहे हैं:

Get-WmiObject -namespace root\CIMV2 -class Win32_USBControllerDevice 

एक बार जब आप उस सामग्री को प्राप्त कर लेते हैं तो आपको टेक्स्ट को पार्स करना होगा।

अद्यतन: इस आदेश का उपयोग "राज्य", "स्थिति", और "प्रारंभ" अपने पीसी पर माउस ड्राइवरों की विशेषताओं को पाने के लिए प्रयास करें:

gwmi Win32_SystemDriver | where {$_.DisplayName -like "*Mouse*"} 
+0

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

+0

सही क्वेरी के साथ आप उस सटीक मूल्य को प्राप्त कर सकते हैं। मैं अपने उत्तर को परिशोधित कर सकता हूं –

+0

माउस के लिए ऊपर दिए गए आदेश को "पावर डेटा? – Raulp

3

यह हार्डवेयर जानकारी पाने के लिए काफी आसान है ManagementObjectCollection का उपयोग कर।

उदाहरण पीसी प्रोसेसर

var win32DeviceClassName = "win32_processor"; 
      var query = string.Format("select * from {0}", win32DeviceClassName); 

      using (var searcher = new ManagementObjectSearcher(query)) 
      { 
       ManagementObjectCollection objectCollection = searcher.Get(); 

       foreach (ManagementBaseObject managementBaseObject in objectCollection) 
       { 
        foreach (PropertyData propertyData in managementBaseObject.Properties) 
        { 
         Console.WriteLine("Property: {0}, Value: {1}", propertyData.Name, propertyData.Value); 
        } 
       } 



      } 

WIN32 वर्ग के नाम की पूरी सूची से सभी गुण और मूल्यों को प्राप्त करने के लिए http://msdn.microsoft.com/en-us/library/aa394084%28v=VS.85%29.aspx

चीयर्स पर उपलब्ध है।

+0

मैं x64 रनिंग कर रहा हूं, अभी भी मेरे पास है स्ट्रिंग का उपयोग करने के लिए "var win32DeviceClassName =" win32_processor ";" – Raulp

+0

कोड स्निपेट यहां आपके द्वारा किए गए कार्यों को करने के लिए माना जाता है। हां, इसे अपने सी # कंसोल प्रोजेक्ट के मुख्य फ़ंक्शन पर कॉपी करें। यह आपके प्रोसेसर के सभी गुणों का आकलन करेगा। –

+0

क्या आपको पता है कि डेटटाइम ऑब्जेक्ट को "InstallDate" प्रॉपर्टी पर सेट करने का प्रयास करते समय मुझे एक प्रकार का मिलान क्यों मिलता है? –

3

प्रश्न सी # के साथ टैग किया गया है, हालांकि वास्तविक प्रश्न किसी भी विंडो एपीआई के लिए पूछता है। Win32 API के साथ जानकारी SetupDiGetDeviceRegistryProperty() के साथ पुनर्प्राप्त की जा सकती है।चरण होंगे:

  1. SetupDiGetClassDevs() के माध्यम से आपकी रुचि रखने वाले उपकरणों के लिए डिवाइस जानकारी सेट प्राप्त करें।
  2. SetupDiEnumDeviceInfo() के माध्यम से डिवाइस इंफोस के माध्यम से Iterate।
  3. SetupDiGetDeviceRegistryProperty() पर कॉल के माध्यम से गुण प्राप्त करें।
  4. डिवाइस जानकारी को SetupDiDestroyDeviceInfoList() के माध्यम से सेट करें।

दस्तावेज़ीकरण के मुताबिक एपीआई विंडोज 2000 और बाद में उपलब्ध है।

+0

यह सही उत्तर है। प्रश्न में अनुरोध किए गए पावर स्टेटस को खोजने के लिए आपको SetupDiGetDeviceRegistryProperty का उपयोग करके SPDRP_DEVICE_POWER_DATA से पूछताछ करने की आवश्यकता है। – donovan