Как «отключить», «удалить» устройство Bluetooth в Windows с C # .NET - PullRequest
0 голосов
/ 12 декабря 2018

Я столкнулся с проблемой.Мне нужно отключить или удалить устройство Bluetooth из Windows.Здесь у меня есть телефон Redmi в паре

enter image description here

И мне нужно отключить его, поэтому в основном я хочу добиться того же эффекта, что и нажатие кнопки «Удалить устройство»."button

Я попробовал это, но у меня это не сработало, так как это решение отключает устройство Bluetooth, но оно остается сопряженным: Как отключить устройство Bluetooth от C # .Net в Win7

Я использую C # WPF и библиотеку InTheHand для сопряжения, но у нее нет недопарных функций

Как мне достичь своей цели?Спасибо

1 Ответ

0 голосов
/ 13 декабря 2018

Для отмены вызова классического устройства Bluetooth необходимо вызвать функцию 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);

Вот как позвонитьit:

UInt32 Unpair(Int64 Address)
{
  BLUETOOTH_ADDRESS Addr = new BLUETOOTH_ADDRESS();
  Addr.ullLong = Address;
  return BluetoothRemoveDevice(ref Addr);
}

Обратите внимание, что эта функция позволяет отключать только классические устройства Bluetooth.Чтобы отключить устройства Bluetooth LE, вы должны использовать другой способ, основанный на WinRT.

...