windows - 是否有用于在 Windows 8.1 上启用/禁用蓝牙的 API?

标签 windows winapi bluetooth windows-8.1

在 Windows 8/8.1 中,现在可以通过操作系统本身启用/禁用蓝牙(见下图)。这很棒,因为它与设备/驱动程序无关。

在 Android 上,这可以通过 BluetoothAdapter.enable() 实现和 BluetoothAdapter.disable() ,但我还没有找到任何可以在 Windows 上执行此操作的方法(尽管看起来绝对有可能)。

所以我尝试使用:

  • BluetoothEnableIncomingConnections() - 但是,这只会阻止新的传入连接。它不会禁用现有的。
  • devcon.exe - 这种方法的问题是 A. 它是一个不可再分发的二进制文件 B. 它要求您提前知道他的设备 ID(因此它不是设备/驱动程序不可知论者)。此外,虽然它不是破坏交易的因素,但最好要求提升。
  • UI 自动化 - 只需启动 PC 设置应用程序并使用键盘事件切换开关就很容易,但无论是在正确的编码实践还是在用户体验方面,它都非常丑陋。话虽如此,这是迄今为止我发现实现我正在寻找的行为的唯一方法。

Bluetooth Toggle Switch

我正在用 C++ 编写 native Win32 应用程序,因此我不受任何 Windows 应用商店应用程序要求的限制,不过,如果有一种不需要提升的方法,那就太好了。

长话短说

是否有任何 API、WMI 接口(interface)或其他任何东西可用于实现与拨动蓝牙切换开关功能相同的结果?如果没有,是否有其他方法可以产生类似的结果?

最佳答案

在 win8.1 中,您应该可以调用 BluetoothEnableRadio 来启用/禁用本地 radio 。

基本上,制造商应该包含一个方法来完成此操作,这样您就不必加载 dll。

从 Windows 8.1 开始,供应商不再需要按照本主题所述在软件 DLL 中实现 radio 开/关功能(用于蓝牙 4.0 radio ),因为操作系统现在可以处理此功能。Windows 8.1将忽略任何此类 DLL,即使存在也是如此。"

查看此链接,其中讨论了它: http://msdn.microsoft.com/en-us/library/windows/hardware/hh450832%28v=vs.85%29.aspx

关于windows - 是否有用于在 Windows 8.1 上启用/禁用蓝牙的 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24235524/

相关文章:

android - 跨平台日志宏在 Windows 上不起作用

c# - 在 C# 中搜索 Windows 用户 SID

c - Linux、OSX 和 Windows 上的基本 TCP 客户端

c# - 将文件夹内部移动的最佳方法是什么?

c++ - 恢复中止的下载?

java - 无需用户输入密码即可以编程方式配对蓝牙设备

Android 2.2 以编程方式判断我的蓝牙耳机是否在应用程序启动时连接

node.js - 如何创建智能合约实例并与我的智能合约功能交互?

c++ - 将 Buddy 窗口分配给 Spin Control - ResEdit (C++)

android - 如何以编程方式将 2 个 android 设备与蓝牙连接?