AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Lautstärke auf XP ändern mit delphi
Thema durchsuchen
Ansicht
Themen-Optionen

Lautstärke auf XP ändern mit delphi

Ein Thema von Noobinator · begonnen am 13. Jun 2006 · letzter Beitrag vom 13. Sep 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#11

Re: Lautstärke auf XP ändern mit delphi

  Alt 14. Jun 2006, 20:19
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:
);
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;
Der selbe Code nur einwenig anders um das Volume zu setzen.

Ein fertiges Beispiel im Anhang.
Angehängte Dateien
Dateityp: zip mastervolumecontrol_113.zip (213,0 KB, 51x aufgerufen)
Dateityp: zip mastervolume_103.zip (4,6 KB, 65x aufgerufen)
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Noobinator

Registriert seit: 9. Mai 2006
147 Beiträge
 
Delphi 7 Personal
 
#12

Re: Lautstärke auf XP ändern mit delphi

  Alt 14. Jun 2006, 21:05
Zitat von turboPASCAL:
So:
.... Der selbe Code nur einwenig anders um das Volume zu setzen.

Ein fertiges Beispiel im Anhang.
Ich danke dir.
  Mit Zitat antworten Zitat
benst

Registriert seit: 20. Jun 2004
155 Beiträge
 
Delphi 5 Standard
 
#13

Re: Lautstärke auf XP ändern mit delphi

  Alt 13. Sep 2006, 15:56
@turboPASCAL:
Dein Programm hat einen ganz kleinen Fehler
Anstatt
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
...
  // Wert als % in Label1.Caption anzeigen
  Label1.Caption :=
    format('%0.1f %%', [(Trackbar1.Position / MaxMixerMasterVolume) * 100]);
...
muss dort
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
...
  // Wert als % in Label1.Caption anzeigen
  Label1.Caption :=
    format('%0.1f %%', [((MaxMixerMasterVolume - Trackbar1.Position) / MaxMixerMasterVolume) * 100]);
...
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.
Vielen Dank für deinen Lautstärken-Code/ Programm, hat mich weitergebracht.
Ben
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 19:13 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