Использовать следующий фрагмент кода
При выполнении выдает следующий вывод.
serial port : Communications Port (COM1)
serial port : Communications Port (COM2)
Не забудьте добавить
using System;
using System.Management;
using System.Windows.Forms;
Также добавьте ссылку на system.Management
(по умолчанию она недоступна)
C #
private void GetSerialPort()
{
try
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_PnPEntity");
foreach (ManagementObject queryObj in searcher.Get())
{
if (queryObj["Caption"].ToString().Contains("(COM"))
{
Console.WriteLine("serial port : {0}", queryObj["Caption"]);
}
}
}
catch (ManagementException e)
{
MessageBox.Show( e.Message);
}
}
VB
Private Sub GetAllSerialPortsName()
Try
Dim searcher As New ManagementObjectSearcher("root\CIMV2", "SELECT * FROM Win32_PnPEntity")
For Each queryObj As ManagementObject In searcher.Get()
If InStr(queryObj("Caption"), "(COM") > 0 Then
Console.WriteLine("serial port : {0}", queryObj("Caption"))
End If
Next
Catch err As ManagementException
MsgBox(err.Message)
End Try
End Sub
Обновление:
Вы также можете проверить на
if (queryObj["Caption"].ToString().StartsWith("serial port"))
вместо
if (queryObj["Caption"].ToString().Contains("(COM"))