Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.10.2011, 21:06
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
Вопрос Звук

Подскажите как изменять общую громкость в Windows к примеру с помощью TrackBara ?
Ответить с цитированием
  #2  
Старый 18.10.2011, 22:02
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Один из вариантов:
Код:
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  
Старый 19.10.2011, 20:37
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

Я только учусь!Всё,что читал в инэте,не работало,или я не правильно что-то делал.
Вот в коде тоже не пойму откуда брать

procedure SetVolume(X: Word);?
Ответить с цитированием
  #4  
Старый 19.10.2011, 21:51
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Это готовая процедура, вызываете её с величиной от 0 до 100
Код:
  SetVolume(10);
  SetVolume(20);
  SetVolume(30);
  SetVolume(40);
числа, это какую громкость хотим выставить.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 19.10.2011, 23:10
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

пишет
No audio devices are available

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  SetVolume(1);
end;

не так должно быть?
Ответить с цитированием
  #6  
Старый 19.10.2011, 23:38
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Вот доработанный напильником код:
Код:
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.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 20.10.2011, 19:33
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

Не выходит чего-то ничего!Может я не правильно объяснил что мне нужно?
На моей форме есть компонент TrackBar и мне надо,чтоб я с помощью него регулировал звук,то есть,если я убавляю звук,то и в Windows"ком регуляторе громкости он тоже убавляться,а если я через Windows регулятор убавляю то и в TrackBar тоже убавлялся.
Ответить с цитированием
  #8  
Старый 20.10.2011, 22:06
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Не работает? Срочно купить учебник по Дельфи и учить, учить, учить.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:06.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025