Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проигрывание Mp3 файлов с помощью Vb 6
Форум программистов > Системное программирование > Visual Basic
Shtirlits
В поисках этого вопроса мне надоело рыскать по инету, везде пишут, что ето уже "избитый" вопрос, но кроме проигрывания WAV и AVI, при помощи VB (6) ,я ни чего не нашел, кроме тех примеров (и сотни подолбных), ссылки на которые лежат ниже, но мой VB (6) выдает на них ошибку(скорей всего они для VB.NET).Если вы знаете ответ, подскажите плиз. Желательно теми средствами которые входят в VB и Windows,
Ссылка1

]]>http
://design.gossoudarev.com/info/multime...ogr/index.html
]]>
Ссылка2

]]>http://visualbasic.noka.ru/?Page=articles&id=playavi#a
]]>
(те же самые AVI И WAV и то с ошибкой) все остальное примерно в том же духе (((
Заранее благодарен за любую помощь в ентом вопросе !!!
Morpheus
Юзайте ]]>гугль...]]>


]]>ВОТ ]]> - первая же ссылка ведёт на ответ

Цитата
Как проигрывать MP3 файлы на VB?

Вопрос:

Как проигрывать MP3 файлы на VB?

Ответ:

В Windows API нет функций для работы со звуковыми файлами, сжатыми по стандарту MP3. Но... Есть замечательный компонент, который называется Windows Media Player, вот он может помочь. Положите на форму контрол Windows Media Player, свойство AutoStart поставьте в True. Теперь для воспроизведения установите в свойство FileName, во время выполнения программы, имя файла для воспроизведения. И все...
Вообще-то, существуют различные OCX, которые могут воспроизвести mp3, но зачем они, если практически у всех есть Media Player.

Шатрыкин Иван
Shtirlits
ты, конечно прости, Иван, но я ,буду ругаться и матом кричать !!!
Цитата
Windows Media Player,вот он может помочь.
- этьо означает, что ты сам не знаешь, не пробовал!!!зачем тогда советы давать???Где пример (причем тобой опробованный!!!!)
Цитата
но зачем они, если практически у всех есть Media Player.
да затем, что я хочу научиться писать СВОИ программы и научиться программировать !!!
Дополнение к заданному выше вопросу!!!!
Эту ссылку мы уже проходили, и она полная херь!MSDN тоже юзали !
Нужен пример иль какая дока для Visual Basic 6!!! а не .NET или С++ или С# VBA
Неужели в обычную HTML - страницу WMPlayer легче вставить ?! )))
В общем Ваня ДВОЙКА тебе за ответ )))
Morpheus
Цитата(Shtirlits @ 9:01:2008, 10:33 )
ты, конечно прости, Иван, но я ,буду ругаться и матом кричать !!!
*

а по сопатке, могу налупить ещё предупреждений за мат

Цитата(Shtirlits @ 9:01:2008, 10:33 )
Где пример (причем тобой опробованный!!!!)
*

ни кто тут пример опробованный не обязан давать

Цитата(Shtirlits @ 8:01:2008, 16:46 )

Самый лучший способ - другие, насколько я понимаю ( БЕЗ API ) , бyдут просто извратом.
В этом примере расписано и разжовано всё что надо.

Цитата(Shtirlits @ 8:01:2008, 16:46 )
В общем Ваня ДВОЙКА тебе за ответ )))
*

