![]() |
Re: Lautstärke auf XP ändern mit delphi
Liste der Anhänge anzeigen (Anzahl: 2)
So:
[code=delphi]// GetMasterVolumeCtrl - Verwendung intern // function GetMasterVolumeCtrl(Mixer: hMixerObj; var Control: TMixerControl): MMResult; var Line: TMixerLine; Controls: TMixerLineControls; begin ZeroMemory(@Line, SizeOf(Line)); Line.cbStruct := SizeOf(Line); Line.dwComponentType := MIXERLINE_COMPONENTTYPE_DST_SPEAKERS; Result := mixerGetLineInfo(Mixer, @Line, MIXER_GETLINEINFOF_COMPONENTTYPE); if Result = MMSYSERR_NOERROR then begin ZeroMemory(@Controls, SizeOf(Controls)); Controls.cbStruct := SizeOf(Controls); Controls.dwLineID := Line.dwLineID; Controls.cControls := 1; Controls.dwControlType := MIXERCONTROL_CONTROLTYPE_VOLUME; Controls.cbmxctrl := SizeOf(Control); Controls.pamxctrl := @Control; Result := mixerGetLineControls(Mixer, @Controls, MIXER_GETLINECONTROLSF_ONEBYTYPE); end; end; // SetMasterVolume // Verwendung: Setzen eines Wertes für das MasterVolume des Mixers procedure SetMasterVolume(Value: Word); var MasterVolume: TMixerControl; Details: TMixerControlDetails; UnsignedDetails: TMixerControlDetailsUnsigned; Mixer: hMixerObj; Code: MMResult; begin MixerOpen(@Mixer, 0, 0, 0, 0); Code := GetMasterVolumeCtrl(Mixer, MasterVolume); if Code = MMSYSERR_NOERROR then begin with Details do begin cbStruct := SizeOf(Details); dwControlID := MasterVolume.dwControlID; cChannels := 1; // set all channels cMultipleItems := 0; cbDetails := SizeOf(UnsignedDetails); paDetails := @UnsignedDetails; end; UnsignedDetails.dwValue := Value; Code := mixerSetControlDetails(Mixer, @Details, MIXER_SETCONTROLDETAILSF_VALUE); end; if Code <> MMSYSERR_NOERROR then raise Exception.CreateFmt('SetMasterVolume failure, ' + 'multimedia system error #%d',
Code:
Der selbe Code nur einwenig anders um das Volume zu setzen.
);
end; // GetMasterVolume // Verwendung: akt. Wert des MasterVolumes des Mixers auslesen function GetMasterVolume: Cardinal; var MasterVolume: TMixerControl; Details: TMixerControlDetails; UnsignedDetails: TMixerControlDetailsUnsigned; Code: MMResult; Mixer: hMixerObj; mmError: Cardinal; begin mmError := MixerOpen(@Mixer, 0, 0, 0, 0); if mmError <> MMSYSERR_NOERROR then begin raise Exception.CreateFmt('GetMasterVolume failure, ' + 'multimedia system error #%d', [mmError]); end else begin Result := 0; Code := GetMasterVolumeCtrl(Mixer, MasterVolume); if (Code = MMSYSERR_NOERROR) then begin with Details do begin cbStruct := SizeOf(Details); dwControlID := MasterVolume.dwControlID; cChannels := 1; // set all channels cMultipleItems := 0; cbDetails := SizeOf(UnsignedDetails); paDetails := @UnsignedDetails; end; if (mixerGetControlDetails(Mixer, @Details, MIXER_GETCONTROLDETAILSF_VALUE) = MMSYSERR_NOERROR) then result := UnsignedDetails.dwValue; end; end; end; Ein fertiges Beispiel im Anhang. |
Re: Lautstärke auf XP ändern mit delphi
Zitat:
|
Re: Lautstärke auf XP ändern mit delphi
@turboPASCAL:
Dein Programm hat einen ganz kleinen Fehler :) Anstatt
Delphi-Quellcode:
muss dort
procedure TForm1.FormCreate(Sender: TObject);
begin ... // Wert als % in Label1.Caption anzeigen Label1.Caption := format('%0.1f %%', [(Trackbar1.Position / MaxMixerMasterVolume) * 100]); ...
Delphi-Quellcode:
stehen. Wenn man dein Programm start steht dort z.B. 5%, wobei die Lautstärke auf 95% steht. Wenn man die Tackbar anklickt ist es jedoch sofort behoben.
procedure TForm1.FormCreate(Sender: TObject);
begin ... // Wert als % in Label1.Caption anzeigen Label1.Caption := format('%0.1f %%', [((MaxMixerMasterVolume - Trackbar1.Position) / MaxMixerMasterVolume) * 100]); ... Vielen Dank für deinen Lautstärken-Code/ Programm, hat mich weitergebracht. Ben |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz