【问题标题】:List all System Modems列出所有系统调制解调器
【发布时间】:2009-11-18 14:42:24
【问题描述】:

托管代码中是否可以列出系统上安装的调制解调器/电话设备? 如果.Net 没有办法,你能给我指个方向吗?

【问题讨论】:

  • 调制解调器?我记得那些...虽然我也记得软盘和打印机...

标签: c# .net modem telephony


【解决方案1】:

WMI 将在Win32_POTSModem 类中包含您需要的所有信息。在 C# 或 .Net 中,您可以利用 System.Management 命名空间来查询 WMI。

在 .Net 中,您可以使用平台 SDK 中的MgmtclassGen.EXE 来生成代表 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: How To: (Almost) Everything In WMI via C# - Part 3: Hardware.。作者围绕 WMI 对象创建了一个简单的类包装器,类似于 MgmtclassGen.exe,但它全部为您完成。

【讨论】:

    【解决方案2】:

    只是对后代的一些想法。

    @Christopher_G_Lewis 提供了非常好的解决方案。 但在使用 WMI 之前,我们必须检查 Windows Management InstrumentationWMI,服务名称 Winmgmt)是否正常工作(怎么做?)。当然,MS 建议不要碰这个服务,因为它是系统的一部分,但人们有时会关闭它。

    此外,有时在使用之前check WMI version 可能会有所帮助。

    如果您想获取当前已连接的调制解调器列表,您可以查看this solution。它运行缓慢,但会显示所有连接的调制解调器并排除Null modem cables

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      • 2014-03-26
      • 1970-01-01
      相关资源
      最近更新 更多