Entwickler-Ecke
Windows API - Wie setze ich das Default Audio Playback Device unter W7?
sky21 - Mo 11.04.11 09:06
Titel: Wie setze ich das Default Audio Playback Device unter W7?
Guten Morgen
Ich möchte gerne mittels Delphi-Code das Default Playback Audio Device setzen.
Unter XP konnte man das dadurch erreichen, dass man einen bestimmten Registry Key überschrieben hat. Der Key hat unter Windows 7 keinen Effekt mehr. Schlimmer noch: Seit Vista ist offenbar Audiomässig Vieles neu gemacht worden. Das Knowhow diesbezüglich scheint noch sehr spärlich zu sein. Im Netzfinde ich zumindest kaum etwas... Naja, jeder scheint dasselbe Problem zu haben ;-)
Hat jemand von euch eine Idee?
jaenicke - Mo 11.04.11 09:36
Ja, da hat sich viel getan. Die physischen Geräte sind jetzt abstrahiert. Das heißt du steuerst ja z.B. nicht mehr die Systemlautstärke eines Geräts, sondern die Lautstärke einer Anwendung.
Das voreingestellte Gerät zu ändern ist nicht vorgesehen. Das kann der Benutzer selbst einstellen. Wenn Anwendungen dem Benutzer Systemeinstellungen ändern, gibt das in der Regel nur Probleme. Deshalb finde ich das auch gut so. Eine Anwendung hat mir nicht an globalen Einstellungen herumzupfuschen.
Wenn du mit deiner Anwendung ein anderes Gerät nutzen willst, dann kannst du das mit der Core Audio API tun, dafür gibt es in der Doku auch Beispiele.
sky21 - Di 12.04.11 08:29
Hallo Jaenicke und danke für deine Nachricht
Bei meinem Anwendungsfall ist es eben so, dass der Benutzer die Sounds diverser Anwendungen über dasselbe Gerät abpielen soll. Bei manchen Programmen lässt sich das Zielgerät individuell pro App. definieren, andere hingegen nehmen das Default Dings. Da ist es für mich dann am Einfachsten, die Änderung gleich global vorzunehmen.
jaenicke - Di 12.04.11 08:58
Da wird dir nichts anderes übrig bleiben als den Process Monitor zu nehmen und zu schauen welche Registry Keys beim Ändern des Gerätes gesetzt werden. Allerdings gibt es jetzt ja mehrere Standardgeräte (Kommunikation, Audioausgabe, ...).
Und eins schon einmal vorweg:
Das läuft alles sehr stark über GUIDs, deshalb sieht es ein wenig kryptisch aus... Viel Erfolg...
Die verschiedenen Geräte scheinen jedenfalls hier zu stehen, da hatte ich gestern Abend auch kurz geschaut:
Quelltext
1:
| HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render |
Gerd Kayser - Di 12.04.11 13:59
jaenicke hat folgendes geschrieben : |
Das läuft alles sehr stark über GUIDs, deshalb sieht es ein wenig kryptisch aus... Viel Erfolg... |
Das kann man doch alles im Windows-SDK nachlesen. Insbesondere ein Blick in die beiliegenden MF*.h-Headerdateien ist lohnenswert. Man braucht also nicht wie im Nebel in der Registry herum zu stochern. ;-)
jaenicke - Di 12.04.11 15:33
Dass da die Registryzweige drin stehen, mit denen man das machen kann was man eigentlich nicht machen können soll, hätte ich nicht gedacht... deshalb habe ich da nicht geschaut...
Gerd Kayser - Di 12.04.11 18:58
jaenicke hat folgendes geschrieben : |
Dass da die Registryzweige drin stehen, mit denen man das machen kann was man eigentlich nicht machen können soll |
Ich meinte nun nicht, dass
sky21 jetzt einfach durch sein Programm in der Registry Werte überschreiben sollte. Im Windows-SDK und in den MF*.h-Dateien sind doch die entsprechenden Funktionen aufgeführt. Allerdings muss man sich dort erst einmal einlesen.
Ich kann wirklich nur jedem raten, das (kostenlose) Windows-SDK zu installieren. Das ist eine wahre Fundgrube.
Download:
http://msdn.microsoft.com/de-de/windows/ff851942.aspx (sind aber zig MB)
jaenicke - Di 12.04.11 19:00
Soweit ich das sehe gibt es eine solche Funktion schlicht nicht... (und das halte ich wie gesagt auch für gut so)
Das ist auch die Aussage in den MSDN-Diskussionen dazu...
Welche der Funktionen meinst du denn konkret?
jaenicke - Di 12.04.11 22:15
Gerd Kayser hat folgendes geschrieben : |
Edit3: Hier gibt es einen Mega-Thread zu dem Thema. Und wenn ich das richtig sehe, gibts am Ende eine Lösung: |
Ja, die "Lösung" besteht soweit ich das sehe darin das entsprechende Fenster in der Systemsteuerung fernzusteuern...
Ich habe es jedenfalls ausprobiert, hier hat es Microsoft tatsächlich mal richtig gemacht:
Selbst mit Adminrechten kann kein Programm die entsprechenden Registryschlüssel verändern. Das kann nur der Audiodienst selbst.
Insofern bleibt nur irgendeine undokumentierte API zu versuchen oder schlicht dem Benutzer das Bedienfeld zu öffnen, damit er die kleine Änderung einfach schnell selbst machen kann...
Bei einem so speziellen Programm sollte das doch wohl kein Problem sein. :nixweiss:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!