Einzelnen Beitrag anzeigen

NickPower

Registriert seit: 4. Apr 2012
10 Beiträge
 
#1

Erklärung einer Funktion

  Alt 8. Apr 2013, 14:27
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
  Mit Zitat antworten Zitat