Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7 / 25 сообщений из 27, страница 1 из 2
03.11.2014, 11:33
    #38794537
Вадимиус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
Привет, коллеги !

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


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

Код: 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
03.11.2014, 12:08
    #38794557
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
Вадимиус, waveOutGetVolume возвращает 6 кодов ошибок. Проанализируй их.

http://msdn.microsoft.com/en-us/library/aa909806.aspx
...
Рейтинг: 0 / 0
03.11.2014, 12:21
    #38794568
Вадимиус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
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
03.11.2014, 12:26
    #38794572
Вадимиус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
В моём случае waveOutOpen(&hwo,WAVE_MAPPER,&tw,NULL,NULL,WAVE_FORMAT_DIRECT );
возвращает код 32.

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

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

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


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


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

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


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

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


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

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

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


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

Ну не надо.. Под XP работает исправно. В чём то разница между ОСями.. В ЧЕМ ?
...
Рейтинг: 0 / 0
03.11.2014, 15:36
    #38794665
Вадимиус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
Вадимиус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
03.11.2014, 15:46
    #38794671
Вадимиус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление звуком. Ошибка открытия устройства waveOutOpen(). VS2008+Win 7
ВадимиусВадимиуспропущено...


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



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

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

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


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

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

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

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

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

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

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


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

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

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

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

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

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

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


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