为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 C# .NET 在 Windows 中“取消配对”、“删除”蓝牙设备

如何使用 C# .NET 在 Windows 中“取消配对”、“删除”蓝牙设备

C#
莫回无 2022-06-12 10:34:15
我遇到了一个问题。我需要取消配对或从 Windows 中移除蓝牙设备。在这里,我的手机 Redmi 已配对而且我需要取消配对,所以基本上我想达到与按下“删除设备”按钮相同的效果我试过这个,但它对我不起作用,因为这个解决方案断开了蓝牙设备,但它仍然保持配对:How to disconnect a bluetooth device from C# .Net in Win7我正在使用 C# WPF 和 InTheHand 库进行配对,但它没有取消配对功能我如何实现我的目标?感谢
查看完整描述

1 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

要取消经典蓝牙设备,您必须调用BluetoothRemoveDevice函数。


对于.NET,它可以按如下方式导入


[StructLayout(LayoutKind.Explicit)]

struct BLUETOOTH_ADDRESS

{

  [FieldOffset(0)]

  [MarshalAs(UnmanagedType.I8)]

  public Int64 ullLong;

  [FieldOffset(0)]

  [MarshalAs(UnmanagedType.U1)]

  public Byte rgBytes_0;

  [FieldOffset(1)]

  [MarshalAs(UnmanagedType.U1)]

  public Byte rgBytes_1;

  [FieldOffset(2)]

  [MarshalAs(UnmanagedType.U1)]

  public Byte rgBytes_2;

  [FieldOffset(3)]

  [MarshalAs(UnmanagedType.U1)]

  public Byte rgBytes_3;

  [FieldOffset(4)]

  [MarshalAs(UnmanagedType.U1)]

  public Byte rgBytes_4;

  [FieldOffset(5)]

  [MarshalAs(UnmanagedType.U1)]

  public Byte rgBytes_5;

};


[DllImport("BluetoothAPIs.dll", SetLastError = true, CallingConvention = CallingConvention.StdCall)]

[return: MarshalAs(UnmanagedType.U4)]

static extern UInt32 BluetoothRemoveDevice(

  [param: In, Out] ref BLUETOOTH_ADDRESS pAddress);

以下是如何调用它:


UInt32 Unpair(Int64 Address)

{

  BLUETOOTH_ADDRESS Addr = new BLUETOOTH_ADDRESS();

  Addr.ullLong = Address;

  return BluetoothRemoveDevice(ref Addr);

}

请注意,此功能仅允许取消配对经典蓝牙设备。要取消配对蓝牙 LE 设备,您必须使用基于 WinRT 的其他方式。


查看完整回答
反对 回复 2022-06-12
  • 1 回答
  • 0 关注
  • 318 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信