Liste todos os modems do sistema
Pergunta
Existe uma maneira no código gerenciado para listar os dispositivos modem/telefonia instalados no sistema? Se .NET não tiver uma maneira, você poderia me apontar em uma direção?
Solução
WMI conterá todas as informações necessárias no Win32_POTSModem
classe. Em c# ou .net, você pode utilizar o System.Management
namespace para consultar o WMI.
Dentro .NET, você pode usar Mgmtclassgen.exe Do SDK da plataforma para gerar um objeto de classe que representa a classe WMI.
A linha de comando seria assim:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\mgmtclassgen.exe Win32_POTSModem /L CS /P c:\POTSModem\Win32_POTSModem.cs
E então você pode usar isso em seu código:
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);
}
}
}
A saída se parece com o seguinte:
ThinkPad Modem - Internal Modem
Speed: 56000
Você também pode querer dar uma olhada neste artigo: CodeProject: Como: (quase) tudo no WMI via C# - Parte 3: Hardware.. O autor criou um invólucro de classe simples em torno de objetos WMI semelhantes ao mgmtclassgen.exe, mas tudo está feito para você.
Outras dicas
Apenas alguns pensamentos para as gerações futuras.
@Christopher_g_lewis forneceu uma solução muito boa. Mas antes de usar o WMI, temos que verificar isso Windows Management Instrumentation
(WMI
, Nome do Serviço Winmgmt
) está funcionando (como fazer isso?). Obviamente, a MS recomenda não tocar nesse serviço, porque faz parte do material do sistema, mas às vezes as pessoas o deslizam às vezes.
Além disso, às vezes pode ser útil Verifique a versão WMI antes de usá -lo.
Se você quiser Obtenha a lista de modems que são conectado No momento, você pode conferir esta solução. Funciona devagar, mas mostra todos os modems conectados e exclui Null modem cables
.