AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Lautstärke von PC ändern ?
Thema durchsuchen
Ansicht
Themen-Optionen

Lautstärke von PC ändern ?

Ein Thema von Delphiturbo · begonnen am 16. Mai 2008 · letzter Beitrag vom 16. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
Delphiturbo
(Gast)

n/a Beiträge
 
#1

Lautstärke von PC ändern ?

  Alt 16. Mai 2008, 10:58
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
http://www.mediaculture-online.de/up...autstaerke.gif


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;
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Lautstärke von PC ändern ?

  Alt 16. Mai 2008, 11:02
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...
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Lautstärke von PC ändern ?

  Alt 16. Mai 2008, 11:12
Hallo,

für die Gesamtlautstärke geht es so:

Delphi-Quellcode:
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;
Ein möglicher Aufruf:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  TrackBar1.Min := MinVolume;
  TrackBar1.Max := MaxVolume;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  SetMasterVolume(MasterVolumeControl, TrackBar1.Position);
end;
Ich habe es getestet und es funktioniert. Den Code habe ich übrigens hier gefunden: Haupt Lautstärke Regeln

Grüße

Geändert von Daniel (18. Apr 2011 um 15:03 Uhr) Grund: Code-Tags korrigiert
  Mit Zitat antworten Zitat
Delphiturbo
(Gast)

n/a Beiträge
 
#4

Re: Lautstärke von PC ändern ?

  Alt 16. Mai 2008, 11:44
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

Oder muss ich in Destroy wieder den Regler mindestens in der Mitte legen
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Lautstärke von PC ändern ?

  Alt 16. Mai 2008, 12:21
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. Hier im Forum suchenTMediaPlayer Lautstärke.
  Mit Zitat antworten Zitat
Delphiturbo
(Gast)

n/a Beiträge
 
#6

Re: Lautstärke von PC ändern ?

  Alt 16. Mai 2008, 13:53
Es ist schon ok
wen ich das Programm starte, dann ist der Regler immer auf 0 !

ich habe versucht in Form.Oncreate :
Delphi-Quellcode:
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!
funktioniert aber nicht. der Regler beim Starten immer in der Position 0,
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
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Lautstärke von PC ändern ?

  Alt 16. Mai 2008, 14:18
Zitat von Delphiturbo:
Ideal wäre es, wenn ich die aktuelle Lautstärke ermitteln kann
Zitat von Matze:
Im dem verlinkten Beitrag findest du auch eine Funktion zum Auslesen der Lautstärke.
Also mehr kann ich wirklich nicht schreiben.

Zitat von Delphiturbo:
der Regler beim Starten immer in der Position 0,
obwohl ich den Tackbar1 über seine Eigenschaften in Inspektor auf 5 gesetzt habe!
Hast du den Code überhaupt einmal angesehen und versucht zu verstehen?
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.
  Mit Zitat antworten Zitat
Delphiturbo
(Gast)

n/a Beiträge
 
#8

Re: Lautstärke von PC ändern ?

  Alt 16. Mai 2008, 20:50
Der Code ändert den Stil !
In Code finde ich nichts über den Stlie !!!
Ich möchte diesen Stil nehmen :
Delphi-Quellcode:
TrackBar1.TickStyle:=tsAuto;
TrackBar1.Tickmarks:=tmBoth;
In Inspektor kann ich zwar den Stil wählen aber wenn ich das Programm starte, dann gehen alle meine Stile weg !!!
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Lautstärke von PC ändern ?

  Alt 16. Mai 2008, 20:53
Der genannte Code ändert den Stil deiner Trackbar ganz sicher nicht, er hat mit dieser auch nichts zu tun.
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#10

Re: Lautstärke von PC ändern ?

  Alt 16. Mai 2008, 21:12
Ich liebe es, wenn Leute mitten in einem Gespräch plötzlich von ganz was anderem reden.

Was hat der Stil deiner Trackbar jetzt nochmal genau mit der Lautstärkenregelung vom PC zu tun?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz