ฉันจะจัดการอุปกรณ์เล่นเสียงหลายชนิดบน Windows Vista / 7 ได้อย่างไร


33

ฉันมีลำโพง (ระบบเสียง) และหูฟัง (ชุดหูฟัง USB ที่มีการ์ดเสียงของตัวเอง) เชื่อมต่อกับคอมพิวเตอร์เดสก์ท็อปของฉัน ใน Windows 7 ฉันสามารถคลิกขวาที่ตัวผสมเสียงแล้วเลือกอุปกรณ์การเล่นและสลับระหว่างอุปกรณ์เหล่านี้ของฉัน

มีวิธีที่ง่ายกว่าหรืออาจเป็นแป้นพิมพ์ลัดที่จะทำให้สลับได้ง่ายขึ้น? ฉันทำงานในพื้นที่ที่ใช้ร่วมกันบางครั้งฉันต้องการหูฟังเพื่อหลีกเลี่ยงผู้อื่นที่น่ารำคาญ แต่ในบางครั้งลำโพงก็โอเค ฉันต้องการที่จะสลับอย่างรวดเร็ว ในโลกอุดมคติทางออกสำหรับคำถามของฉันจะใช้ได้ใน Vista ด้วย

คำตอบ:


19

วิธีแก้ไขปัญหาอัตโนมัติของ Windows ซึ่งจู้จี้ของคุณ: AutoIt !

ใส่ AutoIt นี้และรวบรวม

;-----Configuration-----
;The title of the sound config window.
Dim $ConfigWindowTitle = "Sound"
;-----End of configuration----

Dim $ItemNumber = 1
If $CmdLine[0] >= 1 Then ;If we have a parameter...
    $ItemNumber = $CmdLine[1] ;...we should press the button the specified number of times.
EndIf

Run("control mmsys.cpl") ;Run the sound control applet and hide it.

WinWaitActive($ConfigWindowTitle) ;Wait for it to be active before sending keystrokes.

Send("{TAB}{TAB}{TAB}{TAB}") ;Put the focus on the list

For $i = 1 to $ItemNumber Step 1
    Send("{DOWN}")
Next

Send("!s") ;Press Alt + S to set the selected device as the default.
WinClose($ConfigWindowTitle)

ตอนนี้สร้างทางลัดและในเป้าหมายให้พา ธ ไปยังไฟล์ปฏิบัติการที่คอมไพล์แล้ว สำหรับอาร์กิวเมนต์ให้ใส่หมายเลขของอุปกรณ์เสียงในรายการที่คุณต้องการเปลี่ยน (หากต้องการเปลี่ยนเป็นรายการอันดับต้น ๆ ในรายการให้ใส่ 1 รายการที่สองในรายการใส่ 2 ฯลฯ ) หากคุณต้องการแป้นพิมพ์ลัดให้ใช้ฟิลด์คีย์ลัดในหน้าต่างคุณสมบัติของทางลัด

ฉันกำลังมองหาบางอย่างที่จะทำในสิ่งที่คุณต้องการและพบว่าไม่มีวิธีการเขียนโปรแกรมที่คุณสามารถเปลี่ยนอุปกรณ์เสียงใน Vista / 7 ไม่ใช่สิ่งที่ Microsoft ตัดสินใจว่าโปรแกรมเมอร์ต้องทำดังนั้นฉันจึงสร้างสคริปต์นี้เพื่อทำให้กระบวนการทำงานโดยอัตโนมัติ มันไม่ได้ดีที่สุดเพราะมันปรากฏขึ้นที่หน้าต่างเพื่อเปลี่ยนอุปกรณ์ (จำเป็น) แต่มันเป็นไปได้ที่จะสร้างทางลัดเพื่อเปลี่ยนอุปกรณ์ส่งออกสำหรับเสียงของคุณ


2
นี่อาจเป็นคำตอบที่มีประโยชน์ที่สุดที่ฉันยังไม่พบในเว็บไซต์นี้ทั้งหมด! ขอบคุณอีกครั้งสำหรับสิ่งนี้ ....
JL

ยอดเยี่ยมมากใช้งานได้ดี
WerkkreW

9

Default Audio Changerเป็นทางออกที่ดีที่สุดในความคิดของฉัน

มันใช้การโทรของระบบที่ไม่มีเอกสารแทนการจำลองแป้นพิมพ์ซึ่งหมายความว่าคุณสามารถใช้มันในแอปพลิเคชันแบบเต็มหน้าจอได้โดยไม่ต้องกังวล


ความคิดที่ดี แต่ไม่เพียง แต่ใช้งานไม่ได้ตอนนี้ชุดหูฟังของฉันไม่ถูกตรวจพบเมื่อเสียบปลั๊ก :(
Nick Spreitzer

2
แนะนำเป็นอย่างยิ่ง! ดีกว่าสคริปต์ AutoIt 10 เท่า ควรเป็นคำตอบที่ได้รับการยอมรับจริงๆ
Otiel

2
ไฟล์ติดตั้งอยู่ที่นี่: sourceforge.net/projects/defaultaudiocha/filesว้าวนี่น่าจะเป็นอุปกรณ์ที่เล่นได้ดีที่สุดที่เปลี่ยนวิธีแก้ปัญหาที่ฉันเคยเห็นมา !! +1
Geo

4

@ Dan Walker ทางออกที่ดี แต่ไม่สมบูรณ์;)

