powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
27 сообщений из 27, показаны все 2 страниц
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794537
Фотография Вадимиус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, коллеги !

Незадача, чъёрт побъеры !


Есть код для выключения звука:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
// где-то в h-Файле
#include <Mmsystem.h>
         HWAVEOUT hwo;
 	 WAVEFORMATEX tw;
 	 DWORD Volume;

// собственно сpp-реализация
// открыть звуковое устройство и получить дескриптор
		MMRESULT f0 = waveOutOpen(&hwo,WAVE_MAPPER,&tw,NULL,NULL,WAVE_FORMAT_DIRECT );
		if(f0 != MMSYSERR_NOERROR ) // WAVE_ALLOWSYNC, WAVE_FORMAT_DIRECT - работает 0-не полностью	
		{
			MessageBox("Ошибка открытия устройства звука");
			CString dd;
			dd.Format("%d",(int)f0);
			MessageBox(dd);
		}

// отключить звук
             waveOutGetVolume(hwo, &Volume);
             waveOutSetVolume(hwo, 0);

// включить обратно
             waveOutSetVolume(hwo, Volume);



Нстройка проекта Release: Linker --> Input --> Additional dependencies = WINMM.LIB (на VC++6 чуть в другом месте)

Так вот в чем прикол !

Компилю на своей любимой старенькой Visual Studio 6 на Win XP+SP3 - работает как часики !
Этот же код откомпилированный - переношу в виде EXE на Win 7 (Corporate edition)
Не работает. Звук НЕ отключает !

Ставлю на Win-7 VS2008. Компилирую. В своей же среде НЕ работает. При открытии код открытия 32 - ошибка.
Соответственно звук НЕ отключается, а иногда прога даже аварийно завершается. Ошибок при компиляции нет !

Помогите плизз ! В чём дело ? Почему не открывается звуковое устройство ?!!! Или может быть у кого-то есть наработки по такому простому вопросу, как ОТКЛЮЧЕНИЕ звука ?! Благодарность моя не будет знать границ !
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794557
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадимиус, waveOutGetVolume возвращает 6 кодов ошибок. Проанализируй их.

http://msdn.microsoft.com/en-us/library/aa909806.aspx
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794568
Фотография Вадимиус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВадимиус, waveOutGetVolume возвращает 6 кодов ошибок. Проанализируй их.

http://msdn.microsoft.com/en-us/library/aa909806.aspx

Всё хорошо, но выдает ошибку waveOutOpen(&hwo,WAVE_MAPPER,&tw,NULL,NULL,WAVE_FORMAT_DIRECT );
при открытии. причём только на Win-7 !

Может надо как-то дополнительно инициализировать структуру WAVEFORMATEX ?
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794572
Фотография Вадимиус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В моём случае waveOutOpen(&hwo,WAVE_MAPPER,&tw,NULL,NULL,WAVE_FORMAT_DIRECT );
возвращает код 32.

Где смотреть соответствие кодов и типов ошибок ?
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794577
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадимиускод открытия 32 - ошибка.
WAVERR_BADFORMAT Attempted to open with an unsupported waveform-audio format.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794578
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По ссылке что я привел есть табличка. Справочник кодов ошибок.
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794579
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВадимиусМожет надо как-то дополнительно инициализировать структуру WAVEFORMATEX ?

Ты её вообще не инициализируешь. Ожидаешь от мусора чего-то кроме непредсказуемого
поведения?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794608
Фотография Вадимиус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВадимиусМожет надо как-то дополнительно инициализировать структуру WAVEFORMATEX ?

Ты её вообще не инициализируешь. Ожидаешь от мусора чего-то кроме непредсказуемого
поведения?..


В смысле ? Так надо или нет инициализировать ? На Win Xp с компиляцией под VC++6 ничего не инициализировал и работало же ?
В чем принципиальная разница в работе в другой ОСи ????
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794609
Фотография Вадимиус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВадимиускод открытия 32 - ошибка.
WAVERR_BADFORMAT Attempted to open with an unsupported waveform-audio format.


Не вкурил... "Попытка открыть с неподдерживаемым форматом аудио сигнала." ??? ЭТО ПРО ЧТО ?
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794611
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВадимиусDimitry Sibiryakovпропущено...

Ты её вообще не инициализируешь. Ожидаешь от мусора чего-то кроме непредсказуемого
поведения?..