каков вапрос - такой и ответ
Shtirlits
Мдааа, я уже трое суток ищу по инету рабочий пример,прерываясь изредка на писчу и сон , ну да ладна....
Тот пример во-первых для .NET, во-вторых он выдает мне ошибку, в третьих ,я юзал енту ссылку до тебя, спасиб конечно за труды, конечно никто мне ничем не обязан, но зачем тогда форумы нужны ???Слазил по ссылке еще раз, может чего пропустил, вроде нет - опять таже самая ошибка, типа неопределена функция или класс ((( Наверна придется искать простенький пример с API
НО я не могу поверить ,чтобы микрософтовские гении пропустили такое расширение файла , как mp3, в среде разработки VisualBasic6? Да даже рабочего примера простым wave мне не найти уже. Кстати ,в MSDN встретилась такая фраза (но опять для .NET) создайте ссылку на пространство имен System (ето как, их же там видимо не видимо ) ниже код, так на сяк случай родимого MSDN, для wave тока (((
Пример:
 
Public Class SoundClass
   Declare Auto Function PlaySound Lib "winmm.dll" (ByVal name _
      As String, ByVal hmod As Integer, ByVal flags As Integer) As Integer
   ' name specifies the sound file when the SND_FILENAME flag is set.
   ' hmod specifies an executable file handle.
   ' hmod must be Nothing if the SND_RESOURCE flag is not set.
   ' flags specifies which flags are set.

   ' The PlaySound documentation lists all valid flags.
   Public Const SND_SYNC = &H0          ' play synchronously
   Public Const SND_ASYNC = &H1         ' play asynchronously
   Public Const SND_FILENAME = &H20000  ' name is file name
   Public Const SND_RESOURCE = &H40004  ' name is resource name or atom

   Public Sub PlaySoundFile(ByVal filename As String)
      ' Plays a sound from filename.
      PlaySound(filename, Nothing, SND_FILENAME Or SND_ASYNC)
   End Sub
End Class

Private Sub Button1_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles Button1.Click
   Dim SoundInst As New SoundClass()
   SoundInst.PlaySoundFile("C:\ringout.wav")
End Sub

Компиляция кода
Для этого примера требуется:
Ссылка на пространство имен System.
Элемент управления Button с именем Button1.
Устойчивое программирование
PlaySound возвращает true при успешном выполнении, и false — при сбое.
Если заданный файл не существует, PlaySound воспроизводит стандартный системный звук и не возвращает ошибку.
Имя файла должно указывать на звуковой файл на вашем компьютере
P.S.:Не обижайся ph34r.gif я, конечно, дуб в программировании, может плохо ищу, но неужели так мало людей задавалось подобными вопросами, или менять среду разработки или завязывать с программированием huh.gif biggrin.gif
Shtirlits
Все , что выше и везде раскиданы примеры по инету - полная лажа, везде примеры для проигрывания wave идут неправильные, то есть с ошибками, ибо лентяи которые держать сайты, не проверяя код в примерах просто копируют (и особо шибко умные советчики делают также)))
Вывод из всего этого =:
Проигрывание mp3 файла с помощью Visual Basic 6 и его инструментов ВОЗМОЖЕН!!! ,Я сделал это!!! )))
За последние сутки, ни евши, не спавши, только прерываясь на самое необходимое (секс и иногда интернет ))) я исправил ошибки кое в каких примерах, и сделал рабочий пример, доведу до читабельного состояния, и если кому понадобиться, выложу деся, а если у кого есть рабочий пример с winmm.dll для проигрывания mp3,выложите плиз
ГЫ&ЗЫ:
При помощи API тоже можно проиграть MP3 ))) но я етим пока не занималса ))
sax_ol
Цитата(Shtirlits @ 11:01:2008, 10:27 )
При помощи API тоже можно проиграть MP3 ))) но я етим пока не занималса ))
*

]]>Тут вроде играет]]>

