在 Windows 8/8.1 中,现在可以通过操作系统本身启用/禁用蓝牙(见下图)。这很棒,因为它与设备/驱动程序无关。
在 Android 上,这可以通过 BluetoothAdapter.enable() 实现和 BluetoothAdapter.disable() ,但我还没有找到任何可以在 Windows 上执行此操作的方法(尽管看起来绝对有可能)。
所以我尝试使用:
- BluetoothEnableIncomingConnections() - 但是,这只会阻止新的传入连接。它不会禁用现有的。
- devcon.exe - 这种方法的问题是 A. 它是一个不可再分发的二进制文件 B. 它要求您提前知道他的设备 ID(因此它不是设备/驱动程序不可知论者)。此外,虽然它不是破坏交易的因素,但最好不要求提升。
- UI 自动化 - 只需启动 PC 设置应用程序并使用键盘事件切换开关就很容易,但无论是在正确的编码实践还是在用户体验方面,它都非常丑陋。话虽如此,这是迄今为止我发现实现我正在寻找的行为的唯一方法。
我正在用 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/