web-dev-qa-db-ja.com

デフォルトのオーディオデバイスをバッチファイルで切り替える

Windows 10で、実行時にヘッドセットとスピーカーをデフォルトのオーディオデバイスとして切り替えることができるバッチファイルを作成しようとしています。他社製のソフトウェアは使いたくありません。

私は周りを探してみましたが、私はうまく動かないような古いスクリプトしか見つけられず、もう存在しないようなHKCU:\Software\Microsoft\Windows\CurrentVersion\Applets\Volume Control\パスを参照しています。私はこれについてのWindows 10レジスタ上の任意の情報を見つけることができません、また私がしていることがわからない場合、私はレジスタをあまりにもいじってしまうのに不快です。

18
zerothehero

サードパーティ製のソフトウェアを使用したくない場合はありがたいですが、100kb以下のexeを使用しても構わない場合のオプションとして、 Nircmd をコマンドで使用できます。 :

nircmd setdefaultsounddevice "Speakers" 1

または

nircmd setdefaultsounddevice "Headphones" 1

Playback Devices(システムトレイのサウンドコントロールを右クリック)の下にリストされているように、あなたのオーディオデバイスの正確な名前を使うことを確認する必要があります。特に名前が何らかの形で衝突する場合は、それらをPropertiesの下で単純な名前に変更する方が簡単かもしれません。

コマンドの最後にある1は、 "Default Device"を意味します。 2を使用すると、「デフォルトの通信デバイス」を意味します。


あなたが本当にサードパーティ製のツールを使いたくないのであれば、これは私が私のデフォルトのサウンドデバイスを変更するときに変更されるように思われるレジストリキーの差分です。やっているデフォルトであるかどうかを示すのは、1や0のように単純ではありません。

enter image description here

25
Jonno

Windows 8(またはそれ以前)PCのオーディオ設定はHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Renderに保存されています。 Renderの下には、GUIDという名前のキーがあり、それぞれルートにDeviceState dword値が含まれています。しかし、それはどのようにコーディングされているのですか?

MSDNの DEVICE_STATE_XXX定数 を参照してください。

  • 1アクティブ
  • 2無効
  • 4存在しません
  • 8アンプラグド

そのため、1と2を切り替えるPowerShell/BATスクリプトでうまくいくはずです。

編集:人間が読めるデバイス名を取得するには、Propertiesサブキーの下の{b3f8fa53-0004-438e-9003-51a46e139bfc},6を読みます。

6
Aziz Kabyshev