2012-03-23 120 views
18

私のコンピュータ(Windows 7)はテレビに接続されていますが、デジタルオーディオ(S/PDIF)オーディオデバイス)と私のヘッドセット(2 Corsair CA-HS1 USBヘッドセット)バッチファイル/ powershellスクリプトを実行して再生デバイスを設定する

バッチ/スクリプトファイルを私のために変更して、「右クリックボリューム」の再生デバイスを実行する必要はない>「マーク出力装置」と「デフォルトセット」をクリックしてください。

私はそれは豪華な問題だけど、ちょっと、多分私が誰かから何かを学ぶことができますか?

すべてのヘルプA驚いた!

+0

: あなたはワンクリックで各デバイスを選択するために、あなたの「タスクバー」に新しい「ツールバー」を作成することができます。私は今まで 'Win32_SoundDevice'を見つけましたが、それは実際には何も提供していません。 – Joey

+0

ええ、それは私が最後にそれを研究したときにどのくらい来たかです。私は、スタートメニューの "すべてのプログラム"をクリックするとコマンドを記録することができる何らかのソフトウェアがなければならないと考えていました。それは本当に便利です。 – haakonlu

答えて

6

私は自分自身とまったく同じ要件を持っていて、あなたの投稿を越えつまずく後、私は以下のが見つかりました:

https://web.archive.org/web/20131231034118/http://downloadsquad.switched.com/2010/06/16/windows-7-tip-how-to-change-the-default-audio-device-with-a-hot/

は、残念ながらそれは、ネイティブのWindowsの機能ではありません。 AutoHotKeyという小さなオープンソースのスクリプトツールをダウンロードする必要がありますが、うまく動作し、わずかなメモリ(1〜2.5Mb)しか必要としません

オリジナルの記事で提供されているスクリプトは機能しません。デフォルトのデバイスを変更するのではなく、有効/無効のデバイスを探してその値を変更しています。 これを編集して、2つのデフォルトデバイスを切り替えるようにしました。 サウンドコントロールパネル(mmsys.cpl)を開き、再生デバイスのリストをリストの2番目の項目({2番目の部分)}までスクロールします。 私のスピーカーが私のリストの2番目の項目だからです。 次に、デバイスがデフォルトであるかどうかを確認します。そうでない場合は、デフォルトとして設定し、ウィンドウを閉じます。既にデフォルトの場合は、別の2回スクロールしてデフォルトとして設定します。

したがって、デバイスのリストに合わせて{2行目}を修正する必要があります。

#+a:: 
Run, mmsys.cpl 
WinWait,Sound 
ControlSend,SysListView321,{Down 2} 
ControlGet, selectedDevice, List, Focused, SysListView321 
Loop, Parse, selectedDevice, %A_Tab% 
    if a_index <> 3 
     continue 
    else 
    { 
     if A_LoopField <> Default Device 
     { 
      ControlClick,&Set Default 
      ControlClick,OK 
      WinWaitClose 
      SoundPlay, *-1 
      return 
     } 
     else 
     { 
      ControlSend,SysListView321,{Down 2} 
      ControlClick,&Set Default 
      ControlClick,OK 
      WinWaitClose 
      SoundPlay, *-1 
      return 
    }  
} 
+0

私はAutoHotKeyをインストールした後、 PunkBusterアンチ・チート・システムを使用するゲーム。私は、PBがAutoHotKeyの使用を検出しており、これが悪用のためのベクターであると判断したと思います。それは偶然だったかもしれないし、誤った陽性であったかもしれません。 – Hoppertron

+0

これは私のためにはうまくいきましたが、サウンドウィンドウのデフォルト設定ボタンはデフォルトのサウンドデバイスとデフォルトの通信デバイスを設定します。デフォルトの通信デバイスだけを残しておきたい場合は、 'ControlClick&Set Default'を' Send {tab} {tab} {down} {down} {enter} 'に置き換えてください。これにより、[デフォルト設定]ボタンに移動し、ドロップダウンメニューを開き、[デフォルトデバイス]を選択し、Enterキーを押して通信デバイスをそのままにします。 –

2

私の知る限り、プログラムでこれを行う方法はありません。これは意図的な設計です。マイクロソフトでは、ユーザーが設定したオーディオ設定をアプリケーションがオーバーライドしないようにするためです。

あなたは同じ回答がhereですが、ウィンドウを操作するソリューションの場合は、hereのように見えます。

+0

あなたのソースを読んだ後、試してみましょう。 – haakonlu

+0

http://sdae.codeplex.com/ - 今は可能です。 –

+0

私の答えは、あなたのcodeplexプロジェクトのウィンドウに含まれていました。 – JPBlanc

0

オーディオデバイスをスクリプトで切り替えることに関連しないかもしれませんが、HDMI経由で自分のコンピュータをテレビに接続することもできます。

