Elencare tutti i modem di sistema
Domanda
C'è un modo in codice gestito per elencare i dispositivi modem / Telefonia installati sul sistema? Se .NET non dispone di un modo, mi può puntare in una direzione?
Soluzione
WMI conterrà tutte le informazioni necessarie nella classe Win32_POTSModem
. In C # o .Net, è possibile utilizzare lo spazio dei nomi System.Management
per interrogare WMI.
In .Net, è possibile utilizzare MgmtclassGen.EXE dalla piattaforma SDK per generare un oggetto di classe che rappresenta la classe WMI.
La riga di comando sarebbe come questo:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\mgmtclassgen.exe Win32_POTSModem /L CS /P c:\POTSModem\Win32_POTSModem.cs
e quindi è possibile utilizzare che nel codice:
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 assomiglia a questo:
ThinkPad Modem - Internal Modem
Speed: 56000
Si potrebbe anche voler dare un'occhiata a questo articolo: CodeProject: How To: ( quasi) tutto in WMI tramite C # - Parte 3: Hardware .. L'autore ha creato una semplice classe wrapper per oggetti WMI simile a MgmtclassGen.exe, ma il suo tutto fatto per voi.
Altri suggerimenti
Solo alcuni pensieri per le generazioni future.
@Christopher_G_Lewis previste soluzione molto buona.
Ma prima di utilizzare WMI dobbiamo controllare che Windows Management Instrumentation
(WMI
, servizio di nomi Winmgmt
) sta lavorando ( come fare? ). Naturalmente, MS raccomanda non toccare questo servizio, perché fa parte di roba di sistema, ma la gente spegnerlo qualche volta.
Inoltre, a volte può essere utile a verificare la versione WMI prima di utilizzarlo.
Se si desidera ottenere l'elenco dei modem che sono connected in questo momento, è possibile controllare questa soluzione . Funziona lentamente, ma mostra tutti i modem ed esclude collegato Null modem cables
.