【问题标题】:Are there APIs to enable/disable Bluetooth on Windows 8.1?是否有 API 可以在 Windows 8.1 上启用/禁用蓝牙?
【发布时间】:2014-12-13 12:26:37
【问题描述】:

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

在 Android 上,这可以通过 BluetoothAdapter.enable()BluetoothAdapter.disable() 实现,但我无法在 Windows 上找到任何可以做到这一点的东西(尽管看起来绝对有可能)。

所以我尝试过使用:

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

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

TL;DR

是否有任何 API、WMI 接口或其他任何可用于实现功能等同于翻转蓝牙拨动开关的结果?如果没有,是否有任何替代方法可以产生类似的结果?

【问题讨论】:

  • '如何才能做到这一点?如果无法实现与拨动开关等效的功能,是否有任何替代方法可以产生类似的结果?'您尝试了什么,特别是在哪里失败了。只要求工作代码是 OT,对不起!如果您删除c++ 标签,您可能会获得更好的结果和更积极的回应。
  • @πάνταῥεῖ:问题不要求工作代码。适当的 API 函数(如果有的话)的简要描述将是一个完全合理的答案。请密切投票者注意,这不是调试问题;如果“寻求调试帮助的问题”的理由被滥用太多,它就会被我们拿走。 :-(
  • @πάνταῥεῖ - 就是这样,我已经搜索并找不到任何东西,这就是为什么我来这里看看是否有人有任何可以分享的相关知识。我想我可以通过询问“今天是否有任何 Windows API 可以做到这一点?”来更具体一些。但我没有从那开始,因为我不想排除任何不依赖 API 的选项(例如 WMI 接口或类似的东西)。
  • 通过屏幕截图中的开关将其关闭;如果您随后进入设备管理器并看到它标记为 disabled 您可以使用setupdi() 系列 API 来实现相同的结果。如果没有,请查找相应的 wmi 类,看看它们是否允许禁用。
  • 遗憾的是,无线电管理 API aren't public;我不知道为什么,因为 API 相当不错。

标签: windows winapi bluetooth windows-8.1


【解决方案1】:

在win8.1中你应该可以调用BluetoothEnableRadio来启用/禁用本地收音机。

基本上,制造商应该提供一种方法来实现这一点,这样您就不必加载 dll。

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

查看有关它的链接: http://msdn.microsoft.com/en-us/library/windows/hardware/hh450832%28v=vs.85%29.aspx

【讨论】:

    猜你喜欢
    • 2014-07-25
    • 2015-11-22
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 2015-07-10
    • 2014-09-14
    相关资源
    最近更新 更多