Bei mir funktioniert weder
SetMPVolume(MediaPlayer1, 800);
noch
SetMPVolume(MediaPlayer1, TrackBar1.Position * 100);
oder
SetMPVolume(MediaPlayer1, TrackBar1.Position);
obwohl ich das letzte mal in einem Projekt verwendet hatte. Da hatte ich allerdings kein WinXP SP2 sondern Win98SE.
Das Setzen der Wave-Lautstärke funktioniert allerdings.
Gefunden auf
http://forum.vingrad.ru/index.php?showtopic=34596
Delphi-Quellcode:
procedure SetWaveVolume(const AVolume: DWord);
var Woc : TWAVEOUTCAPS;
begin
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) = MMSYSERR_NOERROR then
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
WaveOutSetVolume(WAVE_MAPPER, AVolume);
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
SetWaveVolume (MakeLong(TrackBar1.Position, TrackBar1.Position));
end;
function GetWaveVolume: DWord;
var
Woc : TWAVEOUTCAPS;
Volume : DWord;
begin
result:=0;
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) = MMSYSERR_NOERROR then
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
begin
WaveOutGetVolume(WAVE_MAPPER, @Volume);
Result := Volume;
end;
end;
Es wird jeweils ein DWord übergeben, wobei das HiWord und das LoWord je einen Stereokanal darstellen.