Проигрывается ли файл?

Программирование на Visual Basic for Applications
Ципихович Эндрю
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 07.04.2010 (Ср) 17:19

Проигрывается ли файл?

Сообщение Ципихович Эндрю » 24.04.2010 (Сб) 0:13

Перед остановкой музыкального файла подскажите как узнать проигрывается ли он при помощи ВБА
Код: Выделить всё
'объявляем API вверху кода для воспроизведения файлов в формате mp3 и wav
Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
'для воспроизведения
Call mciExecute("play C:\WINDOWS\Media\Моцарт.wav")
'для остановки музыки
'Вот здесь и нужна проверка ???
If  Then Call mciExecute("close C:\WINDOWS\Media\Моцарт.wav")

Я хочу остановить только в случае если он проигрывается, если он не проигрывается и я его попытаюсь остановить тогда получу сообщение от Винды, я не хочу получать это сообщение. Для этго и нужна проверка

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Проигрывается ли файл?

Сообщение Debugger » 24.04.2010 (Сб) 9:34

Код: Выделить всё
Dim b As Boolean
...
b=True
Call mciExecute("play C:\WINDOWS\Media\Моцарт.wav")
....
If b Then Call mciExecute("close C:\WINDOWS\Media\Моцарт.wav"):b=false

Ципихович Эндрю
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 07.04.2010 (Ср) 17:19

Re: Проигрывается ли файл?

Сообщение Ципихович Эндрю » 24.04.2010 (Сб) 10:59

Я так понимаю после проигрывания файла булевая переменная b должна стать в положение Ложь, но увы этого не происходит
Затем у Васили ошибка или что но указано: If b Then в таком случае получае сообщение от Винды
Если предположить, что Вы ошиблись и надо, чтобы было If b = True Then, тогда как я и говорил после проигрывания файла булевая переменная b не становится в положение Ложь

GDK
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 23.10.2008 (Чт) 16:15

Re: Проигрывается ли файл?

Сообщение GDK » 27.04.2010 (Вт) 12:37

А не проще применить On Error Resume Next ...... On Error Goto 0? Хотя фиг его знает сработает ли это, но думаю стоит попробовать.

Ципихович Эндрю
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 07.04.2010 (Ср) 17:19

Re: Проигрывается ли файл?

Сообщение Ципихович Эндрю » 27.04.2010 (Вт) 18:53

Код: Выделить всё
'объявляем API вверху кода для проверки проигрывается ли файл
Private Declare Function mciSendString Lib "winmm" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrRlpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
'_______________________________________________________________________________________________
'объявляем API вверху кода для воспроизведения файлов в формате mp3 и wav
Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
'для воспроизведения
Call mciExecute("play D:\ФИЛЬМЫ\Моцарт.wav")
'проверка воспроизводится ли файл
Dim strMCIAlias As String
Dim strMode As String * 255
strMCIAlias = "D:\ФИЛЬМЫ\Моцарт.wav"
Call mciSendString("Status " & strMCIAlias & " mode", strMode, 255, 0)
'для остановки музыки
If strMode Like "*playing*" Then Call mciExecute("close D:\ФИЛЬМЫ\Моцарт.wav") 'если файл не проигрывается strMode Like "*stopped*"



Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

    TopList