コンピューター(Windows 7)をテレビに接続しましたが、デジタルオーディオ(S/PDIF)(高解像度オーディオデバイス)とヘッドセット(2- Corsair CA-HS1 USBヘッドセット)
これを変更するバッチ/スクリプトファイルを実行できるようにしたいので、「ボリュームを右クリック>再生デバイス>「出力デバイスをマーク」して「デフォルトに設定」をクリックする必要はありません。
私はそれが贅沢な問題であることを知っていますが、ちょっと、誰かから何かを学べるかもしれません。
すべての助けに感謝します!
私は自分とまったく同じ要件を満たしていましたが、投稿につまずいた後、次のことがわかりました。
残念ながら、ネイティブのWindows関数ではありません。 AutoHotKeyと呼ばれる小さなオープンソースのスクリプトツールをダウンロードする必要がありますが、うまく機能し、少量のメモリ(1〜2.5Mb)のみが必要です。
元の記事で提供されているスクリプトは、私にとってはうまくいきません。デフォルトのデバイスを変更するのではなく、有効/無効のデバイスを検索し、その値を変更します。 2つのデフォルトデバイスを切り替えるように編集しました。サウンドコントロールパネル(mmsys.cpl)を開き、再生デバイスのリストをスクロールしてリストの2番目の項目({Down 2}部分)に移動します。これは、私のスピーカーがリストの2番目の項目だからです。次に、デバイスがデフォルトであるかどうかを確認します。そうでない場合は、デフォルトとして設定し、ウィンドウを閉じます。既にデフォルトの場合は、さらに2回下にスクロールして、それをデフォルトとして設定します。
したがって、デバイスのリストに合わせて{Down 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
}
}
これが、再生デバイスとして「ライン1」を設定する方法です。
start /min "" G:\......\nircmd.exe setdefaultsounddevice "Line 1"
NirCmd は、ユーザーインターフェイスを表示せずにいくつかの便利なタスクを実行できる、ダウンロード可能な小さなコマンドラインユーティリティです。
次のスクリプトはWindows 7で記述されており、sendkeysを使用しています。それは私が見つけた他のスニペットに基づいていますが、選択が一貫しており、迷子のウィンドウが表示されたままにならないように追加します。それでも再生される場合は、システムのSleepTimeを調整することをお勧めします。 [再生デバイス]ウィンドウで選択するアイテムのインデックスを最初のパラメーターとして使用して、ショートカットを使用してスクリプトを呼び出します。 「タスクバー」に新しい「ツールバー」を作成して、シングルクリックで各デバイスを選択できます。 タスクバーツールバーの画像
'===============================================================================
'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
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
その後、各ahkスクリプトをexeにコンパイルし、各exeをキーボードマクロにバインドして、キーを数回押すだけで実行できるようにします。個人的にはCorsair K95を使用しているため、ソフトウェアを使用してこれらを「G」キーにバインドします。
また、サウンドの設定を行っている場合は、デバイスの名前を変更して名前の競合を避けることができます。
名前を変え続けるHDMIデバイスがあったので、既存のソリューションはどれもうまくいきませんでした。
最終的にこのPowerShellと NirCmd アプリの使用になりました。
#File: TV.ps1
$name = "SMART*"
# list active audio playback devices. (Note for cature devices change Render to Capture)
$device = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\*\" | where {$_."DeviceState" -eq 1} | foreach-object -Process {(Get-ItemPropertyValue -Path ($_.PSPath + "\Properties\") -Name "{a45c254e-df1c-4efd-8020-67d146a850e0},2")} | Where-Object {$_ -like $name}
C:\bin\NIRCMDC setdefaultsounddevice $device 1
C:\bin\NIRCMDC setdefaultsounddevice $device 2
スクリプトを介したオーディオデバイスの切り替えとは関係ないかもしれませんが、コンピューターをHDMI経由でテレビに接続することもできます。
テレビでビデオファイルを見たいときは、Media Player Classicホームシネマを使用します。これにより、コンピューター全体でデフォルトのサウンドデバイスを切り替えることなく、オプションでMPH:HCのオーディオデバイスを指定できます。
あなたの使用法が私のものに似ている場合、MPC:HCが問題を解決するかもしれません。
エンタープライズ環境または教育環境のログインスクリプトで「nircmd setdefaultsounddevice speaker」を使用する場合、ヘッドフォンが接続されているとスピーカーから音が出ることに注意してください。