Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Контроль звука

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

uses
   MMSystem;

 function GetWaveVolume(var LVol: DWORD; var RVol: DWORD): Boolean;
 var
   WaveOutCaps: TWAVEOUTCAPS;
   Volume: DWORD;
 begin
   Result := False;
   if WaveOutGetDevCaps(WAVE_MAPPER, @WaveOutCaps, SizeOf(WaveOutCaps)) = MMSYSERR_NOERROR then
     if WaveOutCaps.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
     begin
       Result := WaveOutGetVolume(WAVE_MAPPER, @Volume) = MMSYSERR_NOERROR;
       LVol   := LoWord(Volume);
       RVol   := HiWord(Volume);
     end;
 end;


 { 
  The waveOutGetDevCaps function retrieves the capabilities of 
  a given waveform-audio output device. 

  The waveOutGetVolume function retrieves the current volume level 
  of the specified waveform-audio output device. 
}


 function SetWaveVolume(const AVolume: DWORD): Boolean;
 var
   WaveOutCaps: TWAVEOUTCAPS;
 begin
   Result := False;
   if WaveOutGetDevCaps(WAVE_MAPPER, @WaveOutCaps, SizeOf(WaveOutCaps)) = MMSYSERR_NOERROR then
     if WaveOutCaps.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
       Result := WaveOutSetVolume(WAVE_MAPPER, AVolume) = MMSYSERR_NOERROR;
 end;

 { 
  AVolume: 
  The low-order word contains the left-channel volume setting, 
  and the high-order word contains the right-channel setting. 
  A value of 65535 represents full volume, and a value of 0000 is silence. 
  If a device does not support both left and right volume control, 
  the low-order word of dwVolume specifies the volume level, 
  and the high-order word is ignored. 
}


 { *** How to Use: ***}

 // SetWaveVolume: 

procedure TForm1.Button1Click(Sender: TObject);
 var
   LVol: Word;
   RVol: Word;
 begin
   LVol := SpinEdit1.Value;  // max. is 65535 
  RVol := SpinEdit2.Value;  // max. is 65535 
  SetWaveVolume(MakeLong(LVol, RVol));
 end;


 // GetWaveVolume: 

procedure TForm1.Button2Click(Sender: TObject);
 var
   LVol: DWORD;
   RVol: DWORD;
 begin
   if GetWaveVolume(LVol, RVol) then
   begin
     SpinEdit1.Value := LVol;
     SpinEdit2.Value := RVol;
   end;
 end;
Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay