Einzelnen Beitrag anzeigen

Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: MultimediaSystem Pitch/Volume

  Alt 18. Sep 2005, 19:25
Du musst das direkt über die Systemlautstärke machen.

Zitat:
Mit Hilfe der Folgenenden Proceduren ist es möglich die WAV-Lautstärke des Systems auszulesen und auch zu setzen.

Beide Proceduren benötigen die Unit mmystem, die der USES-Klausel hinzugefügt werden muss.
Delphi-Quellcode:
procedure GetVolume(var volL, volR: Word);
var
  hWO: HWAVEOUT;
  waveF: TWAVEFORMATEX;
  vol: DWORD;
begin
  volL:= 0;
  volR:= 0;
  // init TWAVEFORMATEX
  FillChar(waveF, SizeOf(waveF), 0);
  // open WaveMapper = std output of playsound
  waveOutOpen(@hWO, WAVE_MAPPER, @waveF, 0, 0, 0);
  // get volume
  waveOutGetVolume(hWO, @vol);
  volL:= vol and $FFFF;
  volR:= vol shr 16;
  waveOutClose(hWO);
end;

procedure SetVolume(const volL, volR: Word);
var
  hWO: HWAVEOUT;
  waveF: TWAVEFORMATEX;
  vol: DWORD;
begin
  // init TWAVEFORMATEX
  FillChar(waveF, SizeOf(waveF), 0);
  // open WaveMapper = std output of playsound
  waveOutOpen(@hWO, WAVE_MAPPER, @waveF, 0, 0, 0);
  vol:= volL + volR shl 16;
  // set volume
  waveOutSetVolume(hWO, vol);
  waveOutClose(hWO);
end;
Um die Lautstärke auszulesen kann man folgenden Aufruf verwenden:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  VolLi, VolRe: Word;
begin
  GetVolume(VolLi,VolRe);

  Label1.Caption:=IntToStr(VolLi);
  Label2.Caption:=IntToStr(VolRe);
end;
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat