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

Ваш аккаунт

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

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

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

Как программно изменить громкость через API

5.1K
27 декабря 2003 года
Хрю
14 / / 27.12.2003
Требуется изменить общую громкость через вызов функций API
356
27 декабря 2003 года
molnij
159 / / 20.06.2000
Цитата:
Originally posted by Хрю
Требуется изменить общую громкость через вызов функций API


функции waveOutGetVolume и waveOutSetVolume.

5.1K
28 декабря 2003 года
Хрю
14 / / 27.12.2003
Цитата:
Originally posted by molnij

функции waveOutGetVolume и waveOutSetVolume.



Это понятно. Но я тугой до ужаса :(
Все-таки хотелось бы узнать что нужно передавать в первом параметре. Нужно изменить общий уровень громкости, а не для какого-нибудь конкретного устройства.

356
28 декабря 2003 года
molnij
159 / / 20.06.2000
вроде бы 0, хотя уверен не до конца :). попробуй... по крайней мере у меня была прога, которая вырубала звук - она вызывает с первым параметром 0
5.1K
29 декабря 2003 года
Хрю
14 / / 27.12.2003
Цитата:
Originally posted by molnij
вроде бы 0, хотя уверен не до конца :). попробуй... по крайней мере у меня была прога, которая вырубала звук - она вызывает с первым параметром 0



Не помогает. Ноль - это идентификатор первого устройства. У меня ана завется Wave. Для общего уровня надо что-то другое. Я уже всю справку по MCI перерыл :). Понял только одно - надо учить английский лангвич.

1.9K
29 декабря 2003 года
AviDen
91 / / 26.12.2003
Цитата:
Originally posted by Хрю


Не помогает. Ноль - это идентификатор первого устройства. У меня ана завется Wave. Для общего уровня надо что-то другое. Я уже всю справку по MCI перерыл :). Понял только одно - надо учить английский лангвич.




А ты -1 пробовал? ;-)

356
29 декабря 2003 года
molnij
159 / / 20.06.2000
попробуй разные значения. просто перебирая одно за другим. или добавь в свойствах регулятора громкости первым установки общего уровня :)
5.1K
01 января 2004 года
Хрю
14 / / 27.12.2003
Цитата:
Originally posted by molnij
попробуй разные значения. просто перебирая одно за другим. или добавь в свойствах регулятора громкости первым установки общего уровня :)



В общем, перебор не помог. А прога должна работать с любыми настройками регулятора. Может я сосвем тупой :(, но четыре года практики в написании различных прог все-таки чего то стоят. Короче, я пожалуй, лучше съеду с крыши, чем найду энтот прикол. На этом не сдаюсь! (уже неделю штудирую WIN MCI, в общем, УЧИТЕ АНГЛИЙСКИЙ (не помешает) :))

2.1K
02 января 2004 года
UjinNash
64 / / 29.11.2003
Цитата:
Originally posted by Хрю


В общем, перебор не помог. А прога должна работать с любыми настройками регулятора. Может я сосвем тупой :(, но четыре года практики в написании различных прог все-таки чего то стоят. Короче, я пожалуй, лучше съеду с крыши, чем найду энтот прикол. На этом не сдаюсь! (уже неделю штудирую WIN MCI, в общем, УЧИТЕ АНГЛИЙСКИЙ (не помешает) :))


Посмотри вот это:
#include <mmsystem.h>
#include <stdlib.h>

void ShowVolume(void); //Prototype the function early in the app

void ShowVolume(void)
{
// This is the function that can be added to the Generic Sample to
// illustrate the use of waveOutGetVolume() and waveOutSetVolume().

char buffer[40];
char printbuf[80];
UINT uRetVal, uNumDevs;
DWORD volume;
long lLeftVol, lRightVol;

WAVEOUTCAPS waveCaps;

// Make sure there is at least one
// wave output device to work with.
if (uNumDevs = waveOutGetNumDevs())
{
itoa((int)uNumDevs, buffer, 10);
wsprintf(printbuf, "Number of devices is %s\n", (LPSTR)buffer);
MessageBox(GetFocus(), printbuf, "NumDevs", MB_OK);
}

// This sample uses a hard-coded 0 as the device ID, but retail
// applications should loop on devices 0 through N-1, where N is the
// number of devices returned by waveOutGetNumDevs().
if (!waveOutGetDevCaps(0,(LPWAVEOUTCAPS)&waveCaps,
sizeof(WAVEOUTCAPS)))

{
// Verify the device supports volume changes
if(waveCaps.dwSupport & WAVECAPS_VOLUME)
{
// The low word is the left volume, the high word is the right.
// Set left channel: 2000h is one-eighth volume (8192 base ten).
// Set right channel: 4000h is quarter volume (16384 base ten).
uRetVal = waveOutSetVolume(0, (DWORD)0x40002000UL);

// Now get and display the volumes.
uRetVal = waveOutGetVolume(0, (LPDWORD)&volume);

lLeftVol = (long)LOWORD(volume);
lRightVol = (long)HIWORD(volume);

ltoa(lLeftVol, buffer, 10);
wsprintf(printbuf, "Left Volume is %s\n", (LPSTR)buffer);
MessageBox(GetFocus(), printbuf, "Left Volume", MB_OK);

ltoa(lRightVol, buffer, 10);
wsprintf(printbuf, "Right Volume is %s\n", (LPSTR)buffer);
MessageBox(GetFocus(), printbuf, "Right Volume", MB_OK);

// The low word is the left volume, the high word is the right.
// Set left channel: 8000h is half volume (32768 base ten).
// Set right channel: 4000h is quarter volume (16384 base ten).
uRetVal = waveOutSetVolume(0, (DWORD)0x40008000UL);

// Now get and display the volumes.
uRetVal = waveOutGetVolume(0, (LPDWORD)&volume);

lLeftVol = (long)LOWORD(volume);
lRightVol = (long)HIWORD(volume);

ltoa(lLeftVol, buffer, 10);
wsprintf(printbuf, "Left Volume is %s\n", (LPSTR)buffer);
MessageBox(GetFocus(), printbuf, "Left Volume", MB_OK);

ltoa(lRightVol, buffer, 10);
wsprintf(printbuf, "Right Volume is %s\n", (LPSTR)buffer);
MessageBox(GetFocus(), printbuf, "Right Volume", MB_OK);

}
}
}

5.1K
04 января 2004 года
Хрю
14 / / 27.12.2003
Все ОК - заработало. Дошло наконец-то! :)
Всем бальшое спасиба.
Тема закрыта.
100K
04 декабря 2018 года
1 / / 04.12.2018
Цитата: Хрю
Все ОК - заработало. Дошло наконец-то! :)
Всем бальшое спасиба.
Тема закрыта.

такая же проблема, решение надо срочно. не могу понять в чем дело. меняет звук не общую громкость а только того приложения где запускается.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог