Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2009, 13:18   #1
luckmaster
Новичок
Джуниор
 
Регистрация: 13.04.2009
Сообщений: 2
Вопрос Как изменить общую громкость в Windows XP?

Приветствую!

Задача: изменить общую громкость (для всех приложений) в windows XP.

Предполагаю что могут быть 2 решения:
1. Должна существовать win api функция, которая умеет менять общую громкость. Но вот как зовется эта функция? Может кто носом ткнет.
2. Возможно в реестре есть параметр отвечающий за громкость. Где этот параметр?

Ну или может другие способы решения задачи есть?

З.Ы. Программу собираюсь писать в Visual C++

Последний раз редактировалось luckmaster; 13.04.2009 в 13:26.
luckmaster вне форума Ответить с цитированием
Старый 14.04.2009, 11:52   #2
radiohobbyt
Пользователь
 
Регистрация: 28.03.2009
Сообщений: 38
По умолчанию

http://www.hostmake.ru/articles/delphi/360/
только в си перевведи...вроде все понятно
ЗЫ пользуйся гуглом- он умный!
radiohobbyt вне форума Ответить с цитированием
Старый 14.04.2009, 13:41   #3
radiohobbyt
Пользователь
 
Регистрация: 28.03.2009
Сообщений: 38
По умолчанию

Код:
#include <mmsystem.h>


unsigned int GetWaveVolume(void)
{

WAVEOUTCAPSA Woc;

DWORD Volume ;

if(waveOutGetDevCapsA(WAVE_MAPPER, &Woc, sizeof(Woc)) ==

MMSYSERR_NOERROR)

if(Woc.dwSupport && WAVECAPS_VOLUME == WAVECAPS_VOLUME)

waveOutGetVolume((void*)WAVE_MAPPER, &Volume);

return Volume;
}
void SetVolume(unsigned int SetVolume)
{
WAVEOUTCAPSA Woc;

DWORD Volume ;

if(waveOutGetDevCapsA(WAVE_MAPPER, &Woc, sizeof(Woc)) ==

MMSYSERR_NOERROR)

if(Woc.dwSupport && WAVECAPS_VOLUME == WAVECAPS_VOLUME)

waveOutSetVolume((void*)WAVE_MAPPER, SetVolume);
}
изменение громкости в билдере
Код:
void __fastcall TForm1::TrackBar2Change(TObject *Sender)
{
        SetVolume(MAKELONG(Form1->TrackBar1->Position,Form1->TrackBar2->Position));
}

Последний раз редактировалось rpy3uH; 14.04.2009 в 17:10.
radiohobbyt вне форума Ответить с цитированием
Старый 14.04.2009, 15:42   #4
luckmaster
Новичок
Джуниор
 
Регистрация: 13.04.2009
Сообщений: 2
По умолчанию

Функция waveOutSetVolume - это именно то что мне надо.

По началу, правда, компилятор матюгался на строку
waveOutSetVolume((void*)WAVE_MAPPER , SetVolume);
Писал
error C2664: 'waveOutSetVolume' : cannot convert parameter 1 from 'void *' to 'HWAVEOUT'

Потом я заменил 1-й параметр на 0
waveOutSetVolume(0, SetVolume);
Теперь и компилируется и работает так как мне было надо.
radiohobbyt, большое спасибо!
luckmaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Caption кнопки ПУСК (START) - изменить надпись на кнопке Пуск в Windows XP Altera Win Api 19 29.12.2011 15:49
Как загрузить Windows-приложение без Windows alexray Компоненты Delphi 4 30.04.2010 14:38
Изменить надписи на кнопках в Windows Dr.Badnezz Общие вопросы Delphi 3 20.12.2008 15:28
Повышаем громкость Veiron Свободное общение 9 29.05.2008 20:40
Системная громкость ЧИЖ Win Api 3 22.08.2007 21:23