|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.02.2010, 19:22 | #1 |
Пользователь
Регистрация: 07.01.2010
Сообщений: 30
|
Программное воспроизведение звуков
Подскажите, пожалуйста, как в макросах приложений MS Office воспроизводить звуки при наступлении различных событий.
Там есть контролька "Windows Media Player". Я добавляю к проекту пользовательскую форму, "кидаю" эту контрольку на форму, в ее свойствах устанавливаю звуковой файл, который надо воспроизводить, а что дальше-то? Как заставить "играть", когда надо и замолкать, когда надо? При программировании на VB5 и VB6 имеются команды MediaPlayer.Play и MediaPlayer.Stop. Точно уже не помню, но, кажется, именно так. А здесь он эти команды не понимает. Как им руководить-то? Можно, конечно, использовать API-функцию PlaySound, но там я "не дружу" с флагами Спасибо! |
23.02.2010, 00:12 | #2 |
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
А какая проблема с флагами PlaySound ?
Если он равен 0, то приложение будет ждать, пока звук не закончится если он равен 1, то приложение будет реагировать на действия пользователя, даже если звук не закончился и т.д. cм MSDN Cм так же: http://support.microsoft.com/kb/158140 http://support.microsoft.com/kb/201543 http://www.emanual.ru/download/www.eManual.ru_54.html Кроме того на www.un4seen.co.uk можно найти bass.dll c кучей функций и примеров использования Последний раз редактировалось Aent; 23.02.2010 в 00:22. |
23.02.2010, 19:55 | #3 |
Пользователь
Регистрация: 07.01.2010
Сообщений: 30
|
Aent, спасибо за ответ.
Но всё-таки, если уж использовать API-функции, то мне не понятно следующее: как в одном параметре Флага передать сразу несколько значений?! Как я понимаю, это делается при помощи оператора OR, но у меня не укладывается в голове, как можно параметр в формате Long передавать таким вот способом: Код:
Функция ожидает параметра в виде числа, а ей "пихают" два числа, связанных оператором ИЛИ. Она их оба "заглатывает" что ли, я понять не могу? Таким способом можно сразу несколько параметров передавать? Хитрый способ такой что ли? Последний раз редактировалось Олег*; 23.02.2010 в 19:57. |
23.02.2010, 21:51 | #4 |
Пользователь
Регистрация: 07.01.2010
Сообщений: 30
|
Кто знает, объясните, пожалуйста, как это "работает"?
Код на Листе1 в Excel: Код:
|
23.02.2010, 21:58 | #5 |
Пользователь
Регистрация: 07.01.2010
Сообщений: 30
|
А, до меня дошло... Это, наверно, побитовое сложение или что-то в этом роде!
Ну значит и в случае передачи параметров они тоже "пакуются в один флакон" таким же способом! Правильно я думаю? Последний раз редактировалось Олег*; 23.02.2010 в 22:03. |
23.02.2010, 23:41 | #6 |
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
Да. ИЛИ (OR) - это побитовое сложение, И (AND) - побитовое умножение
и т.д. |
25.02.2010, 13:33 | #7 |
Пользователь
Регистрация: 07.01.2010
Сообщений: 30
|
Ну вот я написал на Листе1 приблизительный кусок кода, который должен воспроизводить звук непрерывно (по кругу), когда пользователь вставляет в любую ячейку цифру 1 и останавливать воспроизведение, когда будет напечатан ноль. А все другие цифры игнорируем. На диске C: должен быть какой-нибудь коротенький Wav-файл под именем 01.WAV.
Ну а дальше всё работает вот так: когда печатаю разные цифры кроме 1, молчание, Когда впечатываю куда-нибудь единицу, начинает "верещать" Но остановить эти "душераздирающие звуки" ни впечатыванием нуля, ни командой BREAK, ни CTRL+BREAK невозможно! Он будет верещать до тех пор, пока не закрыть Excel, в котором создан макрос. Вопрос: как мне программно заставить его замолчать? Код:
Последний раз редактировалось Олег*; 25.02.2010 в 13:36. |
25.02.2010, 14:01 | #8 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
Попытка не пытка!
Попробуй
Код:
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
|
25.02.2010, 14:47 | #9 |
Пользователь
Регистрация: 07.01.2010
Сообщений: 30
|
Убрал!
Но в таком виде: Код:
|
25.02.2010, 15:16 | #10 |
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
Для прекращения воспроизведения зацикленного ассинхронного звука вызовите
Код:
Последний раз редактировалось Aent; 25.02.2010 в 16:16. Причина: Вместо VbNullChar должно быть VbNullString |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Воспроизведение нескольких звуков одновременно | GodSmack | Общие вопросы Delphi | 3 | 13.08.2009 02:28 |
Сравнение звуков | MakarovAlv | Помощь студентам | 1 | 26.06.2009 16:13 |
Склеивание звуков | varvara16 | Мультимедиа в Delphi | 24 | 14.11.2008 18:24 |
Диаграммы звуков | Kor | Мультимедиа в Delphi | 1 | 30.09.2008 22:43 |