สคริปต์นี้ใช้ไฟล์ที่มีอยู่เพื่อดำเนินการสลับจริงดังนั้นคุณสามารถใช้ทางลัดเดียวกันเพื่อสลับระหว่างอุปกรณ์เล่น มันเป็นเพียงการแก้ไขอย่างง่าย:

;-----Configuration-----
;The title of the sound config window.
Dim $ConfigWindowTitle = "Sound"
;-----End of configuration----

Dim $ItemNumber = 1 ; The first itme in the audio list

If FileExists ("a") Then; Use the existence of a file to know if we should toggle
    FileDelete("a")
    $ItemNumber = 3 ; The audio playback device you want to toggle to
Else
    FileOpen("a", 1)
    FileClose("a")
EndIf

Run("control mmsys.cpl") ;Run the sound control applet and hide it.

WinWaitActive($ConfigWindowTitle) ;Wait for it to be active before sending keystrokes.

Send("{TAB}{TAB}{TAB}{TAB}") ;Put the focus on the list

For $i = 1 to $ItemNumber Step 1
    Send("{DOWN}")
Next

Send("!s") ;Press Alt + S to set the selected device as the default.
WinClose($ConfigWindowTitle)

ดีฉันชอบสลับ
Chaulky

3

Googled สิ่งนี้มาระยะหนึ่งแล้วสิ่งเดียวที่ทำเพื่อฉันคือสคริปต์จาก AutoHotKey ความปรารถนาเดียวที่ฉันมีคือการทำสิ่งนี้ในพื้นหลัง .. นี่คือสคริปต์:

Run, mmsys.cpl
WinWait,Sound
ControlSend,SysListView321,{Down}
ControlClick,&Set Default
ControlClick,OK

คุณสามารถเปลี่ยนมันเพื่อตอบสนองความต้องการของคุณ


นี้ทำงานสำหรับฉัน แต่ฉันได้ไปใช้แทนSendInput {Down} ControlSend,SysListView321,{Down}ฉันต้องเปลี่ยนจำนวน {Downs} เพื่อให้ตรงกับอุปกรณ์เสียงของฉัน
เลน

3

โซลูชันของ fakt ทำงานได้อย่างมีเสน่ห์ นี่คือสคริปต์เล็กน้อยสำหรับ autohotkey ที่เลือกอุปกรณ์เสียงตัวแรกเป็นค่าเริ่มต้นเมื่อคุณกด "F4" และตัวที่สองเมื่อกด "F3" รุ่นนี้ใช้งานได้กับ Windows ทุกรุ่น ผ่านการทดสอบโดยใช้ Win 7 64

F3::
Run, mmsys.cpl
WinWaitActive,Sound
ControlSend,SysListView321,{Down}
ControlSend,SysListView321,{Down}
Sleep, 50
ControlClick,Button2
ControlClick,OK
return

F4::
Run, mmsys.cpl
WinWaitActive,Sound
ControlSend,SysListView321,{Down}
Sleep, 50
ControlClick,Button2
ControlClick,OK
return

2

@cptloop Default Audio Changer ค่อนข้างดี แต่น่ารำคาญที่จะไม่ตั้งค่าอุปกรณ์เป็นอุปกรณ์สื่อสารเริ่มต้นหลังจากที่ตั้งเป็นอุปกรณ์เริ่มต้นแล้ว

นั่นทำให้ฉันพบAudio Switcherซึ่งมีคุณสมบัติเพิ่มเติมหลายประการ:

  • รองรับการสลับอุปกรณ์บันทึก
  • รองรับปุ่มลัดหลายปุ่ม
  • สวิตช์คู่ (สลับค่าเริ่มต้นและอุปกรณ์สื่อสาร)
  • และอื่น ๆ!

สิ่งเดียวที่ฉันไม่ชอบคือมันไม่อนุญาตให้คุณใช้ปุ่มลัดเดียวเพื่อสลับระหว่างอุปกรณ์สองเครื่องแต่ละเครื่องต้องได้รับการกำหนดค่าด้วยปุ่มลัดของตัวเอง ที่กล่าวว่า v2.0 อยู่ในระหว่างการพัฒนาและสัญญาว่าจะปรับปรุงคุณสมบัติบางอย่างเช่นเดียวกับการสนับสนุนปลั๊กอิน พวกเขายังเผยแพร่ API พื้นฐานดังนั้นจึงเป็นไปได้ที่จะสร้างโซลูชันที่ปรับแต่งของคุณเอง

แก้ไข: ตามxenolightning / AudioSwitcher_v1 # 607ความสามารถในการสลับ / อุปกรณ์รอบถูกนำมาใช้ใน v2.0 แล้ว


0

อีกโปรแกรมที่ดีในการทำเช่นนี้คือ Audio Router มันเป็นโปรแกรมฟรี (GPL) ที่มีระบบปฏิบัติการรุ่น 64 บิตและ 32 บิต นี่คือลิงค์ GitHub ของโปรแกรม:

เราเตอร์เสียง

นี่คือ GIF แบบง่าย ๆ เกี่ยวกับวิธีการใช้งาน:

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.