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

时间:2018-12-12 15:50:37

标签: c# .net windows bluetooth pairing

我遇到了问题。我需要取消配对,或者从Windows中删除蓝牙设备。 在这里,我的手机Redmi已配对

enter image description here

我需要取消配对,所以基本上我想实现与按“删除设备”按钮相同的效果

我尝试过此操作,但对我而言无效,因为此解决方案会断开蓝牙设备的连接,但仍保持配对状态:How to disconnect a bluetooth device from C# .Net in Win7

我正在使用C#WPF和InTheHand库进行配对,但是它没有取消配对功能

我如何实现我的目标?谢谢

1 个答案:

答案 0 :(得分:3)

要取消经典蓝牙设备的工作,必须调用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);
}

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