Existe uma maneira, por meio do powershell ou de qualquer outra ferramenta, de conectar e desconectar um dispositivo Bluetooth emparelhado? Basicamente, pressione o botão Conectar/Desconectar no Bluetooth e em outros dispositivos, exceto na linha de comando de qualquer tipo (Powershell, bat usando algumas ferramentas de linha de comando, código em C#, C++, etc.):
Encontrei esta resposta , mas envolve desemparelhar e emparelhar novamente, o que não funcionará porque meus fones de ouvido precisam estar no modo de emparelhamento para aceitar um novo emparelhamento. Prefiro não simular pressionamentos de teclas e cliques do mouse via AutoIt ou algum outro software como esse.
Escrevi o código C++ para fazer isso usando a API do Bluetooth do Win32
BluetoothSetServiceState
, mas na verdade é suficiente usar as ferramentas de linha de comando do Bluetooth .Acontece que, uma vez que todos os serviços em uso por um dispositivo são desativados, o dispositivo é liberado e desconectado pelo Windows automaticamente. No meu caso, são voz e música, conforme a captura de tela, e a maioria dos fones de ouvido funcionará da mesma maneira.
A voz é, na verdade, o serviço mãos livres (HFP) e a música é apenas um coletor de áudio (A2DP). Identificadores de serviço serão necessários e podem ser descobertos através do uso do
btdiscovery
comando do pacote acima, ou através da lista de serviços Bluetooth . Voz HFP é111e
, música A2DP é110b
.Por
btcom
ajuda da linha de comando:Para desconectar o dispositivo, emita o seguinte (funciona apenas quando executado como administrador no meu caso, usando o Windows 10 1809 (17763.437)):
Para se conectar novamente, emita o mesmo com
-c
em vez de-r
. Isso funciona para outros dispositivos, não apenas fones de ouvido, desde que todos os serviços/perfis conectados pelo Windows sejam desativados/ativados.Observação: usar
-n <friendly name>
é muito mais lento do que usar-b <address>
devido à descoberta de Bluetooth.Caso a solução de @MarcinJ com Bluetooth Command Line Tools seja muito lenta para você, especialmente caso você queira emparelhar o dispositivo enquanto uma chamada recebida, tente criar um atalho do Windows:
(Clique com o botão direito do mouse > Novo > Atalho)
Ele exibirá um painel de exibição e áudio diretamente na tela, que está a um clique de conectar.
E um belo ícone BT para o atalho pode ser encontrado, por exemplo, em
C:\Windows\System32\fsquirt.exe
.ganhe 10 atalhos https://www.windowscentral.com/best-windows-10-keyboard-shortcuts
win-key + K abre o menu da barra lateral e procura instantaneamente por dispositivos bluetooth. em seguida, clique no seu dispositivo já emparelhado e conecte-se.
Talvez
Get-PnPDevice
,Disable-PnPDevice
eEnable-PnPDevice
fará o truque para você. Eu não fui capaz de testá-lo embora.Exemplo:
Altere a
$DeviceName
variável para o nome do seu dispositivo BT.Get-PnPDevice Enable-PnPDevice Disable-PnPDevice
Editado com base na resposta do OP.
Olhando para a classe subjacente, esse item não é exposto para acesso programático.
Dispositivo Bluetooth. Fechar método
Não parece haver outro documento da API para dizer o contrário. Portanto, parece que você está preso a SendKeys, AutoIT, etc., pelo menos por enquanto.
Eu testei o script vbs abaixo com sucesso no Windows 10. Aqui estou simulando as teclas digitadas usando o
SendKeys
comando. O número de{TAB}
s será diferente em seu sistema para alcançar o nome do dispositivo bluetooth.