Posso criar um bloco para alterar meu dispositivo de áudio padrão?

4

Eu quero alternar facilmente entre alto-falantes e fones de ouvido. Isso é possível?

    
por corwin01 02.11.2012 / 23:12

2 respostas

7

Existem maneiras de alternar o dispositivo de áudio padrão. No entanto, como não existe uma API publicada para isso, as técnicas envolvem principalmente hacks, como tentando enviar as chaves , o que não é muito robusto.

A API é mantida fechada e não documentada para evitar incompatibilidades de hardware, para que os fabricantes não briguem por ela como a página inicial padrão em um navegador. No entanto, alguém conseguiu alternar dispositivos de áudio na linha de comando no Windows 7 , e nos comentários WarNov já " testado no Windows 8. Funciona perfeitamente ".

Lembre-se de que está usando uma API não documentada, portanto, pode invadir futuras versões do Windows.

Como já mencionado por Jerry, você pode criar atalhos com blocos , basta chamar o código C ++. Se você quiser usá-lo no .net, você também pode use um wrapper .

O código também é publicado no GitHub como AudioEndPointController , com documentação fácil de entender sobre como usá-lo:

> EndPointController.exe --help
Lists active audio end-point playback devices or sets default audio end-point
playback device.

USAGE
  EndPointController.exe [-a] [-f format_str]  Lists audio end-point playback
                                               devices that are enabled.
  EndPointController.exe device_index          Sets the default playback device
                                               with the given index.

OPTIONS
  -a             Display all devices, rather than just active devices.
  -f format_str  Outputs the details of each device using the given format
                 string. If this parameter is ommitted the format string
                 defaults to: "Audio Device %d: %ws"

                 Parameters that are passed to the 'printf' function are
                 ordered as follows:
                   - Device index (int)
                   - Device friendly name (wstring)
                   - Device state (int)
                   - Device default? (1 for true 0 for false as int)
                   - Device description (wstring)
                   - Device interface friendly name (wstring)
                   - Device ID (wstring)''

Ele também é embalado com o PlaybackDevice [Interruptor de saída de áudio]

    
por 02.11.2012 / 23:29
1

Bem, um bloco pode ser um atalho para um arquivo em lotes ou um arquivo do PowerShell. Tocar no bloco executará o lote ou o arquivo PS. Isso significa que você pode criar um bloco para fazer APENAS SOBRE qualquer coisa no Windows.

Aqui está a técnica do CS:

https://stackoverflow.com/a/2216886/265706

A resposta NÃO marcada como resposta parece ser a solução para o Windows 7/8.

Isso pode ser tão bom quanto possível para esta API em particular, lamento dizer.

Veja a técnica de atalho: link

A propósito, os dispositivos Windows RT também têm o PowerShell

    
por 02.11.2012 / 23:17