В смысле ? Так надо или нет инициализировать ? На Win Xp с компиляцией под VC++6 ничего не инициализировал и работало же ?
В чем принципиальная разница в работе в другой ОСи ????
Вместо очень длинного ответа на этот вопрос можно просто предложить тебе вернуться на WinXP.
Там - работало. Теперь - не работает.
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794632
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВадимиусЭТО ПРО ЧТО ?
Загляни в MMSystem.h, может дойдёт...

А вообще - выкинь нафиг это открытие. В доке по waveSetVolume() написано, что оно
принимает и просто ID устройства.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794639
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обсуждаем испорченные часы которые внезапно дважды в сутки показали точное время.
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794654
Фотография Вадимиус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВадимиуспропущено...


В смысле ? Так надо или нет инициализировать ? На Win Xp с компиляцией под VC++6 ничего не инициализировал и работало же ?
В чем принципиальная разница в работе в другой ОСи ????
Вместо очень длинного ответа на этот вопрос можно просто предложить тебе вернуться на WinXP.
Там - работало. Теперь - не работает.

Не. Это не рассматривается. Запрещено сисадмином переставлять ОСи :(
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794656
Фотография Вадимиус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВадимиусЭТО ПРО ЧТО ?
Загляни в MMSystem.h, может дойдёт...

А вообще - выкинь нафиг это открытие. В доке по waveSetVolume() написано, что оно
принимает и просто ID устройства.


Читал. Где взять ID ? auxGetNumDevs ??
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794657
Фотография Вадимиус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОбсуждаем испорченные часы которые внезапно дважды в сутки показали точное время.

Ну не надо.. Под XP работает исправно. В чём то разница между ОСями.. В ЧЕМ ?
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794665
Фотография Вадимиус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВадимиусDimitry Sibiryakovпропущено...

Загляни в MMSystem.h, может дойдёт...

А вообще - выкинь нафиг это открытие. В доке по waveSetVolume() написано, что оно
принимает и просто ID устройства.


Читал. Где взять ID ? auxGetNumDevs ??
Код: plaintext
1.
2.
UINT ww = auxGetNumDevs();
MMRESULT f0 = waveOutOpen(&hwo,ww,&tw,NULL,NULL,WAVE_FORMAT_DIRECT );



теперь при открытии код ошибки 11. Все равно звук не останавливается ))))
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794671
Фотография Вадимиус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВадимиусВадимиуспропущено...


Читал. Где взять ID ? auxGetNumDevs ??
Код: plaintext
1.
2.
UINT ww = auxGetNumDevs();
MMRESULT f0 = waveOutOpen(&hwo,ww,&tw,NULL,NULL,WAVE_FORMAT_DIRECT );



теперь при открытии код ошибки 11. Все равно звук не останавливается ))))

кстати auxGetNumDevs() дает 0. Почему может так быть ???
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794698
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВадимиусmaytonОбсуждаем испорченные часы которые внезапно дважды в сутки показали точное время.

Ну не надо.. Под XP работает исправно. В чём то разница между ОСями.. В ЧЕМ ?
Думаю что MS оставляет за собой право менять поведение функций.
Кстати такая практика есть не только у MS но и у Oracle, IBM e.t.c.
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794709
Фотография Вадимиус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВадимиуспропущено...


Ну не надо.. Под XP работает исправно. В чём то разница между ОСями.. В ЧЕМ ?
Думаю что MS оставляет за собой право менять поведение функций.
Кстати такая практика есть не только у MS но и у Oracle, IBM e.t.c.

Да оно-то понятно и даже очень. Но КАК-то ведь на 7-ке работает управление звуком !

Кстати, ребята ! Я ставил VS2008 без SP1. Кто его ставил ? В этом не может быть загвоздки ?
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794713
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадимиус, у тебя алгоритм какой-то странный. Если waveOutOpen - не сработал
ты продолжаешь работать с waveOutGetVolume, waveOutSetVolume.

Второе. Ты не анализируешь коды ошибок waveOutGetVolume, waveOutSetVolume.
Добавить больше нечего.

Перепиши код так чтобы он был логичным и выдавал информацию по статусам
каждого каллбека в случае ошибок.
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794741
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВадимиусГде взять ID ? auxGetNumDevs ??
Про mixerGetID() пробовал почитать?..

Вадимиускстати auxGetNumDevs() дает 0. Почему может так быть ???
Очевидно потому, что у тебя нет aux устройств.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794881
Фотография Вадимиус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВадимиусГде взять ID ? auxGetNumDevs ??
Про mixerGetID() пробовал почитать?..

Вадимиускстати auxGetNumDevs() дает 0. Почему может так быть ???
Очевидно потому, что у тебя нет aux устройств.


mixerGetID() - спасибо ! Сразу не обратил внимание. Скачаю книгу - изучу подробнее. Наверное самое ТО, что надо ;)