Для: Shtirlits
А вообще, надо вам заметить, что когда говорят, что что-то где-то не работает, при этом показывают, что где как чего и почему, иначе это просто треп, нес па?.
Shtirlits
Пасибо !!! Огромныя вам ПАСИБО!!! biggrin.gif
Отличный пример, и самое главное работающий !!!!
Для: sax_ol
попробуем исправится, хотя вряд ли получится )))
Shtirlits
Я должен сообщить пренеприятнейшее известие - я неуч !!! Чтобы понять почему MMControl не хочет проигрывать мои MP3 пришлось перелопать половину MSDN и других забугорных сайтов, а с моими познаниями в агнглийском это далось нелегко.В общем,вот что пишут в MSDN (вольный перевод smile.gif)):
MMControl поддерживает такие форматы файлов, как : MPEG(Layer1,2 вроде ),AVI and WAV .Ну и что сие означает, спросите вы, -типа мы ето знаем, а то, что MP3 принадлежит формату MPEG знаете?Вывод: проигрывание MP3 с помощью MMControl возможен! код ниже. НО, есть замечание, при первых разах когда я пробовал проиграть MP3, я забыл, что половина моих песен - это MP3 PRO !!! То есть еще более сжатых, и немного отличающиеся от обычного MP3 ,и поэтому старый добрый контрол их может не взять (( Ну и он глючный, а так работает.
Кидаем на форму MMControl1, кликаем правой кнопкой по контролу и для кнопок PLAY,PAUSE ставим галочки (Vizible,Enable) в свойствах FileName выбираете путь до файла.Все, вы гении -написали свой плеер!! smile.gif
Private Sub Form_Load()
MMControl1.Command = "Open"
MMControl1.Command = "Play"
End Sub

Попозже выложу код для компонента WindowsMediaPlayer на сяк случай biggrin.gif
sax_ol
Цитата(Shtirlits @ 17:01:2008, 10:25 )
Попозже выложу код для компонента WindowsMediaPlayer на сяк случай

Непременно выложите.
Shtirlits
Лана,ок, вот код для компонента WindowsMediaPlayer (wmp.dl/winmm.dll)
Добвили компонент WindowsMediaPlayer на форму, на закладке "свойства компонента" выбрали "Custom" => закладка общие => пункт "Источник или имя файла" - путь до вашего файла или плэйлиста , жмем ОК, зате RUN.Усе, плеер готов biggrin.gif Спросите где код - он не нужен, но если вы хотите управлять программно этим плеером (нажимая свои кнопочки -Command1,2 т.д.), то вот вам некоторые свойства и функции этого компонента , которые находил методом проб и ошибок, да Object Browser (F2)), если вы знаете другие какие свойства, выложите,плиз , здеся.
Один из способов проиграть файл:
Private Sub Command1_Click()
WindowsMediaPlayer1.URL = "C\MyFavorit.mp3" 'Путь до вашего Mp3 или плэйлиста
End Sub

Добавьте на форму TextBox1 и кнопку Command1 для вывода информации
Прежде чем использовать это запустите ваш плэйлист, если он не запущен, то в некоторых прцедурах будут возникать ошибки, так как файла допустим еще нет, а вы уже хотите знать его имя, и его длительность,поэтому при написании своей проги добавьте обрабоку ошибок
Выводит адрес проигрываемого файла
Private Sub Command1_Click()
Text1.Text = WindowsMediaPlayer1.currentMedia.sourceURL
End Sub

Выводит имя проигрываемого плэйлиста
Private Sub Command1_Click()
Text1.Text = WindowsMediaPlayer1.currentPlaylist.Name
End Sub

Выводит исполнителя проигрываемого файла
Private Sub Command1_Click()
Text1.Text = WindowsMediaPlayer1.currentMedia.Name
End Sub

Далее свойства идут просто списком, примеры использования вы видели выше
WindowsMediaPlayer1.currentMedia.duration 'продолжительность файла в секундах
WindowsMediaPlayer1.currentMedia.durationString 'продолжительность файла в минутах
WindowsMediaPlayer1.currentPlaylist.Count 'количество песен/дорожек в плэйлисте
WindowsMediaPlayer1.Status ' у меня показывает скорость проигрывания ))
WindowsMediaPlayer1.Controls.Next 'следующая дорожка
WindowsMediaPlayer1.Controls.previous 'предыдущая дорожка
WindowsMediaPlayer1.Controls.currentPositionString 'показывет сколько времени уже проиграл файл
WindowsMediaPlayer1.settings.volume 'показывет какая сейчас громкость
WindowsMediaPlayer1.settings.volume = WindowsMediaPlayer1.settings.volume + 10 'пример увеличения громкости на десяточку
WindowsMediaPlayer1.settings.volume = mute 'выключить громкость
WindowsMediaPlayer1.settings.volume = 0 'выключить громкость, 2ой способ ))

Если узнаете способ сделать повтор и перемешивание, как и в обычном Windows Player,пишите.
Есть еще способ проиграть файл с помощью DirectX, что вроде перекликается с API ? пока не знаю biggrin.gif
Shtirlits
Для: Morpheus
Прошу у вас прощеньица,Вы в самом начале были правы, но у меня действительно примеры с других сайтов не работают, пока не взялся писать сам, не пойму в чем дело до сих пор.
Цитата
Положите на форму контрол Windows Media Player, свойство AutoStart поставьте в True. Теперь для воспроизведения установите в свойство FileName, во время выполнения программы, имя файла для воспроизведения. И все...
оказался действительно самым простым и эфективным, просто вначале меня пугали такие слова как dll, ocx и т.п. так как я ничего в них не смыслю, и до сих пор не знаю где брать информацию о встроенных свойствах и функциях компонента. Object Browser их показывает, но не говорит нам о том ,какая функция, что делает и какое свойство за что отвечает, так, что будьте милосердны, не сердитеся на меня, а ? sad.gif
Morpheus
Цитата(Shtirlits @ 17:01:2008, 13:23 )
примеры с других сайтов не работают, пока не взялся писать сам
*

вот это самое лучшее когда человек начинает понимать что он делает... главное не бояться и начать делать самому wink.gif
я не обижаюсь cool.gif
Shtirlits
ПАСИБО !!! biggrin.gif
WeBsteR
моно и так, но с использованием апи:
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As Long, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Dim Temp2 As Long
Dim Temp1 As String
Dim aFile As String
Private Function GetShortName(ByVal fFileName As String) As String
  Dim bufTxt As String * 261
  Dim RetLen As Long
  RetLen = GetShortPathName(fFileName, bufTxt, 260)
  GetShortName = Left$(bufTxt, RetLen)
End Function

Private Sub Form_Load()
aFile = "D:\Music\Test.mp3" 'путь к mp3 файлу
aFile = GetShortName(aFile)
Temp1 = "play " & aFile
Temp2 = mciSendString(Temp1, 0, 0, 0)
End Sub
Shtirlits
угу, ок, пасиб biggrin.gif , но на примерчик с использованием команды mciSendString, уже давала выше sax_ol , но вдруг та ссылка станет нерабочей, так что лишний примерчик здесь, я думаю, не помешает, ну раз пошла такая кухня, выкладываю еще примерчик с применением API, с использованием функции mciExecute(не за бываем про короткие пути в имени файла и пробелы !!!) для полноты картины:
'Функция для проигрывания файлов в формате *.mp3
Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long

Private Sub Command1_Click()
Call mciExecute("play C:\moi.mp3") 'чтобы воспроизвести файл
End Sub

Private Sub Command2_Click()
Call mciExecute("close C:\moi.mp3") 'чтобы закрыть файл
End Sub

Есть еще функции sndPlaySound и PlaySound для проигрывания wav ,вызываются и объявляются аналогично mciExecute и mciSendString
Ну, кто еще какие нибудь способы знает, как проиграть MP3 в VB(6) ?Да, а как вызвать Windows Media Player и через него проиграть ?( что то связано с shell()).И еще говорят, есть способ проигрывания через DirectX (DirectSound,DirectMusic и т.д.) или рассмотренные примеры выше это оно и есть ?
WeBsteR
Ну есть ещё такая библиотека функций как fmod. Очень во многих играх используется, можно проигрывать аудио, создавать 3d звук, создавать stream, добавлять различные эффекты, например реверберацию, записывать звук, проигрывать CD, работать с сэмплами, анализировать спектр и многое другое. Скачать можно на официальном сайте: ]]>http://www.fmod.org]]> тамже есть хелп, правда на английском
sax_ol
Цитата(Shtirlits @ 19:01:2008, 11:31 )
через DirectX (DirectSound,DirectMusic

Там есть SDK, скачивайте и читайте.
Shtirlits
Для: sax_ol
Вы простите новичка , но где это "ТАМ" - в лесу ?Если вы имеете в виду MSDN,то еслиб я был с английском на "ты", и хотел провести остаток своей жизни изучением сего трактата, то я бы не задавал здесь эти вопросы
Для: WeBsteR
Но ет уже идут совсем сторонние библиотеки, не так ли?
WeBsteR
Да, конешно сторонние, зато функций много smile.gif
Shtirlits
Для: WeBsteR
Ты уже с ней работал?И она рази не платная? И потом просто не хочется здесь разводить обсуждение про использование сторонних библиотек, а только касательно VB, но раз затронули API, то можно и его, тогда главный вопрос бы изменить biggrin.gif , просто стороних компонентов много, и для этого, я думаю, можно попозже новую тему для обсуждения открыть, также как и запись mp3, с помощью VB и API
sax_ol
Для: Shtirlits
Жизнь вообще. а программирование в частности - достаточно сложная и нудная вещь, поэтому ну ее. cool.gif
Shtirlits
Для: sax_ol
Согласен:жить вредно, от этого умираешь wink.gif У меня сложилось впечатление, почему то, что ты/вы (как вам/тебе удобнее smile.gif ) девушка,так как девушки очень любят не отвечать на вопросы, а куда то в сторону уходить:
Цитата
но где это "ТАМ" - в лесу ?
и такой нескромный вопрос - ты програмист или чем другим маешься ?
sax_ol
Для: Shtirlits
Вас в поискавиках забанили? дернуть поиск и узнать все о DirectX SDK, в чем проблема?
Цитата(Shtirlits @ 19:01:2008, 14:58 )
и такой нескромный вопрос - ты програмист или чем другим маешься ?

Лужу, паяю, крестиком вышиваю smile.gif ... какая разница?
Shtirlits
Блин, пятый раз пишу это сообщение, уже начал понимать, даже, что я пишу (свет обрубали sad.gif )
Отправлять гуглить или яндексить, где нуждающися человек уже был , я считаю неккоректным и неправильным, так как человек отправляется на форум надеется получить реальную помощь от людей, у которых есть больший опыт по данному вопросу.насчет моего вопроса
Цитата
такой нескромный вопрос - ты програмист или чем другим маешься ?
мне интересно, человек который отвечает, что то смыслит в этом вопросе или он от скуки развлекается.Ваша первая ссылочка была просто отличной, и теперь я в растерянности, думал вот, знающий и понимающий человек.А если всех отправлять в гугл, тогда зачем форум нужен? Повесить при входе пяток форм - запросов к поисковикам и делу конец, только тогда ж кому предупреждения ставить будете ? biggrin.gif
sax_ol
Для: Shtirlits
Цитата(Shtirlits @ 19:01:2008, 19:12 )
Отправлять гуглить или яндексить

Ненадо передергивать! На форуме как правило помогают в конкретных вещах, что собственно вам и сделали.
Вы незнали про DirectX, вам указали путь - SDK. А вот искать, читать за вас или писать уж извините. Я тже не носитель английского языка, и более того его не изучал ни в школе ни в вузе, в силу исторического момента, но мне хватило ума понять, что читать техническую информацию чаще приходится именно на английском. Поэтому я выучил его на столько, что могу худо-бедно понимать и не плачусь в связи с этим. cool.gif
Shtirlits
И сетаки я считаю , что я прав, хотя согласен, подмогли.Разговорный английский, знаком, а вот с техническим туго, особено когда программированием занялся только - только сейчас dry.gif
Ну и напоследок примерчик с DirectX, а использование сторонних библиотек, не входящих в OS Windows и VB, мне кажется, можно сделать отдельной темой, а эту считать закрытой, если бы не одно "но" , с которым мне не определиться, воспроизведение мы освоили, с трудом и впопыхах, а, как же (звучало выше) запись?А то как то нелогично получается, прежде, чем прослушать, ведь надо записать smile.gif или новую тему открыть ?
Ладно, вот вам пример листинга, проигрывающего mp3 с помощью DirectX (не забудьте подключить к проекту Active Movie Control Type Library (Проект (Project) -> Ссылки (Reference) (хотя, у меня русский перевод того пункта называется "Информация",-руки оторвать етому переводчику надо) - это quartz.dll входящая в DirectX, а значит , во все винды последних поколений smile.gif и модуль )
Код на форму:
Option Explicit

Private Sub Form_Activate()
  'Change the file path of your mp3 in here.
  DirectShow_Load_Media "C:\YouFile.mp3" 'путь до вашего mp3
  'You don't need to do this part, but it's nice to be
  'able to control it.
  '------------------------------------------------
  DirectShow_Volume 100
  DirectShow_Balance 0
  DirectShow_Speed 100
  DirectShow_Set_Position 0, 0, 0, 0
  '------------------------------------------------

  DirectShow_Play
End Sub

Private Sub Form_Unload(Cancel As Integer)
  DirectShow_Shutdown
End Sub

Код в модуль:
Option Explicit

Private Const MAX_VOLUME As Long = 100
Private Const MAX_BALANCE As Long = 100
Private Const MAX_SPEED As Long = 226

Public DirectShow_Event As IMediaEvent
Public DirectShow_Control As IMediaControl
Public DirectShow_Position As IMediaPosition
Public DirectShow_Audio As IBasicAudio

Public Function DirectShow_Load_Media(File_Name As String) As Boolean
On Error GoTo Error_Handler
If Right(File_Name, 4) = ".mp3" Then
  Set DirectShow_Control = New FilgraphManager
  DirectShow_Control.RenderFile (File_Name)
  Set DirectShow_Audio = DirectShow_Control
  DirectShow_Audio.Volume = 0
  DirectShow_Audio.Balance = 0
  Set DirectShow_Event = DirectShow_Control
  Set DirectShow_Position = DirectShow_Control
  DirectShow_Position.Rate = 1
  DirectShow_Position.CurrentPosition = 0
Else
  GoTo Error_Handler
End If
DirectShow_Load_Media = True
Exit Function
Error_Handler:
DirectShow_Load_Media = False
End Function

Public Function DirectShow_Play() As Boolean
On Error GoTo Error_Handler
DirectShow_Control.Run
DirectShow_Play = True
Exit Function
Error_Handler:
DirectShow_Play = False
End Function

Public Function DirectShow_Stop() As Boolean
On Error GoTo Error_Handler
DirectShow_Control.Stop
DirectShow_Position.CurrentPosition = 0
DirectShow_Stop = True
Exit Function
Error_Handler:
DirectShow_Stop = False
End Function

Public Function DirectShow_Pause() As Boolean
On Error GoTo Error_Handler
DirectShow_Control.Stop
DirectShow_Pause = True
Exit Function
Error_Handler:
DirectShow_Pause = False
End Function

Public Function DirectShow_Volume(ByVal Volume As Long) As Boolean
On Error GoTo Error_Handler
If Volume >= MAX_VOLUME Then Volume = MAX_VOLUME
If Volume <= 0 Then Volume = 0
DirectShow_Audio.Volume = (Volume * MAX_VOLUME) - 10000
DirectShow_Volume = True
Exit Function
Error_Handler:
DirectShow_Volume = False
End Function

Public Function DirectShow_Balance(ByVal Balance As Long) As Boolean
On Error GoTo Error_Handler
If Balance >= MAX_BALANCE Then Balance = MAX_BALANCE
If Balance <= -MAX_BALANCE Then Balance = -MAX_BALANCE
DirectShow_Audio.Balance = Balance * MAX_BALANCE
DirectShow_Balance = True
Exit Function
Error_Handler:
DirectShow_Balance = False
End Function


Public Function DirectShow_Speed(ByVal Speed As Single) As Boolean
On Error GoTo Error_Handler

If Speed >= MAX_SPEED Then Speed = MAX_SPEED
If Speed <= 0 Then Speed = 0

DirectShow_Position.Rate = Speed / 100
DirectShow_Speed = True
Exit Function
Error_Handler:
DirectShow_Speed = False
End Function

Public Function DirectShow_Set_Position(ByVal Hours As Long, ByVal Minutes As Long, ByVal Seconds As Long, Milliseconds As Single) As Boolean
On Error GoTo Error_Handler
Dim Max_Position As Single
Dim Position As Double
Dim Decimal_Milliseconds As Single

'Keep minutes within range
Minutes = Minutes Mod 60

'Keep seconds within range
Seconds = Seconds Mod 60

'Keep milliseconds within range and keep decimal
Decimal_Milliseconds = Milliseconds - Int(Milliseconds)
Milliseconds = Milliseconds Mod 1000
Milliseconds = Milliseconds + Decimal_Milliseconds

'Convert Minutes & Seconds to Position time
Position = (Hours * 3600) + (Minutes * 60) + Seconds + (Milliseconds * 0.001)
Max_Position = DirectShow_Position.StopTime

If Position >= Max_Position Then
  Position = 0
  GoTo Error_Handler
End If

If Position <= 0 Then
  Position = 0
  GoTo Error_Handler
End If
DirectShow_Position.CurrentPosition = Position
DirectShow_Set_Position = True
Exit Function
Error_Handler:
DirectShow_Set_Position = False
End Function


Public Function DirectShow_End() As Boolean
On Error GoTo Error_Handler
If DirectShow_Loop = False Then
  If DirectShow_Position.CurrentPosition >= DirectShow_Position.StopTime Then DirectShow_Stop
End If

DirectShow_End = True
Exit Function

Error_Handler:

DirectShow_End = False
End Function

Public Function DirectShow_Loop() As Boolean
On Error GoTo Error_Handler

If DirectShow_Position.CurrentPosition >= DirectShow_Position.StopTime Then
  DirectShow_Position.CurrentPosition = 0
End If
DirectShow_Loop = True
Exit Function
Error_Handler:
DirectShow_Loop = False
End Function

Public Sub DirectShow_Shutdown()
Set DirectShow_Audio = Nothing
Set DirectShow_Event = Nothing
Set DirectShow_Control = Nothing
Set DirectShow_Position = Nothing
End Sub

Блин-билин-билин, а ведь моно проиграть mp3 через сам проигрыватель, через shell, но эт попозже smile.gif
Shtirlits
открыть файл mp3 внешней программой, которая проигрывает mp3 по умолчанию, не забудьте подключить к проекту Microsoft Shell Controls and Automation(Проект (Project) -> Ссылки (Reference)
Dim s As New Shell

Private Sub Command1_Click()
s.Open "c:\ranenaya_ptica.mp3"
End Sub

То же самое, только с помощью API ( добавлять в проект ничего не нужно smile.gif )
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal _lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const SW_SHOWNORMAL = 1
Private Sub Form_Load()
    ShellExecute Me.hwnd, vbNullString, "C:\312.mp3", vbNullString, "", SW_SHOWNORMAL
End Sub

Ну, вроде все, теперь можно писать мануал по воспроизведению MP3 доступными средствами при помощи среды разработки Visual Basic (6), окромя сторонних библиотек, не входящих в VB и Windows.
Выражаю огромную благодарность всем участникам этой темы wink.gif
Дополняйте, вдруг чаго забыл biggrin.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.