Hallo,
ich habe eine Funktion aus dem Internet benutzt um die Lautstärke zu verstellen.
Doch leider habe ich nur herrausgefunden, wie man die Lautstärke verändert (SetVolumeControl). Die ganze restliche Prozedur verstehe ich nicht.
Kann mir vielleicht jemand ein bisschen weiter helfen?
Code:
procedure TForm1.ScrollBarVolumeChange(Sender: TObject);
var
MyMixerHandle: HMixer;
MyVolCtrl: TMixerControl;
begin
MyMixerHandle := InitMixer;
if MyMixerHandle <> 0 then
try
FillChar(MyVolCtrl, SizeOf(MyVolCtrl), 0);
if GetVolumeControl(MyMixerHandle, MIXERLINE_COMPONENTTYPE_DST_SPEAKERS,
MIXERCONTROL_CONTROLTYPE_VOLUME, MyVolCtrl) then
begin
{The last parameter (0) here is the volume level}
if SetVolumeControl(MyMixerHandle, MyVolCtrl, Round((100 - ScrollbarVolume.Position) * 65535 /100)) then
// ShowMessage('Volume should now be set to zero');
end;
finally
mixerClose(MyMixerHandle);
end;
Label2.caption := IntToStr(100 - ScrollbarVolume.position);
end;
Code:
function SetVolumeControl(aMixer: HMixer; mxc: TMixerControl; volume: Longint): Boolean;
var
mxcd: TMixerControlDetails;
vol: TMixerControlDetails_Unsigned;
rc: MMRESULT;
begin
FillChar(mxcd, SizeOf(mxcd), 0);
with mxcd do
begin
cbStruct := SizeOf(TMixerControlDetails);
dwControlID := mxc.dwControlID;
cbDetails := SizeOf(TMixerControlDetails_Unsigned);
paDetails := @vol;
cMultipleItems := 0;
cChannels := 1;
end;
vol.dwValue := volume;
rc := mixerSetControlDetails(aMixer, @mxcd, MIXER_SETCONTROLDETAILSF_VALUE);
Result := rc = MMSYSERR_NOERROR;
end;
function InitMixer: HMixer;
var
Err: MMRESULT;
begin
Err := mixerOpen(@Result, 0, 0, 0, 0);
if Err <> MMSYSERR_NOERROR then
Result := 0;
end;
Mit freundlichen Grüßen