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. Нашел только здесь. А вообще, отличный сайт