6

フィールドの詳細を提供するWindowsアプリケーションを開発しています-> X.

X の場所 -->

[マイ コンピュータ] を右クリック >

    Properties >

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

                   Click it > standard PS/2 KeyBoard >

                                double Click standard PS/2 KeyBoard >

                                           click the Details Tab >

プロパティの下には、表示名、問題コード、親兄弟などのさまざまなフィールドがあります。

それらの値を取得したい。これに使用できる Windows API。Windows 7 と Windows 8 でこれを行っています。API が同じままであることを願っています。また、64 ビット マシンを使用しています。これは、デバイス マネージャーから詳細を知りたいデバイスすべてに当てはまります。

また、すべての操作-読み取りと設定なし(書き込み)が必要なので、管理者権限に違反しても問題はないと思います.お勧めします.! 参照用にスナップショットを追加しました!たとえば、HID USB Complaint Mouse (D0(アクティブ) または D2(スリープ)) の現在の状態を知りたいとします。

HID 準拠マウスの Powerdata フィールドを示す画像

D0 である HID Complaint Mouse の電源状態を示す画像 - アクティブ

この電源状態 D0 を取得する必要があります。

4

3 に答える 3

3

質問は C# でタグ付けされていますが、実際の質問では任意の Window API が求められます。Win32 API を使用すると、SetupDiGetDeviceRegistryProperty()で情報を取得できます。手順は次のとおりです。

  1. SetupDiGetClassDevs()を介して、関心のあるデバイスのデバイス情報セットを取得します。
  2. SetupDiEnumDeviceInfo()を介してデバイス情報を反復処理します。
  3. SetupDiGetDeviceRegistryProperty() を呼び出してプロパティを取得します。
  4. SetupDiDestroyDeviceInfoList()を介して設定されたデバイス情報を破棄します。

ドキュメントによると、API は Windows 2000 以降で使用できます。

于 2014-06-25T15:25:24.250 に答える
3

ManagementObjectCollectionを使用してハードウェア情報を取得するのは非常に簡単 です。

たとえば、PC プロセッサからすべてのプロパティと値を取得するには

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で入手できます。

乾杯。

于 2013-03-05T05:05:50.103 に答える
1

PowerShell でこれを行うのが最も簡単な時間 (と思います) になるでしょう。C# コードを記述している場合は、PowerShell (リンク: http://msdn.microsoft.com/en-us/library/system.management. Automation.powershell(v=vs.85).aspx ) ですが、PS コンソールを使用してテストを開始します。

最初に (PowerShell を使用して) このコマンドを使用して、環境内の WMI オブジェクトを探索する必要があります。

Get-WmiObject -List -namespace root\CIMV2

次に、探しているクラスを識別したら、次のコマンドを使用してそのクラスの詳細を取得できます。

Get-WmiObject -namespace root\CIMV2 -class Win32_USBControllerDevice

そのコンテンツを取得したら、テキストを解析する必要があります。

更新:このコマンドを使用して、PC のマウス ドライバーの「状態」、「ステータス」、および「開始」属性を取得してみてください。

gwmi Win32_SystemDriver | where {$_.DisplayName -like "*Mouse*"}
于 2013-03-03T04:19:19.727 に答える