Hallo!
Ich habe "normale Lautsprecherboxen" und ein Bluetooth Headset. Nun möchte ich, da die Automatik für mich nicht ganz zufriedenstellend ist, manuell festlegen, also per Shortcut ein PB-Programm aufrufen, welches die Soundwiedergabe auf ds jeweilige Ziel umleitet.
Die Soundwiedergabe ist zu finden unter:
START => SYSTEMSTEURUNG => SOUNDS UND AUDIOGERÄTE => im PanelGadget() AUDIO => im Frame3DGadget() SOUNDWIEDERGABE
Nachtrag: Auch zu finden unter START => Ausführen => Control.exe Mmsys.cpl,@0,2
Dort stehen bei mir die oben zwei beschriebenen Audiowiedergabegeräte drin. Gibt es einen Befehl (oder mehrere), womit ich zwischen diesen beiden Geräten manuell wechseln kann? TeamSpeak kann das ja auch, da kann man ja auch auswählen, welches Device man für Input und Output benutzt.
Befehl um Soundwiedergabe zu wechseln gesucht
Befehl um Soundwiedergabe zu wechseln gesucht
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy EndAch kommt schon... Irgendeiner wird doch was wissen oder vielleicht einen klitze kleinen Hinweis oder wenigstens den Hauch einer Ahnung haben.... 
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End- Froggerprogger
- Badmin
- Beiträge: 855
- Registriert: 08.09.2004 20:02
Mann, bist du hartnäckig... ...aber aufgrund dessen habe ich mal in meinem Diverse-Orderner unter W wie WaveOut gesucht und einen uralten Code-Snippet gefunden, der vielleicht weiterhelfen könnte:
Hier werden die verschiedenen Audioaus/eingänge angezeigt. Die zentrale Funktion ist hier die WinAPI-Funktion "waveOutGetNumDevs_".
Da gibts noch einige weitere, die mit "waveOut*..." beginnen.
Da gibts bestimmt auch sowas wie Audioausgang öffnen, und dann darauf wiedergeben, oder so. Allerdings habe ich mit diesen Funktionen schon seit Ewigkeiten nichts mehr gemacht. Aber vielleicht hilft dir das ja?
Ansonsten kannst Du wohl auch die fmod.dll-Keule drauf loslassen, da lassen sich auch sämtliche Ausgänge durchnummerieren und dann auf einem von denen Sounds wiedergeben.
Code: Alles auswählen
; Structure WaveFormatEx
; FormatTag.w
; Channels.w
; SamplesPerSec.l
; AvgBytesPerSec.l
; BlockAlign.w
; BitsPerSample.w
; ExtraDataSize.w
; EndStructure
Declare MaleListe()
Global AktDevice.WaveOutCaps
Dim Ausgabe.s(10)
NewList Daten.s()
OpenWindow(0,0,0,GetSystemMetrics_(#SM_CXSCREEN)-16,600,#PB_Window_Systemmenu | #PB_Window_ScreenCentered,"gefundene Audio-Hardware")
AddElement(Daten())
Daten() = ""
AddElement(Daten())
Daten() = Chr(10) + "AUDIO - AUSGÄNGE:"
AddElement(Daten())
Daten() = ""
AudioOutNum.l = waveOutGetNumDevs_()
For i=-1 To AudioOutNum
WaveOutGetDevCaps_(i,AktDevice,50)
Ausgabe(0) = Str(i)
Ausgabe(1) = PeekS(@AktDevice\szPname)
Ausgabe(2) = StrU(AktDevice\wMid, #Word)
Ausgabe(3) = StrU(AktDevice\wPid, #Word)
Ausgabe(4) = StrU(AktDevice\vDriverVersion, #Word)
Ausgabe(5) = StrU(AktDevice\dwFormats, #Long)
Ausgabe(6) = StrU(AktDevice\wChannels, #Word)
Ausgabe(7) = StrU(AktDevice\dwSupport, #Long)
Ausgabe(10) = ""
For j=0 To 9
Ausgabe(10) + Ausgabe(j) + Chr(10)
Next
AddElement(Daten())
Daten() = Ausgabe(10)
Next
AddElement(Daten())
Daten() = ""
AddElement(Daten())
Daten() = Chr(10) + "AUDIO - EINGÄNGE:"
AddElement(Daten())
Daten() = ""
AudioINNum.l = waveINGetNumDevs_()
For i=-1 To AudioINNum
WaveINGetDevCaps_(i,AktDevice,50)
Ausgabe(0) = Str(i)
Ausgabe(1) = PeekS(@AktDevice\szPname)
Ausgabe(2) = StrU(AktDevice\wMid, #Word)
Ausgabe(3) = StrU(AktDevice\wPid, #Word)
Ausgabe(4) = StrU(AktDevice\vDriverVersion, #Word)
Ausgabe(5) = StrU(AktDevice\dwFormats, #Long)
Ausgabe(6) = StrU(AktDevice\wChannels, #Word)
Ausgabe(7) = StrU(AktDevice\dwSupport, #Long)
Ausgabe(10) = ""
For j=0 To 9
Ausgabe(10) + Ausgabe(j) + Chr(10)
Next
AddElement(Daten())
Daten() = Ausgabe(10)
Next
MaleListe()
Resume = 1
While Resume
Select WaitWindowEvent()
Case #PB_EventCloseWindow
End
EndSelect
Wend
Procedure MaleListe()
CreateGadgetList(WindowID(0))
ListIconGadget(1,0,0,WindowWidth(), WindowHeight(),"#ID" , WindowWidth() * 3 / 80,#PB_ListIcon_FullRowSelect)
AddGadgetColumn(1,2,"Audio - Name",WindowWidth() * 32 / 80)
AddGadgetColumn(1,3,"wMid",WindowWidth() * 5 / 80)
AddGadgetColumn(1,4,"wPid",WindowWidth() * 5 / 80)
AddGadgetColumn(1,5,"vDriverVersion",WindowWidth() * 10 / 80)
AddGadgetColumn(1,6,"dwFormats",WindowWidth() * 10 / 80)
AddGadgetColumn(1,7,"nChannels",WindowWidth() * 5 / 80)
AddGadgetColumn(1,8,"Support",WindowWidth() * 10 / 80)
ResetList(Daten())
While NextElement(Daten())
AddGadgetItem(1,-1,Daten())
Wend
EndProcedureDa gibts noch einige weitere, die mit "waveOut*..." beginnen.
Da gibts bestimmt auch sowas wie Audioausgang öffnen, und dann darauf wiedergeben, oder so. Allerdings habe ich mit diesen Funktionen schon seit Ewigkeiten nichts mehr gemacht. Aber vielleicht hilft dir das ja?
Ansonsten kannst Du wohl auch die fmod.dll-Keule drauf loslassen, da lassen sich auch sämtliche Ausgänge durchnummerieren und dann auf einem von denen Sounds wiedergeben.
!UD2
Ähem, dankeschönFroggerprogger hat geschrieben:Mann, bist du hartnäckig...
ich habe aber noch eine lösung, die fällt mir grad ein. Dazu müsste ich aber zwei Tasten simulieren. einmal die Pfeil-nach-oben-taste und die Eingabetaste.
Natürlich könnt ich jetzt auch wie oben beschrieben Control.exe Mmsys.cpl,@0,2 ausführen und dann die beiden Tasten simulieren mit keybd_event_(), dazu braucht das kleine fensterchen aber den Fokus. ich will aber, dass quasi nur dieses fensterchen denkt, die Tasten seien simuliert worden; sodass ich per Shortcut (m)ein PB-Programm aufrufe, das öffnet das fenster im hintergrund (vielleicht sogar unsichtbar)und simuliert die tasten. geht das auch? Bzw. Wie geht das?
Also im Prinzip so:
Code: Alles auswählen
RunProgram("Control.exe", "Mmsys.cpl,@0,2", "")
Delay(1111)
keybd_event_(#VK_DOWN, 0, 0, 0) : keybd_event_(#VK_DOWN, 0, #KEYEVENTF_KEYUP, 0)
keybd_event_(#VK_RETURN, 0, 0, 0) : keybd_event_(#VK_RETURN, 0, #KEYEVENTF_KEYUP, 0)PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End