CodeNet / Языки программирования / Delphi & Kylix / Звуки и музыка
CodeNet / Приложения / Звук / Windows
CodeNet / Приложения / Звук / Windows
Изменение громкости звуков в Windows
uses MMSystem;
function GetWaveVolume: DWord;
var Woc : TWaveOutCaps;
Volume : DWord;
begin
result:=0;
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) =
MMSYSERR_NOERROR then begin
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then begin
WaveOutGetVolume(WAVE_MAPPER, @Volume);
Result := Volume;
end;
end;
end;
procedure SetWaveVolume(const AVolume: DWord);
var Woc : TWaveOutCaps;
begin
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) =
MMSYSERR_NOERROR then begin
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
WaveOutSetVolume(WAVE_MAPPER, AVolume);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Beep;
end;
procedure TForm1.Button2Click(Sender: TObject);
var LeftVolume: Word;
RightVolume: Word;
begin
LeftVolume := StrToInt(Edit1.Text);
RightVolume := StrToInt(Edit2.Text);
SetWaveVolume(MakeLong(LeftVolume, RightVolume));
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Caption := IntToStr(GetWaveVolume);
end;
Оставить комментарий
Комментарии
1.


14 октября 2007, 00:18:29
Это корявый способ изменения громкости канала WaveOut. Но есть проблемы.
1. Когда мы в микшере, ползунки не двигаются.
2. А как изменить громкость канала Master?
1. Когда мы в микшере, ползунки не двигаются.
2. А как изменить громкость канала Master?
2.


29 сентября 2006, 20:48:08
А это С++(Builder)
//main.h
<...>
IN HWAVEOUT hwo;
unsigned long Volume;
unsigned long VolumeSystem;
<...>
//main.cpp
#include "MMSystem.h"
<...>
// узнаем громкость системы и сохраняем в VolumeSystem
waveOutGetVolume(hwo, &VolumeSystem);
// Ставим свою громкость
Volume=65535;
waveOutSetVolume(hwo, Volume);
<...>
//Ну или, например, нажали вверх - увеличили громкость на 100
//нажали вниз - уменьшили на 100;
void __fastcall TFormMain::FormKeyDown(TObject* Sender,WORD &Key,TShiftState Shift) {
if(Key==VK_UP) { //вверх
Volume+=100;
waveOutSetVolume(hwo,Volume);
}
if(Key==VK_DOWN) { //вниз
Volume-=100;
waveOutSetVolume(hwo,Volume);
}
}
//!!!!!!!! Не забудь на выходе вернуть громкость системы
// oбратно!!!!!
waveOutSetVolume(hwo, VolumeSystem);
// getAlexX
//main.h
<...>
IN HWAVEOUT hwo;
unsigned long Volume;
unsigned long VolumeSystem;
<...>
//main.cpp
#include "MMSystem.h"
<...>
// узнаем громкость системы и сохраняем в VolumeSystem
waveOutGetVolume(hwo, &VolumeSystem);
// Ставим свою громкость
Volume=65535;
waveOutSetVolume(hwo, Volume);
<...>
//Ну или, например, нажали вверх - увеличили громкость на 100
//нажали вниз - уменьшили на 100;
void __fastcall TFormMain::FormKeyDown(TObject* Sender,WORD &Key,TShiftState Shift) {
if(Key==VK_UP) { //вверх
Volume+=100;
waveOutSetVolume(hwo,Volume);
}
if(Key==VK_DOWN) { //вниз
Volume-=100;
waveOutSetVolume(hwo,Volume);
}
}
//!!!!!!!! Не забудь на выходе вернуть громкость системы
// oбратно!!!!!
waveOutSetVolume(hwo, VolumeSystem);
// getAlexX
3.


29 апреля 2006, 08:02:16
Молодцы!!! Долго искал, как изменить громкость в Delphi. Нашел только здесь. А вообще, отличный сайт
