Windows 7、Logitech G110キーボード
2つのオーディオデバイス(ヘッドフォンとスピーカー)
ヘッドホンに切り替えるキーとスピーカーに切り替えるキーをマクロ化する簡単な方法を見つけたいと思っています。
誰かが良いプログラムやそのような性質のものを持っていますか?
編集:AHKを使用してこのタスクを期待どおりに機能させることは、残念ながらうまくいっていません。オーディオセットのスクリーンショットと、現在のスクリプトのスクリーンショットを含めました。
また、「無効なデバイスを表示する」のチェックを外して、スクリプトをそれぞれDown 1とUp 1に変更しました。 1つのデバイスで機能しますが、セカンダリへの切り替えを拒否します。
この記事 に基づいています。
AutoHotkey をダウンロードしてインストールします。
サウンドコントロールパネルを開きます。これは、スタートメニューの検索または実行ダイアログからmmsys.cpl
を実行することでも実行できます。
希望のオプションがリストからどれだけ下にあるかに注意してください。次の画像では、HDMI出力はアイテム1、現在のデフォルトのスピーカーはアイテム4です。
次のスクリプトを変更します。 F6
およびF7
は、アクティベーションキー(F6 そして F7)(*
は、このホットキーが Ctrl が押されています)。 {Down #}
コマンドは、リストのどこまで下がるかを示します。スクリーンショットから、スピーカーには{Down 3}
、ヘッドセットには{Down 4}
が必要です。オーディオデバイスを追加または削除したり、無効なアイテムを表示/非表示にしたりすると、数が変わります。
*F6::
Run, mmsys.cpl
WinWait,Sound
ControlSend,SysListView321,{Down 3}
ControlClick,&Set Default
ControlClick,OK
return
*F7::
Run, mmsys.cpl
WinWait,Sound
ControlSend,SysListView321,{Down 4}
ControlClick,&Set Default
ControlClick,OK
return
スクリプトを実行します。必要に応じて、起動時にスクリプトを実行するように設定できます。
これを「ハック」と呼ぶ理由は、スクリプトが実際にコントロールパネル(GUIウィンドウ)を開くためです。理想的には、これはコマンドラインからサウンドデバイスのGUIDを指定することで実行できます。
どうやら CLIを備えたプログラム がサウンドデバイスを切り替えるためにあります。リストに同じ番号を指定すると、AutoHotkeyの「ハック」とそれほど変わらないと思います。いずれの場合も、ホットキーにバインドするにはAHKのようなものが必要になります。
Audioswitch( https://github.com/sirWest/AudioSwitch )を使用すると、デフォルトのオーディオデバイスをすばやく変更でき(トレイアイコンをクリックするだけ)、ホットキーをサポートし、クリックすると音量レベルを表示します。トレイアイコンのカスタムカラーを使用して、使用中のデバイスを示すことができます。さらに、それはオープンソースです。したがって、気に入らない場合は、フォークしてください(心から喜びます)。
2番目の答えはVolume2( https://irzyxa.wordpress.com/ )で、これはもう1つの無料の(ただし、オープンソースではない)ソフトウェアです。ホットキーを設定してデバイスを変更できます。 (また、別の回答で指摘されているように、他の手段で変更することもできますが、これはOPが要求したものではなかったので、それには入りませんでした。)AudioSwitchに置き換えられました。柔軟な音量調整(これもOPの問題ではありませんでした)。
3番目の答えはAudio Switcherです。 http://audioswit.ch/er 。また、クリックしてホットキーを変更することもできます。少なくともバージョン1では、マウスを使って音量を変更することはできません。
スクロールロックキーを使用したトグルとしての自動ホットキースクリプト。
それらを無効にすることによってアイテムを取り出します(あなたの液晶のhdmiなど)
間違った選択に設定されている場合にのみサウンド出力を変更する必要があるので、私はこれを好みます。スクロールロックを押すと、正しいものに切り替わります。すでにゲームをロードしていて、それが間違っていることに気付いた場合に非常に役立ちます。サウンド出力を変更する場合は、ほとんどのゲームを再起動する必要があります。
ScrollLock::
toggle:=!toggle ;toggles up and down states.
Run, mmsys.cpl
WinWait,Sound ; Change "Sound" to the name of the window in your local language
if toggle
ControlSend,SysListView321,{Down 1} ; This number selects the matching audio device in the list, change it accordingly
Else
ControlSend,SysListView321,{Down 2} ; This number selects the matching audio device in the list, change it accordingly
ControlClick,&Set Default ; Change "&Set Default" to the name of the button in your local language
ControlClick,OK
return
Volume2についての回答を完成させたい。このプログラムには、デフォルトのオーディオデバイスを変更できる3つの場所があります。
ホットキー
トレイアイコンポップアップメニュー
トレイアイコンのマウスクリック(左、二重左、中央)
次のスクリプトでは、2つのデバイスを切り替えるショートカットをデスクトップに作成できます。スクリプトは正しいデバイス名に変更する必要があり、ダウンロードが必要なnircmdを使用します。ショートカットのホットキーを使用できます。主に記録のためにここに投稿します。アイコンとスクリプト名が切り替わり、現在のデバイスが反映されます。チェックがないため、同期が外れる可能性があります(現在のデフォルトデバイスを取得するコマンドが必要です)。
' Set the audio device names to use(Speakers and Headphones/PC Headphones. Fixup dir to nircmdc
Const ALL_USERS_DESKTOP = &H19&
Const USER_DESKTOP = &h10&
Const nircmd = "D:\Windows\Commands\Nircmdc"
Const Device1 = "Speakers"
Const Device1Name = "Speakers"
Const Device2 = "PC Headphones"
Const Device2Name = "Headphones"
Set ws = CreateObject("Wscript.Shell")
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(USER_DESKTOP)
Set objFolderItem = objFolder.ParseName(Device2Name +".lnk")
if isNull(objFolderItem) or IsEmpty(objFolderItem) or (objFolderItem is Nothing) then
Set objFolderItem = objFolder.ParseName(Device1Name + ".lnk")
if isNull(objFolderItem) or IsEmpty(objFolderItem) or (objFolderItem is Nothing) then
' Creates shortcut on desktop to toggle between devices and sets the default to Speakers
Set oMyShortcut = ws.CreateShortcut(objFolder.Self.Path + "\"+Device1Name+".lnk")
oMyShortcut.WindowStyle = 0
OMyShortcut.TargetPath = WScript.ScriptFullName
'oMyShortCut.Hotkey = "ALT+CTRL+S"
oMyShortcut.IconLocation = "C:\Windows\System32\mmres.dll, 0"
oMyShortCut.Save
ws.run nircmd + " setdefaultsounddevice """+Device1+""" 0", 0
ws.run nircmd + " setdefaultsounddevice """+Device1+""" 1", 0
ws.run nircmd + " setdefaultsounddevice """+Device1+""" 2", 0
msgbox "Desktop link created for """+Device1+""". "+Device1+" set as default!", 0, "Error"
else
' Speaker was set, make headphones
Set objShellLink = objFolderItem.GetLink
objShellLink.SetIconLocation "C:\Windows\System32\mmres.dll", 2
objShellLink.Save()
objFolderItem.Name = Device2Name
ws.run nircmd + " setdefaultsounddevice """+Device2+""" 0", 0
ws.run nircmd + " setdefaultsounddevice """+Device2+""" 1", 0
ws.run nircmd + " setdefaultsounddevice """+Device2+""" 2", 0
end if
else
' Headphones was set, make speakers
Set objShellLink = objFolderItem.GetLink
objShellLink.SetIconLocation "C:\Windows\System32\mmres.dll", 0
objShellLink.Save()
objFolderItem.Name = "Speakers"
ws.run nircmd + " setdefaultsounddevice """+Device1Name+""" 0", 0
ws.run nircmd + " setdefaultsounddevice """+Device1Name+""" 1", 0
ws.run nircmd + " setdefaultsounddevice """+Device1Name+""" 2", 0
end if
これは古い質問ですが、結局、私が欲しいものを手に入れるために少し時間を費やすことになりました。ボブの回答をalsoに変更し、アクティブなマイクを変更しました。オーディオデバイスとリスニングデバイスの両方であるワイヤレスUSBヘッドフォンを持っているので便利ですが、最近、Windows 10を入手しました。Webカメラで "Hey、Cortana ..."をリッスンすると便利です。
関数ごとに、second SysListView321行に、オーディオデバイスと同様に、使用するマイクのインデックスを入力します。私はキーをnumkeysに切り替えました。これは私の好みです-あなたはあなた自身の選択があるかもしれません。
*Numpad0::
Run, mmsys.cpl
WinWait,Sound
ControlSend,SysListView321,{Down 2}
ControlClick,&Set Default
ControlSend,SysTabControl321,{Right 1}
ControlSend,SysListView321,{Down 2}
ControlClick,&Set Default
ControlClick,OK
return
*NumpadDot::
Run, mmsys.cpl
WinWait,Sound
ControlSend,SysListView321,{Down 1}
ControlClick,&Set Default
ControlSend,SysTabControl321,{Right 1}
ControlSend,SysListView321,{Down 1}
ControlClick,&Set Default
ControlClick,OK
return
NirCmd を実行するようにバッチファイルを設定するのが setdefaultsounddevice コマンドを使用する最も簡単な方法でした。
nircmd setdefaultsounddevice "スピーカー1"
この単純なautohotkeyスクリプトをnircmdユーティリティで使用しています。唯一の問題-たった1つのキーで3つ以上のオーディオデバイスを切り替える方法がわかりません。
F1::
if (toggle1 := !toggle1)
{
run, c:\windows\system32\displayswitch.exe /internal
}
else
{
run, c:\windows\system32\displayswitch.exe /external
}
F2::
if (toggle2 := !toggle2)
{
run, nircmd.exe setdefaultsounddevice "tv"
}
else
{
run, nircmd.exe setdefaultsounddevice "headphones"
}