Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11639
Последний выпуск: 19.06.2015

Изменение громкости звуков в 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;

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
33K
14 октября 2007 года
Mercury
0 / / 14.10.2007
Мне нравитсяМне не нравится
14 октября 2007, 00:18:29
Это корявый способ изменения громкости канала WaveOut. Но есть проблемы.
1. Когда мы в микшере, ползунки не двигаются.
2. А как изменить громкость канала Master?
2.
22K
22 сентября 2006 года
getAlexX
0 / / 22.09.2006
Мне нравитсяМне не нравится
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
3.
Аноним
Мне нравитсяМне не нравится
29 апреля 2006, 08:02:16
Молодцы!!! Долго искал, как изменить громкость в Delphi. Нашел только здесь. А вообще, отличный сайт
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог