Hallo!
Mit folgendem Code kann ich die Sound-Lautstärke für den eigenen Prozess regulieren.
Delphi-Quellcode:
procedure SetVolume(const volL, volR: Word);
var
hWO: HWAVEOUT;
waveF: TWAVEFORMATEX;
vol: DWORD;
begin
FillChar(waveF, SizeOf(waveF), 0);
waveOutOpen(@hWO, WAVE_MAPPER, @waveF, 0, 0, 0);
vol:= volL + volR shl 16;
waveOutSetVolume(hWO, vol);
waveOutClose(hWO);
end;
Dabei erscheint im Windows-Lautstärkenmixer sogar ein separater Regler für den eigenen Prozess. Wird die Lautstärke im Windows-Mixer verändert, möchte ich diese Veränderung natürlich in meinem Programm mitbekommen und entrpechend darauf reagieren. Ich habe versucht, die Messages
MM_MIXM_LINE_CHANGE und
MM_MIXM_CONTROL_CHANGE zu abonieren, doch die werden irgendwie nicht ausgelöst.
Delphi-Quellcode:
public
{ Public-Deklarationen }
procedure WMUser1(var msg: TMessage); message MM_MIXM_LINE_CHANGE;
procedure WMUser2(var msg: TMessage); message MM_MIXM_CONTROL_CHANGE;
end;
Was mache ich falsch. Wie kann ich auf die Lautstärkeveränderungen reagieren, die von fremden Prozessen ausgelöst werden?