首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在哪里可以找到"Devices and Printers“中显示的名称

在哪里可以找到"Devices and Printers“中显示的名称
EN

Stack Overflow用户
提问于 2014-06-11 04:50:59
回答 2查看 1K关注 0票数 1

我有一个通过蓝牙连接的串行设备。它在COM4上显示得很好。我可以毫不费力地与它通信。

我想让用户更容易找到它(理想情况下,我会自动检测它),所以我想按名称查找它。在“设备和打印机”列表中,我得到了一个有效的名称,这是完美的。但是,我似乎无法通过编程找到该值。我用"ManagementObjectSearcher“类尝试了很多东西,包括列出所有的属性和SystemProperties,但没有一个值与”设备和打印机“中显示的名称相匹配。

如果我查看“设备管理器”列表,它只显示“蓝牙链路上的标准串行(COM4)",这显然对识别它没有用处。

那么我怎么才能在“设备和打印机”列表中获得显示的名称呢?

EN

回答 2

Stack Overflow用户

发布于 2014-06-11 05:41:01

这就是你要找的吗?

http://msdn.microsoft.com/en-us/library/system.drawing.printing.printersettings.installedprinters(v=vs.110).aspx

票数 0
EN

Stack Overflow用户

发布于 2014-06-11 08:24:32

所以,我找到了一个解决方案。我从这些人那里抢走了图书馆:

http://32feet.codeplex.com/

使用该库,添加了以下两行:

代码语言:javascript
复制
BluetoothClient client = new BluetoothClient();
BluetoothDeviceInfo[] devices = client.DiscoverDevices();

这就给了我设备"DeviceName“(我的名字)和"DeviceAddress”(基本上是设备id的一大块)。

然后,我使用"ManagementObjectSearcher“查询系统,它给出了COM端口和设备ID (System.Management名称空间)的列表。

代码语言:javascript
复制
ConnectionOptions options = ProcessConnection.ProcessConnectionOptions();
ManagementScope connectionScope = ProcessConnection.ConnectionScope(Environment.MachineName, options, @"\root\CIMV2");

ObjectQuery objectQuery = new ObjectQuery("SELECT * FROM Win32_PnPEntity");
ManagementObjectSearcher comPortSearcher = new ManagementObjectSearcher(connectionScope, objectQuery);

...etc as I looped over the results, pulled out the COM ports, and so on

我将设备id从"ManagementObject“值映射回"devices”列表,合并结果,最后得到名称、设备id、指示它是否是蓝牙设备的标志以及蓝牙设备的“人类可读”名称(如果存在)的内容。

虽然很痛苦,但它运行得相当好。它很慢(client.DiscoverDevices()需要一段时间),但在我的例子中是可以生存的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24150599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档