web-dev-qa-db-ja.com

デフォルトのオーディオデバイスを変更するキーボードマクロ

Windows 7、Logitech G110キーボード

2つのオーディオデバイス(ヘッドフォンとスピーカー)

ヘッドホンに切り替えるキーとスピーカーに切り替えるキーをマクロ化する簡単な方法を見つけたいと思っています。

誰かが良いプログラムやそのような性質のものを持っていますか?

編集:AHKを使用してこのタスクを期待どおりに機能させることは、残念ながらうまくいっていません。オーディオセットのスクリーンショットと、現在のスクリプトのスクリーンショットを含めました。 Sound setupScript

また、「無効なデバイスを表示する」のチェックを外して、スクリプトをそれぞれDown 1とUp 1に変更しました。 1つのデバイスで機能しますが、セカンダリへの切り替えを拒否します。

6
user76211

この記事 に基づいています。

  1. AutoHotkey をダウンロードしてインストールします。

  2. サウンドコントロールパネルを開きます。これは、スタートメニューの検索または実行ダイアログからmmsys.cplを実行することでも実行できます。

  3. 希望のオプションがリストからどれだけ下にあるかに注意してください。次の画像では、HDMI出力はアイテム1、現在のデフォルトのスピーカーはアイテム4です。

    Screenshot of sound control panel

  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
    
  5. スクリプトを実行します。必要に応じて、起動時にスクリプトを実行するように設定できます。


これを「ハック」と呼ぶ理由は、スクリプトが実際にコントロールパネル(GUIウィンドウ)を開くためです。理想的には、これはコマンドラインからサウンドデバイスのGUIDを指定することで実行できます。

どうやら CLIを備えたプログラム がサウンドデバイスを切り替えるためにあります。リストに同じ番号を指定すると、AutoHotkeyの「ハック」とそれほど変わらないと思います。いずれの場合も、ホットキーにバインドするにはAHKのようなものが必要になります。

4
Bob

Audioswitch( https://github.com/sirWest/AudioSwitch )を使用すると、デフォルトのオーディオデバイスをすばやく変更でき(トレイアイコンをクリックするだけ)、ホットキーをサポートし、クリックすると音量レベルを表示します。トレイアイコンのカスタムカラーを使用して、使用中のデバイスを示すことができます。さらに、それはオープンソースです。したがって、気に入らない場合は、フォークしてください(心から喜びます)。

2番目の答えはVolume2( https://irzyxa.wordpress.com/ )で、これはもう1つの無料の(ただし、オープンソースではない)ソフトウェアです。ホットキーを設定してデバイスを変更できます。 (また、別の回答で指摘されているように、他の手段で変更することもできますが、これはOPが要求したものではなかったので、それには入りませんでした。)AudioSwitchに置き換えられました。柔軟な音量調整(これもOPの問題ではありませんでした)。

3番目の答えはAudio Switcherです。 http://audioswit.ch/er 。また、クリックしてホットキーを変更することもできます。少なくともバージョン1では、マウスを使って音量を変更することはできません。

7
Jon

スクロールロックキーを使用したトグルとしての自動ホットキースクリプト。

それらを無効にすることによってアイテムを取り出します(あなたの液晶の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
1
Ozhound

Volume2についての回答を完成させたい。このプログラムには、デフォルトのオーディオデバイスを変更できる3つの場所があります。

  1. ホットキー

    Volume2 Set Default Device Hotkeys

  2. トレイアイコンポップアップメニュー

    Volume2 Set Default Device TrayMenu

  3. トレイアイコンのマウスクリック(左、二重左、中央)

1
Alexandr Irza

次のスクリプトでは、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
0
user14448

これは古い質問ですが、結局、私が欲しいものを手に入れるために少し時間を費やすことになりました。ボブの回答を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
0
Katana314

NirCmd を実行するようにバッチファイルを設定するのが setdefaultsounddevice コマンドを使用する最も簡単な方法でした。

nircmd setdefaultsounddevice "スピーカー1"

0
NightShovel

この単純な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"
    }
0
monstro