auxGetNumDevs() - Да, да... попробовал, увидел 0 - внимательно посмотрел. Правильнее было бы использовать UINT waveOutGetNumDevs(void);
Но все равно ошибки. теперь 2, 11 ... Почитаю про микшеры. )))

По итогу отпишусь )))
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38794903
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переходи на Java.... там проще.
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38795162
Фотография Вадимиус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПереходи на Java.... там проще.

Проще ? Прийдётся еще месяц разбираться с Java... да как это прикрутить в проект на VC++..

А можно хоть в 2 словах, как смешивать код на С++ с Java в одном проекте ?
Или где посмотреть ?
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38795193
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прикручивается со стороны Java через интерфaейс JNI.

Со стороны С++ - можно форкнуть процесс java.exe и передать ему
через консольные аргументы всё что надо.

Но это всё - философия. Если ты опишешь подробно саму задачу
то может и С++ тебе не нужен.
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38795698
Фотография Вадимиус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бляха муха ! Мужики, выручайте, если можете....

Посмотрел и попытался вникнуть в книгу "программирование аппаратных средств в Windows изд.2" Описано очень подробно, аж до умопомрачения. Наверное у меня нормально вникнуть не получилось, потому что часа 3 долблюсь, а результатов нет !
Вот фрагмент моего кода.

Подскажите свои умным глазом, где бокопорю ?!!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
// заголовки...
        HMIXEROBJ  hm;
	HMIXER     Mixer;
	MIXERLINE mxl;
	MIXERLINECONTROLS mxlc;
	MIXERCONTROL mxc;
	MIXERCAPS  mixerCaps;
	MIXERCONTROLDETAILS_UNSIGNED mxcdVolume;
	MIXERCONTROLDETAILS mxcd;

	UINT  * MxId;

//  где-то в InitDialog() ...
                CString dd;
                MMRESULT f1;
		UINT f0 = mixerGetNumDevs(); // получил 4
				
                // раньше в цикле от 0 до 4 нашел, что 0 и 1 открываются без ошибки, поэтому дальше тулю 1
		mixerOpen(&Mixer,1,NULL,0,MIXER_OBJECTF_HMIXER); 

		mxl.cbStruct = sizeof(MIXERLINE);
		mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
		mixerGetLineInfo((HMIXEROBJ)Mixer, &mxl, MIXER_GETLINEINFOF_COMPONENTTYPE|MIXER_OBJECTF_HMIXER);

		mxlc.cbStruct = sizeof(MIXERLINECONTROLS);
		mxlc.dwLineID = mxl.dwLineID;
		mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;
		mxlc.cControls = 1;
		mxlc.cbmxctrl = sizeof(MIXERLINECONTROLS);
		mxlc.pamxctrl = &mxc;
		mixerGetLineControls((HMIXEROBJ)Mixer, &mxlc, MIXER_OBJECTF_HMIXER|MIXER_GETLINECONTROLSF_ONEBYTYPE);
				
		mxcd.cbStruct  = sizeof(MIXERCONTROLDETAILS);
		mxcd.cChannels = 1;
		mxcd.cMultipleItems = 0;
		mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);
		mxcd.paDetails = &mxcdVolume;
		
                // код завершения
		f1 = mixerGetControlDetails((HMIXEROBJ)Mixer,&mxcd,MIXER_OBJECTF_MIXER|MIXER_GETCONTROLDETAILSF_VALUE);	

		DWORD Value1 = mxcdVolume.dwValue;  // по идее моя громкость, которую потом воткну = 0
		
			if(f1 != MMSYSERR_NOERROR ) 
			{
				dd.Format("Ошибка открытия устройства микширования звука код - %d, ",(ULONG)f1);
				MessageBox(dd);
			}
				dd.Format("Громкость - %d, ",(ULONG)Value1);
				MessageBox(dd);



Почти постоянно код ошибки mixerGetControlDetails = 1025 (Что за....!)
Громкость = 1 ( Не может быть )

Мозги уже плавятся ! Что я не так и не туда приткнул ? !!
...
Рейтинг: 0 / 0
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
    #38838836
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот что не понял. Если под Win XP всё работает, а под Win 7 - нет, то ведь это на разных компах? Т.е. разные не только ОС, но и звуковые карты, и их драйвера? А с чего кто-то решил, что всё будет работать одинаково? У меня на домашнем компе в звуковой карте вообще перепутаны левый и правый каналы у линейного выхода (то, что все программы определяют как левый канал, подано на разъёме на контакт правого, и наоборот).
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]