سؤال

هل هناك طريقة في التعليمات البرمجية المدارة لسرد أجهزة المودم/الهاتفية المثبتة على النظام؟ إذا لم يكن لدى .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

قد ترغب أيضًا في إلقاء نظرة على هذه المقالة: CodeProject: كيفية: (تقريبًا) كل شيء في 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