Консультация № 178039
25.04.2010, 17:31
0.00 руб.
0 5 1
Здравствуйте Уважаемые эксперты.
Пользуюсь компонентом MediaPlayer для воспроизведения музыки в своей программе.
Когда запускаю программу на компьютере, где нет колонок сообщает что-то наподобие "No MCI Devices found...".
Как сделать так, чтобы при запуске на компьютере, где нет устройств воспроизведения звука программа просто не воспроизводила его, а не выдавала ошибку?

Обсуждение

давно
Профессионал
153662
1070
25.04.2010, 19:17
общий
Dimon4ik:
Могу предложить сразу после запуска программы проверять наличие звуковой карты в системе.
Код:
uses MMsystem;  
if WaveOutGetNumDevs>0 then
Showmessage('Yes')
else
Showmessage('No');
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Неизвестный
25.04.2010, 23:08
общий
Евгений/Genia007/:
Спасибо, я испробую на днях, когда буду за компьютером без звуковой карты
Но судя по всему отличный подход.
А он работает для для Wave или же для всего?
Просто я в некоторых программах midi воспроизвожу...
давно
Профессионал
153662
1070
25.04.2010, 23:13
общий
Dimon4ik:
Я думаю по идее просто проверяется наличие возможности воспроизводить звук, самому ещё не доводилось проверять по каким типам звук. файлов это работает.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

давно
Профессионал
153662
1070
25.04.2010, 23:57
общий
Dimon4ik:
Вот из справки delphi:
The waveOutGetNumDevs function retrieves the number of waveform-audio output devices present in the system.

UINT waveOutGetNumDevs(VOID);
Parameters
This function takes no parameters.

Return Values
Returns the number of devices. A return value of zero means that no devices are present or that an error occurred.

тоже самое по midi:
The midiOutGetNumDevs function retrieves the number of MIDI output devices present in the system.

UINT midiOutGetNumDevs(VOID);
Parameters
This function takes no parameters.

Return Values
Returns the number of MIDI output devices. A return value of zero means that there are no devices (not that there is no error).

Так что можно дополнительно проверять и возможность midi.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

давно
Профессионал
153662
1070
27.04.2010, 20:29
общий
это ответ
Здравствуйте, Dimon4ik.
Могу предложить сразу после запуска программы проверять наличие звуковых карт, и после этого уже принимать решение запускать или нет на воспроизведение MediaPlayer:
Код:
uses MMsystem;  

if WaveOutGetNumDevs > 0 then
Showmessage('Звуковая карта присутствует')
else
Showmessage('Звукой карты нет');

if midiOutGetNumDevs > 0 then
Showmessage('Midi может быть воспроизведён')
else
Showmessage('Midi не может быть воспроизведён');


Функция waveOutGetNumDevs возвращает количество аудиоустройств (устройств вывода данных, записанных
методом импульсно-кодовой модуляции) в системе. При возвращении ноля означает, что никакие устройства не присутствуют или что произошла ошибка.

Функция midiOutGetNumDevs возвращает количество представленных устройств вывода MIDI в системе. Возвращает номер устройств вывода MIDI. Возвращаемое значение нуля означает, что нет никаких устройств.
5
Спасибо. Вы мне очень помогли.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Форма ответа