Вот доработанный напильником код:
Код:
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;
диапазон громкости от 0 до 255. Изменяет громкомть Wave канала. Предыдущий код был рассчитан на CDaudio.