views:

419

answers:

1

Hi all,

Is there a way in managed code to list the Modem/Telephony devices installed on the system?

If .Net does not have a way, could you point me in a direction?

Thanks!

+2  A: 

WMI will contain all the information you need in the Win32_POTSModem class. In C# or .Net, you can utilize the System.Management namespace to query WMI.

Within .Net, you can use MgmtclassGen.EXE from the platform SDK to generate a class object representing the WMI class.

The command line would be like this:

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\mgmtclassgen.exe Win32_POTSModem /L CS /P c:\POTSModem\Win32_POTSModem.cs

and then you can use that in your code:

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);
    }
  }
}

Output looks like this:

ThinkPad Modem - Internal Modem
        Speed: 56000

You also might want to take a look at this article: CodeProject: How To: (Almost) Everything In WMI via C# - Part 3: Hardware.. The author has created a simple class wrapper around WMI objects similar to MgmtclassGen.exe, but its all done for you.

Christopher_G_Lewis