powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Пишет ошибку при открытии аудио файла. Что делать?
11 сообщений из 11, страница 1 из 1
Пишет ошибку при открытии аудио файла. Что делать?
    #39095328
_VoDkA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пишет ошибку при открытии mp3 Файла. Путь верный. Использую функию Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long.
...
Рейтинг: 0 / 0
Пишет ошибку при открытии аудио файла. Что делать?
    #39095368
Integrator2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если строка запуска выглядит как-то так Call mciExecute("play " & ...какой-то путь...)
То нужно путь обернуть в двойные или одинарные кавычки. Поскольку путь содержит пробелы.
...
Рейтинг: 0 / 0
Пишет ошибку при открытии аудио файла. Что делать?
    #39095538
_VoDkA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Integrator2,
...
Рейтинг: 0 / 0
Пишет ошибку при открытии аудио файла. Что делать?
    #39095651
Bidgo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_VoDkA_,
Call mciExecute("play """ & s & """")
...
Рейтинг: 0 / 0
Пишет ошибку при открытии аудио файла. Что делать?
    #39095679
_VoDkA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bidgo,

Всё равно пишет ошибку
...
Рейтинг: 0 / 0
Пишет ошибку при открытии аудио файла. Что делать?
    #39095692
Integrator2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос должен звучать как-то так...
Как запустить файл .mp3 в фоновом режиме (без показа связанной с расширением файла программы) во время выполнения моей игровой программы? Какие средства и сборки для этого предоставляет Framework?
А вообще, почему именно .mp3 ? Может, и .wav файлы тоже нужно?
...
Рейтинг: 0 / 0
Пишет ошибку при открытии аудио файла. Что делать?
    #39095698
Integrator2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Данная API-функция (mciExecute) вообще говоря, предназначена для языка программирования VB6, а не для VB.NET
Нужно первым делом попробовать заменить " As Long" на " As Integer"
...
Рейтинг: 0 / 0
Пишет ошибку при открытии аудио файла. Что делать?
    #39095900
_VoDkA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Integrator2,

С "As Integer" тоже не работает. Мне нужно любым доступным способом запустить в фоновом режиме MP3 файл (или WAW, не имеет значения).
...
Рейтинг: 0 / 0
Пишет ошибку при открытии аудио файла. Что делать?
    #39095921
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_VoDkA_,
Посмотрите на примеры для SendString... Execute - просто упрощенный интерфейс
первая команда - open "FileName" type MPEGVideo alias Mp3File
вторая команда play Mp3File
...
Рейтинг: 0 / 0
Пишет ошибку при открытии аудио файла. Что делать?
    #39096043
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
busertype MPEGVideo
угу, для mp3 именно MPEGVideo

_VoDkA_ ,

Лови, выдрал полезный кусок из своего проекта
но это VB6.
На .Net переведи аккуратно и будет тебе счастие:


Три кнопки Play-Pause-Stop с отслеживанием завершения проигрывания через сабклассинг окна кот. ловит сообщения
Код: vbnet
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.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
'открытие файла
    If MP3_Open(LabelGeneral.Caption, "MyWavFileGeneral", "waveaudio") Then
      SliderGeneral.Max = MP3_length("MyWavFileGeneral")
      SliderGeneral.SmallChange = SliderGeneral.Max / 40
      SliderGeneral.LargeChange = SliderGeneral.Max / 20
      SliderGeneral.Value = 0
      SliderGeneral.Visible = True
      LabelWavTimeGeneral.Caption = _
       TimeMinSecFromMilliseconds(SliderGeneral.Value) & "/" & TimeMinSecFromMilliseconds(SliderGeneral.Max)
      ToolbarPlayPauseStopGeneral.Buttons("PLAYBUTTON").Enabled = True
      ToolbarPlayPauseStopGeneral.Buttons("PAUSEBUTTON").Enabled = False
      ToolbarPlayPauseStopGeneral.Buttons("PAUSEBUTTON").Value = tbrUnpressed
      ToolbarPlayPauseStopGeneral.Buttons("STOPBUTTON").Enabled = False
      FrameWavPSGeneral.Visible = True
    Else


Private Sub ToolbarPlayPauseStopGeneral_ButtonClick(ByVal Button As ComctlLib.Button)
  Select Case Button.Key
    Case "PLAYBUTTON":
    If MP3_Play_only("MyWavFileGeneral", SliderGeneral.Value, Form1.SliderGeneral.hwnd) Then
      ToolbarPlayPauseStopGeneral.Buttons("PLAYBUTTON").Enabled = False
      ToolbarPlayPauseStopGeneral.Buttons("PAUSEBUTTON").Enabled = True
      ToolbarPlayPauseStopGeneral.Buttons("PAUSEBUTTON").Value = tbrUnpressed
      ToolbarPlayPauseStopGeneral.Buttons("STOPBUTTON").Enabled = True
      TimerPosGeneral.Enabled = True
    End If
    Case "PAUSEBUTTON":
      Select Case ToolbarPlayPauseStopGeneral.Buttons("PAUSEBUTTON").Value
        Case tbrPressed:
          If MP3_pause("MyWavFileGeneral") Then
            TimerPosGeneral.Enabled = False
            ToolbarPlayPauseStopGeneral.Buttons("PLAYBUTTON").Enabled = True
            ToolbarPlayPauseStopGeneral.Buttons("PAUSEBUTTON").Enabled = True
            ToolbarPlayPauseStopGeneral.Buttons("STOPBUTTON").Enabled = True
            SliderGeneral.Value = MP3_position("MyWavFileGeneral")
          End If
        Case tbrUnpressed: 'то же что и "PLAYBUTTON"
          If MP3_Play_only("MyWavFileGeneral", SliderGeneral.Value, Form1.SliderGeneral.hwnd) Then
            ToolbarPlayPauseStopGeneral.Buttons("PLAYBUTTON").Enabled = False
            ToolbarPlayPauseStopGeneral.Buttons("PAUSEBUTTON").Enabled = True
            ToolbarPlayPauseStopGeneral.Buttons("STOPBUTTON").Enabled = True
            TimerPosGeneral.Enabled = True
          End If
      End Select
    Case "STOPBUTTON":
      If MP3_Stop_only("MyWavFileGeneral") Then
        TimerPosGeneral.Enabled = False
        ToolbarPlayPauseStopGeneral.Buttons("PLAYBUTTON").Enabled = True
        ToolbarPlayPauseStopGeneral.Buttons("PAUSEBUTTON").Enabled = False
        ToolbarPlayPauseStopGeneral.Buttons("PAUSEBUTTON").Value = tbrUnpressed
        ToolbarPlayPauseStopGeneral.Buttons("STOPBUTTON").Enabled = False
        SliderGeneral.Value = 0
      End If
  End Select
End Sub

'для событий SliderGeneral
Public Function NewSliderGeneralWindowProc _
 (ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  Select Case Msg
    Case MM_MCINOTIFY
      If wParam = MCI_NOTIFY_SUCCESSFUL Then 'только если файл закончился сам
        With Form1.ToolbarPlayPauseStopGeneral
          .Buttons("PLAYBUTTON").Enabled = True
          .Buttons("PAUSEBUTTON").Enabled = False
          .Buttons("PAUSEBUTTON").Value = tbrUnpressed
          .Buttons("STOPBUTTON").Enabled = False
        End With
        Form1.TimerPosGeneral.Enabled = False
        Form1.SliderGeneral.Value = 0
      End If
      Exit Function
    Case Else
  End Select 'Msg
  NewSliderGeneralWindowProc = CallWindowProc _
   (OldSliderGeneralWindowProc, hwnd, Msg, wParam, lParam)
End Function


Private Sub TimerPosGeneral_Timer()
  SliderGeneral.Value = MP3_position("MyWavFileGeneral")
End Sub


Собственно модуль:

Код: vbnet
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.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
'http://www.vbarchiv.net/tipps/details.php?id=499

' Module MP3-Play and Stop via API
Option Explicit

'Multimedia Functions
Public Declare Function mciSendString Lib "winmm.dll" _
 Alias "mciSendStringA" ( _
 ByVal lpszCommand As String, _
 ByVal lpszReturnString As String, _
 ByVal cchReturn As Long, _
 ByVal hwndCallback As Long) As Long

'Multimedia Messages

'wFlags (MM_MCINOTIFY message) - Reason for the notification
Public Const MCI_NOTIFY_SUCCESSFUL = &H1        'Notification successful
Public Const MCI_NOTIFY_SUPERSEDED = &H2        'Notification superseded
Public Const MCI_NOTIFY_ABORTED = &H4           'Notification aborted
Public Const MCI_NOTIFY_FAILURE = &H8           'Notification failed

Public Const MM_MCINOTIFY = &H3B9
'

Public Function MP3_Play(ByVal sFile As String, _
 ByVal sAlias As String, ByVal sType As String, ByVal hwnd_cb As Long) As Boolean
 
  'sType="waveaudio" -to play WAV
  'sType="MPEGVideo" -to play mp3
 
  Dim bResult As Boolean
 
  ' Dateinamen in DOS 8.3 Format, da z.B. Sonderzeichen
  ' wie Leerzeichen Probleme machen
  Dim sBuffer As String
  Dim lResult As Long
 
  sBuffer = Space$(255)
  lResult = GetShortPathName(sFile, sBuffer, Len(sBuffer))

  If lResult <> 0 Then
    sFile = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
 
    ' MCI &#246;ffnen
    lResult = mciSendString("open " & sFile & " type " & sType & " alias " & sAlias, 0, 0, 0)
 
    If lResult = 0 Then
      ' MP3 abspielen
      If mciSendString("play " & sAlias & " from 0 notify", 0, 0, hwnd_cb) = 0 Then
        bResult = True
      End If
    End If
  End If
 
  MP3_Play = bResult
End Function

Public Sub MP3_Stop(ByVal sAlias As String)
  mciSendString "stop " & sAlias, 0, 0, 0
  mciSendString "close " & sAlias, 0, 0, 0
End Sub

Public Function MP3_Play_only(ByVal sAlias As String, sPosition As String, ByVal hwnd_cb As Long) As Boolean
  If mciSendString("play " & sAlias & " from " & sPosition & " notify", 0, 0, hwnd_cb) = 0 Then
    MP3_Play_only = True
  End If
End Function

Public Function MP3_Stop_only(ByVal sAlias As String) As Boolean
  If mciSendString("stop " & sAlias, 0, 0, 0) = 0 Then
    MP3_Stop_only = True
  End If
End Function

Public Sub MP3_Close_only(ByVal sAlias As String)
  mciSendString "close " & sAlias, 0, 0, 0
End Sub

Public Function MP3_Open(ByVal sFile As String, _
 ByVal sAlias As String, ByVal sType As String) As Boolean
 
  Dim bResult As Boolean
 
  ' Dateinamen in DOS 8.3 Format, da z.B. Sonderzeichen
  ' wie Leerzeichen Probleme machen
  Dim sBuffer As String
  Dim lResult As Long
 
  sBuffer = Space$(255)
  lResult = GetShortPathName(sFile, sBuffer, Len(sBuffer))

  If lResult <> 0 Then
    sFile = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
 
    ' MCI &#246;ffnen
    lResult = mciSendString("open " & sFile & " type " & sType & " alias " & sAlias, 0, 0, 0)
 
    If lResult = 0 Then
      bResult = True
    End If
  End If
 
  MP3_Open = bResult
End Function

Public Function MP3_length(ByVal sAlias As String) As Long

  Dim RetString As String * 256
  Dim strCommand As String
  Dim lResult As Long

  strCommand = "set " & sAlias & " time format milliseconds"
  mciSendString strCommand, vbNullString, 0, 0&
  strCommand = "status " & sAlias & " length"
  lResult = mciSendString(strCommand, RetString, Len(RetString), 0&)
  If lResult = 0 Then
    MP3_length = CLng(RetString)
  End If
End Function

Public Function MP3_position(ByVal sAlias As String) As Long

  Dim RetString As String * 256
  Dim strCommand As String
  Dim lResult As Long

  strCommand = "status " & sAlias & " position"
  lResult = mciSendString(strCommand, RetString, Len(RetString), 0&)
  If lResult <> 0 Then
    MP3_position = -1   'Not playing
  Else
    MP3_position = CLng(RetString)
  End If
End Function

Public Function MP3_seek(ByVal sAlias As String, ByVal sPosition As Long) As Boolean

  Dim RetString As String * 256
  Dim strCommand As String
  Dim lResult As Long

  strCommand = "seek " & sAlias & " to " & CStr(sPosition)
  lResult = mciSendString(strCommand, 0&, 0&, 0&)
  If lResult = 0 Then
    MP3_seek = True
  End If
End Function

'Pause the named media instance
Public Function MP3_pause(ByVal sAlias As String) As Boolean

  Dim strCommand As String
  Dim lResult As Long

  strCommand = "pause " & sAlias
  lResult = mciSendString(strCommand, 0&, 0&, 0&)

  'Get the error message if there is any else return current status
  If lResult = 0 Then
    MP3_pause = True
  End If
End Function

'Resume the named media instance
Public Function MP3_resume(ByVal sAlias As String) As Boolean

  Dim strCommand As String
  Dim lResult As Long

  strCommand = "resume " & sAlias
  lResult = mciSendString(strCommand, 0&, 0&, 0&)

  'Get the error message if there is any else return current status
  If lResult = 0 Then
    MP3_resume = True
  End If
End Function



Тебе из всего этого надо по сути:
Код: vbnet
1.
2.
3.
4.
  'sType="waveaudio" -to play WAV
  'sType="MPEGVideo" -to play mp3
MP3_Open(<путь к файлу mp3>, "MyFileToPlay", "MPEGVideo")
MP3_Play_only("MyFileToPlay", 0, IntPtr.Zero)



либо просто

Код: vbnet
1.
MP3_Play(<путь к файлу mp3>, "MyFileToPlay",  "MPEGVideo", IntPtr.Zero)



"MyFileToPlay" -это уникальное слово которое придумываешь сам при первом вызове Open/Play, но зато потом по нему можно управлять проигрыванием этого уже открытого файла. Там все просто.
...
Рейтинг: 0 / 0
Пишет ошибку при открытии аудио файла. Что делать?
    #39096303
Integrator2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_VoDkA_,
научись пользоваться поисковиком.
Я вот сразу нашел
http://bbs.vbstreets.ru/viewtopic.php?f=1&t=45561
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Пишет ошибку при открытии аудио файла. Что делать?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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