微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否有API调用来开始扫描硬件设备

与此问题相关,但是…是否可以通过API触发新的硬件设备扫描? 我有一个串口蓝牙设备,我通过与32feet.net .NET蓝牙的 API调用自动配对,这很好地工作。 虽然我可以查询设备扫描中的串行服务,但COM端口不会显示在“蓝牙设备”对话框的“COM端口”选项卡中。

如果存在Microsoft sql Server实例,则绕过sqlExpress的安装

扩展时重绘comboBox项目

C# – 方法必须有返回types

我的dotnet应用程序不能在Windows Server 2003上运行

使用win32 API函数启用/禁用任务pipe理器,而不是通过Windowsregistry

与在Windows设备管理器中以编程方式卸载设备有关

我从那里回答:

要强制执行“扫描硬件更改”结帐“ 如何强制重新枚举设备树从应用程序 ”该示例显示如何强制整个树重新枚举。

不知道这是否会帮助你的整体问题,但这应该回答你的第一句话的问题。

我原来在几年前使用Nullsoft的NSIS安装程序做了这样的事情。

如果你只是想触发一个香草硬件扫描,你可以使用下面的代码在这个问题中用.net标记在C#中提供):

这是P / Invoke函数的包装类

public static class Win32Api { public const int CM_LOCATE_DEVNODE_norMAL = 0x00000000; public const int CM_REENUMERATE_norMAL = 0x00000000; public const int CR_SUCCESS = 0x00000000; [DllImport("CfgMgr32.dll",SetLastError=true)] public static extern int CM_Locate_DevNodeA(ref int pdnDevInst,string pdeviceid,int ulFlags); [DllImport("CfgMgr32.dll",SetLastError=true)] public static extern int CM_Reenumerate_DevNode(int dnDevInst,int ulFlags); }

这是如何使用它们的示例

int pdnDevInst = 0; if (Win32Api.CM_Locate_DevNodeA(ref pdnDevInst,null,Win32Api.CM_LOCATE_DEVNODE_norMAL) != Win32Api.CR_SUCCESS) throw new Exception("something..."); if (Win32Api.CM_Reenumerate_DevNode(pdnDevInst,Win32Api.CM_REENUMERATE_norMAL) != Win32Api.CR_SUCCESS) throw new Exception("something else...");

我刚刚从MSDN C ++文档中快速翻译过来,并在秒杀中对其进行了测试,所以我知道它可行,但这不是生产质量。 另外,如果您关心具体的返回码,则可以在cfgmgr32.h中查找它们。

我的答案在下面有帮助吗? 我怎样才能找出在C#中的蓝牙设备的COM端口号?

简而言之,使用System.IO.Ports.SerialPort.GetPortNames()或WMI列出串行端口,例如PowerShell命令:

C:> Get-WmiObject -query "select deviceid,PNPdeviceid from Win32_SerialPort"

这也可以在代码中完成。

刚刚找到这个SO帖子 ,也可以解决我的问题或其他人发现这个问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