![]() |
Lautstärke von PC ändern ?
Hallo
mit dem Code kann ich zwar den Ton hoch und leiser machen, aber wenn ich die Lautstärke danach anschaue, dann finde ich die alte Position immer die selbe, egal ob ich den Scrollbar Maximum oder Minimum mache ! Ich möchte gerne, dass die Lautstärke hier auch geändert werden ![]()
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var LeftVolume:Word; RightVolume:Word; begin LeftVolume:=ScrollBar1.Position;// max is 65535 RightVolume:=ScrollBar1.Position;// SetWaveVolume( MakeLong( ScrollBar1.Position,ScrollBar1.Position)); end; |
Re: Lautstärke von PC ändern ?
Ich hatte das Problem vor langer Zeit auch einmal. Er ändert die Lautstärke, aber verändert die Position nicht. Wenn ich mich richtig erinnere, musste man zusätzlich eine Windows-Message senden, dass man die Lautstärke geändert hat und dann wurden die Regler aktualisiert. Ich grabe mal, ob ich das noch wiederfinde...
|
Re: Lautstärke von PC ändern ?
Hallo,
für die Gesamtlautstärke geht es so:
Delphi-Quellcode:
Ein möglicher Aufruf:
uses
MMSystem; const MasterVolumeControl = 0; MaxVolume = 65535; MinVolume = 0; function _VolumeControl(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; procedure SetMasterVolume(Mixer: hMixerObj; Value: Word); var MasterVolume : TMixerControl; Details : TMixerControlDetails; UnsignedDetails : TMixerControlDetailsUnsigned; aCode : MMResult; begin aCode := _VolumeControl(Mixer, MasterVolume); if aCode = 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; aCode := mixerSetControlDetails(Mixer, @Details, MIXER_SETCONTROLDETAILSF_VALUE); end; if aCode <> MMSYSERR_NOERROR then raise Exception.CreateFmt('SetMasterVolume failure, '+ 'multimedia system error #%d', [aCode]); end;
Delphi-Quellcode:
Ich habe es getestet und es funktioniert. Den Code habe ich übrigens hier gefunden:
procedure TForm1.FormCreate(Sender: TObject);
begin TrackBar1.Min := MinVolume; TrackBar1.Max := MaxVolume; end; procedure TForm1.TrackBar1Change(Sender: TObject); begin SetMasterVolume(MasterVolumeControl, TrackBar1.Position); end; ![]() Grüße |
Re: Lautstärke von PC ändern ?
:thumb: Es funktioniert. Danke!
Ist das keine Manipulation? Da der User unbewusst den Regler ganz tiefer machen kann, um den Ton meines Programm leiser oder aus zu machen, und später wunder er, dass er keinen Ton hat :mrgreen: Oder muss ich in Destroy wieder den Regler mindestens in der Mitte legen :gruebel: |
Re: Lautstärke von PC ändern ?
Im dem verlinkten Beitrag findest du auch eine Funktion zum Auslesen der Lautstärke. Die könntest du dann anschließend wieder setzen. Dennoch ist das natürlich keine schöne Lösung.
Je nach dem, wie du Sound abspielst, gibt's da u.U. etwas sinnvolleres. Bsp. [dp]TMediaPlayer Lautstärke[/dp]. |
Re: Lautstärke von PC ändern ?
Es ist schon ok
wen ich das Programm starte, dann ist der Regler immer auf 0 ! ich habe versucht in Form.Oncreate :
Delphi-Quellcode:
funktioniert aber nicht. der Regler beim Starten immer in der Position 0,
procedure TForm1.FormCreate(Sender: TObject);
begin TrackBar1.Min := MinVolume; TrackBar1.Max := MaxVolume; TrackBar1.Position:=5; // kommt trotzdem in der Position 0 ! min:0 und max:10 TrackBar1.TickStyle:=tsAuto; // passiert nichts! obwohl ich den Tackbar1 über seine Eigenschaften in Inspektor auf 5 gesetzt habe! Ideal wäre es, wenn ich die aktuelle Lautstärke ermitteln kann |
Re: Lautstärke von PC ändern ?
Zitat:
Zitat:
Zitat:
Das Minimum liegt bei 0, das Maximum bei 65535. Da ist es logisch, dass beim Wert 5 der Regler ganz unten ist, denn die Regler-Auflösung liegt nicht bei 1. |
Re: Lautstärke von PC ändern ?
Der Code ändert den Stil !
In Code finde ich nichts über den Stlie !!! Ich möchte diesen Stil nehmen :
Delphi-Quellcode:
In Inspektor kann ich zwar den Stil wählen aber wenn ich das Programm starte, dann gehen alle meine Stile weg !!!
TrackBar1.TickStyle:=tsAuto;
TrackBar1.Tickmarks:=tmBoth; |
Re: Lautstärke von PC ändern ?
Der genannte Code ändert den Stil deiner Trackbar ganz sicher nicht, er hat mit dieser auch nichts zu tun.
|
Re: Lautstärke von PC ändern ?
Ich liebe es, wenn Leute mitten in einem Gespräch plötzlich von ganz was anderem reden. :mrgreen:
Was hat der Stil deiner Trackbar jetzt nochmal genau mit der Lautstärkenregelung vom PC zu tun? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 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