Comutando o dispositivo de áudio padrão com um arquivo de lote

15

Estou tentando gravar um arquivo de lote no Windows 10 que me permite alternar entre meu fone de ouvido e meus alto-falantes como dispositivo de áudio padrão quando eu o executo. Não quero usar nenhum software de terceiros.

Eu tentei pesquisar, mas só encontrei scripts antigos que parecem não funcionar e também se referem a um caminho HKCU:\Software\Microsoft\Windows\CurrentVersion\Applets\Volume Control\ que parece não existir mais. Não consigo encontrar nenhuma informação sobre o 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.

    
por zerothehero 18.03.2016 / 18:44

2 respostas

17

Eu aprecio que você não queira usar qualquer software de terceiros, mas como uma opção para se você não se importa em usar um exe ~ 100kb, você pode usar Nircmd com os comandos:

nircmd setdefaultsounddevice "Speakers" 1

ou

nircmd setdefaultsounddevice "Headphones" 1

Você precisa certificar-se de usar o nome exato de 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 em Properties para nomes mais simples, especialmente se os nomes entrarem em conflito de alguma forma.

O 1 no final do comando significa "Dispositivo padrão". Usando 2 significa "Dispositivo de Comunicação Padrão".

Se você realmente não quer usar uma ferramenta de terceiros, aqui está um diff de uma chave de registro que parece mudar quando eu mudo meu dispositivo de som padrão, pode ser de alguma utilidade para você, mas eu não sabe exatamente o que está fazendo. Não é tão simples quanto 1 ou 0 para indicar se é um padrão, parece.

    
por 18.03.2016 / 19:10
5

Como a configuração de áudio do Windows 8 (ou talvez anterior?) do PC está armazenada em HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render . Em Render , há chaves com o nome do GUID, cada uma contendo DeviceState dword na raiz. Mas como é codificado?

Consulte as Constantes DEVICE_STATE_XXX no MSDN :

  • 1 Ativo
  • 2 Desativado
  • 4 Não presente
  • 8 desconectados

Então script powershell / bat para alternar entre 1 e 2 deve fazer o truque.

EDITAR: Para obter um nome de dispositivo legível, leia {b3f8fa53-0004-438e-9003-51a46e139bfc},6 em Properties subkey

    
por 19.03.2016 / 11:02