web-dev-qa-db-fra.com

Scripting Connexion / Déconnexion d'un périphérique Bluetooth apparié

Existe-t-il un moyen, via PowerShell ou tout autre outil de connexion et de déconnexion d'un périphérique Bluetooth couplé? En gros, appuyez sur la touche Connect/Deconnect dans Bluetooth et d'autres périphériques, à l'exception de la ligne de commande de tout type (PowerShell, chauve-souris à l'aide de certains outils de ligne de commande, code en C #, C++, etc.):

Bluetooth & other devices

J'ai trouvé cela Réponse Mais cela implique une fois de pair et de jumeler à nouveau, ce qui ne fonctionnera pas car mes écouteurs doivent être en mode de jumelage pour accepter de nouveaux jumelages. Je préférerais ne pas simuler des clics de clavier et de souris via AutoIt ou un autre logiciel comme celui-là.

12
MarcinJ

J'ai écrit C++ code pour le faire en utilisant Win32 Bluetooth API's BluetoothSetServiceState , mais il suffit d'utiliser Outils de ligne de commande Bluetooth .

Comme il s'avère, une fois que tous les services utilisés par un périphérique sont désactivés, le périphérique est libéré et déconnecté par Windows automatiquement. Dans mon cas, ce sont la voix et la musique, conformément à la capture d'écran et la plupart des écouteurs fonctionneront de la même manière.
La voix est en fait le service mains libres (HFP) et la musique est juste un évier audio (A2DP). Les identificateurs de service seront nécessaires et ils peuvent être découverts via l'utilisation de la commande btdiscovery à partir du package ci-dessus ou via la liste de Bluetooth Services . La voix HFP est 111e, La musique A2DP est 110b.

Par btcom Aide de ligne de commande:

Usage:

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.

Pour déconnecter le périphérique, émettez ce qui suit (fonctionne uniquement lorsque vous exécutez l'administrateur dans mon cas, à l'aide de 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

Pour se connecter à nouveau, émettez la même chose avec -c à la place de -r. Cela fonctionne pour d'autres périphériques, pas seulement un casque, tant que tous les services/profils connectés par Windows sont désactivés/activés.

Remarque: Utiliser -n <friendly name> est beaucoup plus lent que d'utiliser -b <address> En raison de la découverte Bluetooth.

12
MarcinJ

Peut-être Get-PnPDevice, Disable-PnPDevice et Enable-PnPDevice va faire le tour pour vous. Je n'ai pas pu le tester cependant.

Exemple:

$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

Changer la $DeviceName variable au nom de votre appareil BT.

get-pnpdeviceActiver-pnpdevicedésactiver-pnpdevice

0
Smeerpijp

J'ai testé le script de VBS ci-dessous avec succès dans Windows 10. Ici, je simule ici les claviers à l'aide de la commande SendKeys. Le nombre de {onglets} sera différent de votre système pour atteindre le nom du périphérique Bluetooth.

Set wskshell = wscript.createObject ("wscript.shell") wshshell.run "paramètres MS: Bluetooth" wscript.sleep 2500 wshshell.sendkeys "{onglet}" wshshell.sendkeys "{onglet}" wshshell.sendkeys "{onglet} "Wshshell.sendkeys" {entrer} "wscript.sleep 500 'wskhell.sendkeys" {onglet} "wscript.sleep 500' wshshell.sendkeys" {entrer} "

0
user1244032