質問
システムにインストールされているモデム/テレフォニー デバイスをマネージド コードで一覧表示する方法はありますか?.Net に方法がない場合、方向性を教えていただけますか?
解決
WMIを使用すると、Win32_POTSModem
クラスに必要なすべての情報が含まれています。 C#や.NETでは、WMIを照会するSystem.Management
名前空間を利用することができます。
.NET内、あなたが使用することができます MgmtclassGen.EXE プラットフォームSDKからWMIクラスを表すクラスオブジェクトを生成する。
コマンドラインは次のようになります:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\mgmtclassgen.exe Win32_POTSModem /L CS /P c:\POTSModem\Win32_POTSModem.cs
、その後、あなたのコードでそれを使用することができます:
using System;
using System.Collections.Generic;
using System.Management;
using ROOT.CIMV2.Win32;
public class MyClass
{
public static void Main()
{
foreach (POTSModem modem in POTSModem.GetInstances()) {
Console.WriteLine(modem.Description);
}
}
}
出力は次のようになります:
ThinkPad Modem - Internal Modem
Speed: 56000
また、この記事を見てみたいことがあります: CodeProjectの:どのようにするには:( C#を経由でWMIのほぼ)すべて - 第3部:ハードウェアに。著者は、WMIの周りに単純なクラスラッパーを作成しましたMgmtclassGen.exeと同様のオブジェクトが、そのすべてのあなたのために行われます。
他のヒント
将来の世代のためのいくつかの考え。
@Christopher_G_Lewis は非常に良い解決策を提供してくれました。ただし、WMI を使用する前に次のことを確認する必要があります。 Windows Management Instrumentation
(WMI
, 、 サービス名 Winmgmt
) は働いている (どうやってするの?)。もちろん、MS はこのサービスには触れないことをお勧めします。これはシステムの一部であるためですが、時々このサービスをオフにする人もいます。
さらに、場合によっては役立つこともあります WMIのバージョンを確認する 使用する前に。
あなたがしたい場合は モデムリストを取得する それは 接続されています 現時点では、チェックアウトできます この解決策. 。動作は遅いですが、接続されているすべてのモデムを表示し、モデムを除外します。 Null modem cables
.