Вопрос

Есть ли способ в управляемом коде вывести список модемных/телефонных устройств, установленных в системе?Если у .Net нет способа, не могли бы вы указать мне направление?

Это было полезно?

Решение

WMI будет содержать всю необходимую информацию в Win32_POTSModem сорт.В C# или .Net вы можете использовать System.Management пространство имен для запроса WMI.

В .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

Вы также можете взглянуть на эту статью: КодПроект:Как:(Почти) Всё в WMI через C#. Часть 3:Аппаратное обеспечение..Автор создал простую оболочку класса для объектов WMI, похожую на MgmtclassGen.exe, но все это сделано за вас.

Другие советы

Просто некоторые мысли для будущих поколений.

@Christopher_G_Lewis предоставил очень хорошее решение.Но прежде чем использовать WMI, мы должны это проверить. Windows Management Instrumentation (WMI, наименование услуги Winmgmt) работает (как это сделать?).Конечно, MS рекомендует не трогать эту службу, потому что она часть системы, но люди иногда ее отключают.

Более того, иногда может оказаться полезным проверьте версию WMI прежде чем использовать его.

Если вы хотите получить список модемов которые связанный на данный момент вы можете проверить это решение.Работает медленно, но показывает все подключенные модемы и исключает Null modem cables.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top