私はテレビでビデオファイルを見たいときは、Media Player Classicホームシネマを使用します。これにより、コンピュータ全体のデフォルトサウンドデバイスを切り替えることなく、オプションでMPH:HCのオーディオデバイスを指定できます。

あなたの使い方が私の場合と似ているとMPC:HCがあなたの問題を解決します。

+0

ええと私はWinampとVLCでそう大変ですが、テレビやスピーカーシステムをコンピュータ画面やヘッドセットと同じくらい頻繁に使用しています。:p – haakonlu

17

これは私が再生デバイスとして「ライン1」を設定する方法である:

start /min "" G:\......\nircmd.exe setdefaultsounddevice "Line 1" 

NirCmdは、あなたがそれはあなたが表示されずに、いくつかの有用なタスクを行うことができますダウンロードすることができ、小さなコマンドラインユーティリティです任意のユーザーインターフェイス。

+0

これはまさに私が探していたものです!とても簡単。ありがとうございました! – Slowfib

+2

パーフェクト! NirCmdは、AutoHotKeyを使用したUIオートメーションよりもはるかに堅牢なようです。両方とも「スピーカー」と呼ばれていたので、再生デバイスの名前を変更する必要がありました –

+0

私のソニーのBluetoothヘッドフォンにはうってつけです: 'nircmd.exe setdefaultsounddevice 'ヘッドホン「' –

1

Dale Newton's投稿をフォローアップするには、NirCmdがこれを実行するのに最適です。さらに、AutoHotKeyとペアにすると、実行するたびに厄介なCMDウィンドウを開かずにデバイスを変更する実行ファイルを作成することができます。たとえば、私はいつも切り替わる2つのソースを持っています.1つはヘッドホンで、もう1つは自分のモニターです。私のモニターのために私はこれを行うAHKスクリプト作成:

#NoEnv 
SendMode Input 
SetWorkingDir %A_ScriptDir% ;I have nircmd in the same folder as these scripts 
Run, nircmd setdefaultsounddevice "Acer X34-8" 1 
Run, nircmd setdefaultsounddevice "Acer X34-8" 2 

をそして最後の2行で自分のヘッドフォンのために別のに変更:

Run, nircmd setdefaultsounddevice "Headset Earphone" 1 
Run, nircmd setdefaultsounddevice "Headset Earphone" 2 

その後、あなたはexeファイルに各AHKスクリプトをコンパイルすることができますし、それぞれのexeをキーボードマクロにバインドするので、いくつかのキーを押して実行することができます。個人的に私はCorsair K95を使用していますので、ソフトウェアを使用してこれらを「G」キーにバインドします。

また、音質設定の場合、名前の競合を避けるためにデバイスの名前を変更できます。あなたは、企業や教育環境ログインスクリプトで「nircmd setdefaultsounddeviceスピーカー」を使用している場合、ヘッドホンが差し込まれているとき、音はまだスピーカーから出てくること

1

次のスクリプトは、Windows 7で書かれていますsendkeysを使用します。私が見つけた他のスニペットに基づいていますが、選択に一貫性があり、迷いのあるウィンドウが表示されないようにするために追加されています。 システムがまだ起動している場合、SleepTimeを調整することができます。 Playback Devicesウィンドウで選択したい項目のインデックスを含むショートカットを最初のパラメータとして使用して、スクリプトを呼び出します。それはPowerShellで些細なこと必要がありますので、私は、これはWMIを介して行うことができますかなり確信している Taskbar toolbar picture

'=============================================================================== 
'This script uses sendkeys to select the Sound Output device 
'First parameter should be the desired device number in 'Playback Devices' list 
'=============================================================================== 
Option Explicit 

Const SleepTime = 200 

Dim WindSh 

'=============================================================================== 
'MAIN ROTUINE 
'=============================================================================== 
'Check the command line input 
if (Wscript.Arguments.Count <> 1) then 
    MsgBox "You must provide a single integer arguement representing the device number", vbinformation + vbokonly, Wscript.ScriptName 
    Wscript.Quit 1 
elseif (false = IsNumeric(Wscript.Arguments.Item(0))) then 
    MsgBox "The arguement provided was not an integer number: " & Wscript.Arguments.Item(0), vbinformation + vbokonly, Wscript.ScriptName 
    Wscript.Quit 2 
End If 

set WindSh = CreateObject("Wscript.Shell") 
WindSh.run("control.exe mmsys.cpl") 
do while (WindSh.AppActivate("Sound") = false) 
    WScript.Sleep SleepTime 
loop 
WindSh.sendkeys("{DOWN " & Clng(Wscript.Arguments.Item(0)) & "}") 
WScript.Sleep SleepTime 
WindSh.sendkeys("{TAB 2}") 
WScript.Sleep SleepTime 
WindSh.sendkeys("{ENTER}") 
WScript.Sleep SleepTime 
WindSh.sendkeys("%{F4}") 
WScript.Sleep SleepTime 
if (WindSh.AppActivate("Sound") = true) then 
    WindSh.sendkeys("%{F4}") 
end if 
関連する問題