2010-12-22 4 views
2

ab Windows Vista, funktioniert die Funktion waveOutSetVolume (winmm.dll) nicht mehr auf dem OS-Master-Volume, sondern für jede App einzeln. Standardmäßig ist es auf 100% eingestellt, was bedeutet, dass die App Sound mit der gleichen Lautstärke wie das Betriebssystem spielt.Ändern der Lautstärke für die aktuelle App ausschließlich

Jetzt möchte ich genau diesen Effekt nutzen: Nur die Lautstärke für meine aktuelle App ändern, ohne das OS-Volume zu ändern.

Ich habe versucht, die App zur Verfügung gestellt unter http://www.geekpedia.com/tutorial176_Get-and-set-the-wave-sound-volume.html. Ich habe ein WindowsMediaPlayer-Steuerelement hinzugefügt und einen Webradio-Stream mithilfe der URL-Eigenschaft (Autostart auf True gesetzt) ​​geladen. Auf den ersten Blick sieht der Code nicht so aus, wie er sein sollte: Wenn ich den Schieberegler scrolle, spielt das Radio mit der gleichen Lautstärke weiter, auch wenn ich auf 0 setze, was der Stummschaltung gleichkommt. Ich debuggte und dachte, dass alles in Ordnung ist, waveOutSetVolume gibt 0 zurück. Das sollte in Ordnung sein, oder irre ich mich?

Ich habe die Mixer-Konsole von Windows 7 geöffnet. Dort habe ich folgendes gesehen: Der Schieberegler der jeweiligen App in der Mixer-Ansicht ändert sich (wie es soll) wenn ich den Schieberegler im Sample scrolle. Doch die Lautstärke ändert sich nicht. Aber wenn ich die Lautstärke der App in der Mischpultkonsole reduziere (manuell mit meiner Maus), spielt das Webradio mit einer niedrigeren Stimme (wie es sollte). Es scheint, dass in meinem Code ein "Submit" -Aufruf fehlt, um das Betriebssystem entsprechend anzupassen.

Irgendwelche Ideen? Danke, David

Antwort

1

Sie können die Audiositzungs-APIs IAudioVolume und IAudioSessionNotification verwenden, um das aktuelle Apps-Volume zu ändern und Ihr Volume mit dem Lautstärkeregler in der App zu verfolgen.

Verwandte Themen