![]() |
|
|
#1
|
|||
|
|||
![]() Подскажите как изменять общую громкость в Windows к примеру с помощью TrackBara ?
|
#2
|
||||
|
||||
![]() Один из вариантов:
Код:
procedure SetVolume(X: Word); var iErr: Integer; i: integer; a: TAuxCaps; begin for i := 0 to auxGetNumDevs do begin auxGetDevCaps(i, Addr(a), SizeOf(a)); if a.wTechnology = AUXCAPS_CDAUDIO then break; end; // Устанавливаем одинаковую громкость для левого и правого каналов. // VOLUME := LEFT*$10000 + RIGHT*1 iErr := auxSetVolume(i, (X * $10001)); if (iErr‹›0) then ShowMessage('No audio devices are available!'); end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
![]() Я только учусь!Всё,что читал в инэте,не работало,или я не правильно что-то делал.
Вот в коде тоже не пойму откуда брать procedure SetVolume(X: Word);? |
#4
|
||||
|
||||
![]() Это готовая процедура, вызываете её с величиной от 0 до 100
Код:
SetVolume(10); SetVolume(20); SetVolume(30); SetVolume(40); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
|||
|
|||
![]() пишет
No audio devices are available Код:
procedure TForm1.Button1Click(Sender: TObject); begin SetVolume(1); end; не так должно быть? |
#6
|
||||
|
||||
![]() Вот доработанный напильником код:
Код:
procedure SetVolume(X : Word); type TVolumeType = record case Integer of 0: (LongVolume: Longint); 1: (LeftVolume, RightVolume : Word); end; var iErr : Integer; I, J : Integer; WaveOutCaps : TWaveOutCaps; Vol : TVolumeType; begin J := 0; for I := 0 to waveOutGetNumDevs - 1 do begin waveOutGetDevCaps(I, @WaveOutCaps, SizeOf(WaveOutCaps)); if (WaveOutCaps.dwSupport and WAVECAPS_VOLUME) <> 0 then begin Vol.LeftVolume := X shl 8; Vol.RightVolume := Vol.LeftVolume; J := I; Break; end; end; iErr := waveOutSetVolume(J, Vol.LongVolume); if (iErr <> 0) then ShowMessage('No audio devices are available!'); end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |