答案1
本地蓝牙无线电有两种状态:
- 可连接状态表示蓝牙设备可以接受连接。
- 可发现状态允许其他设备发现您的设备。
在早期的 Windows 版本中,有两个复选框:“允许发现...”和“允许连接...”。我不知道为什么第二个复选框在 Windows 10 中被删除了。
但是,您可以使用 BluetoothEnableDiscovery() 和 BluetoothEnableIncomingConnections() 函数以编程方式控制状态。
正如您要求的那样,无需编程,您可以从 PowerShell 调用函数(以下链接描述了如何从 PowerShell 调用 WinAPI:https://devblogs.microsoft.com/scripting/use-powershell-to-interact-with-the-windows-api-part-1/)
或者我编写了一个非常简单的控制台应用程序来切换蓝牙无线电状态。您可以通过此链接找到其源代码和编译后的 exe:https://github.com/btframework/DiscCtrl
答案2
这个问题有点基于误解。允许蓝牙设备查找此电脑不会被忽略。根据设计1(Windows 10 中的一项功能,而不是错误),给定的 PC 在以下情况下可被蓝牙发现:
- 提及设置应用程序页面已打开/可见,
- 提及蓝牙设置窗口可见。
当两者都关闭时,即使蓝牙仍然处于启用状态并且您可以将任何设备与您的 PC 配对,蓝牙可发现性也应该自动关闭(并且您的 PC 不应该被任何其他设备发现)。
如果由于任何原因,这没有按预期工作,则参考Mike Petrichenko 的回答以上(已接受的)寻找任何可能的解决方案。
1 许多系统、应用程序和解决方案都实现了类似的功能。例如,在许多基于 Android 的设备和许多版本的 Android 系统下,只有当您实际显示 Android 设置的蓝牙部分时,您的设备才会变为蓝牙可发现的。并且,每当您将此屏幕移至其他屏幕时,给定设备的可发现性都会默认关闭。
答案3
我不认为有一个简单的方法可以解决这个问题
顺便说一句,测试方法不可靠
BluetoothEnableIncomingConnections
并BluetoothEnableDiscovery
专为传统蓝牙而设计- 现代 Android/iOS 手机专为 BluetoothLE 设计
Win32 API 只实现了一半,这真是让人恼火——来自 Microsoft MVP