Alternando dispositivo de áudio padrão com um arquivo em lotes

22

Estou tentando escrever um arquivo em lotes no Windows 10 que permita alternar entre o fone de ouvido e os alto-falantes como dispositivo de áudio padrão quando o executo. Não quero usar nenhum software de terceiros.

Tentei pesquisar, mas só encontrei scripts antigos que parecem não funcionar e também se referem a um HKCU:\Software\Microsoft\Windows\CurrentVersion\Applets\Volume Control\caminho que parece não existir mais. Não consigo encontrar nenhuma informação no registro do Windows 10 sobre isso, também não me sinto confortável em mexer muito com o registro se não tiver certeza do que estou fazendo.

zerothehero
fonte
11
Se você desistir de não querer usar terceiros, uso o audioswit.ch/er [sim, esse é o URL real] há cerca de 5 anos. Tecla de atalho comutável também. [sem afiliação.]
Tetsujin

Respostas:

33

Aprecio que você não deseja usar nenhum software de terceiros, mas como opção, se você não se importa em usar um ~ 100kb exe, pode usar o Nircmd com os comandos:

nircmd setdefaultsounddevice "Speakers" 1

ou

nircmd setdefaultsounddevice "Headphones" 1

Você precisa se certificar de usar o nome exato dos seus dispositivos de áudio, conforme listado em Playback Devices(clique com o botão direito do mouse no controle de som na bandeja do sistema). Pode ser mais fácil renomeá-los Propertiespara nomes mais simples, especialmente se os nomes entrarem em conflito.

O 1no final do comando significa "Dispositivo padrão". Usar 2significa "Dispositivo de comunicação padrão".


Se você realmente não deseja usar uma ferramenta de terceiros, veja a diferença de uma chave do Registro que parece mudar quando troco meu dispositivo de som padrão; pode ser de alguma utilidade para você, mas não sei exatamente o que está fazendo. Não é tão simples quanto 1 ou 0 para indicar se é um padrão, ao que parece.

insira a descrição da imagem aqui

Jonno
fonte
+1 de mim. Este é o melhor caminho a percorrer. Se você realmente não quiser colocar o nircmd em algum lugar do seu disco rígido (acredite em mim, é ótimo), a alternativa seria alterná-lo duas vezes e fazer uma exportação reg da chave mencionada aqui e executar o direito .reg Arquivo. Não tenho certeza se isso vai funcionar, mas essa seria minha abordagem alternativa.
LPChip
Obrigado pela resposta, na verdade eu me deparei com o nircmd, mas estava realmente curioso para encontrar uma maneira de fazer isso sem nenhum software de terceiros. Se nenhum outro método aparecer, considerarei usá-lo.
Zerothehero
+1. Tentei a abordagem do registro, mas não é tão fácil como foi sugerido (pelo menos com o W10). Usando NirCmd bem agora :)
MBaas
6

Desde o Windows 8 (ou talvez antes?), A configuração de áudio do PC é armazenada HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render. Abaixo, Renderhá chaves nomeadas por GUID, cada uma contendo o DeviceStatevalor dword na raiz. Mas como é codificado?

Consulte DEVICE_STATE_XXX constantes no MSDN :

  • 1 Ativo
  • 2 Desativado
  • 4 Não está presente
  • 8 Desconectado

Portanto, o script powershell / bat para alternar entre 1 e 2 deve fazer o truque.

EDIT: Para obter o nome do dispositivo legível por humanos, leia {b3f8fa53-0004-438e-9003-51a46e139bfc},6na Propertiessubchave

Aziz Kabyshev
fonte
Oi Aziz, tentei isso no W10, mas funcionou apenas uma vez - e quando tentei mudar para o dispositivo anterior via lote, ele desapareceu subitamente da lista que você obtém ao clicar no ícone da bandeja para áudio. Também descobri que eu precisava para obter permissões para esse registro-chave em primeiro lugar (ver groovypost.com/howto/... )
MBaas