web-dev-qa-db-ja.com

ペアリングされたBluetoothデバイスの接続/切断のスクリプト

ペアリングされたBluetoothデバイスを接続または切断する方法は、Powershellまたはその他のツールを介してありますか?基本的に、Bluetoothなどのデバイスの[接続/切断]ボタンを押します。ただし、コマンドライン(Powershell、コマンドラインツールを使用したbat、C#、C++のコードなど)は除きます。

Bluetooth & other devices

これが見つかりました answer ですが、ペアリングを解除してペアリングする必要があります。新しいペアリングを受け入れるには、ヘッドフォンをペアリングモードにする必要があるため、機能しません。 AutoItやそのような他のソフトウェアを介してキープレスやマウスクリックをシミュレートしたくない。

7
MarcinJ

私は Win32 Bluetooth APIのBluetoothSetServiceState を使用してC++コードを記述しましたが、実際には Bluetoothコマンドラインツール を使用するだけで十分です。

結局のところ、デバイスによって使用されているすべてのサービスが無効になると、デバイスはWindowsによって自動的に解放され、切断されます。私の場合、これらはスクリーンショットのように音声と音楽であり、ほとんどのヘッドフォンは同じように機能します。
音声は実際にはハンズフリーサービス(HFP)であり、音楽は単なるオーディオシンク(A2DP)です。サービスIDは必要であり、上記のパッケージのbtdiscoveryコマンドを使用するか、または Bluetoothサービスのリスト を使用して検出できます。 HFP音声は111e、A2DP音楽は110bです。

btcomコマンドラインヘルプごと:

使用法:

btcom {-c|-r} {-bBluetoothAddress | -nFriendlyName} [-s{sp|dun|GUID|UUID}]

 -c  Create association between COM port and a remote service (Enable non-COM service).
 -r  Remove association between COM port and a remote service (Disable non-COM service).
 -s  Remote service to use (Default is Serial Port Service)
 -b  Bluetooth address of remote device in (XX:XX:XX:XX:XX:XX) format. 
 -n  Friendly name of remote device.

デバイスを切断するには、次のコマンドを発行します(私の場合、管理者として実行し、Windows 10 1809(17763.437)を使用している場合にのみ機能します)。

"C:\Program Files (x86)\Bluetooth Command Line Tools\bin\btcom" -n "WH-1000XM3" -r -s111e
"C:\Program Files (x86)\Bluetooth Command Line Tools\bin\btcom" -n "WH-1000XM3" -r -s110b

再度接続するには、-cではなく-rを使用して同じものを発行します。これは、Windowsによって接続されているすべてのサービス/プロファイルが無効/有効になっている限り、ヘッドフォンだけでなく他のデバイスでも機能します。

注:Bluetooth検出を実行するため、-n <friendly name>の使用は-b <address>の使用よりもかなり遅くなります。

6
MarcinJ

多分 Get-PnPDeviceDisable-PnPDeviceおよびEnable-PnPDeviceはあなたのためにトリックを行います。私はそれをテストすることができませんでした。

例:

$DeviceName = "YourDevice"
$BTDevice =  Get-PnpDevice | Where-Object {$_.FriendlyName -eq $DeviceName -and $_.class -eq "Bluetooth"} 

Disable-PnpDevice -InstanceId $BTDevice.DeviceID -Confirm:$false

Enable-PnpDevice -InstanceId $BTDevice.DeviceID -Confirm:$false

変更 $DeviceName変数をBTデバイスの名前に変更します。

Get-PnPDeviceEnable-PnPDeviceDisable-PnPDevice

0
Smeerpijp

OP応答に基づいて編集されました。

基本となるクラスを見ると、その項目はプログラムによるアクセスには公開されていません。

Bluetooth Device。Closeメソッド

クローズ/切断はいつ実装されますか? [Windows.Devices.Bluetooth.BluetoothDevice]

クローズ/切断はいつ実装されますか?切断する予定はありますか? Dispose()は接続を閉じません

849 2019年1月9日にオープン

別の言い方をする別のAPIドキュメントはないようです。したがって、少なくとも今のところ、SendKeysやAutoITなどに悩まされているようです。

0
postanote