推薦到一個人的百度空間里去看,
鄂倫春網站制作公司哪家好,找成都創新互聯!從網頁設計、網站建設、微信開發、APP開發、響應式網站設計等網站項目制作,到程序開發,運營維護。成都創新互聯自2013年起到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選成都創新互聯。
里面有DirectSound的教程
還有DirectInput、DirectDraw的教程
但是DirectSound只能播放wav
如果想播放像mp3、ogg之類的音樂,你可以使用AudioVideoPlayback
思路很簡單可以定義一個結構LyricStructure Lyric
Dim Time As Single
Dim Content As String
End Structure聲明一個列表 Private Lyrics As New List(Of Lyric)然后以文本方式把歌詞文件讀入一個變量 并對它進行分析 分別把時間和歌詞內容存入一個Lyric,并加入Lyrics中。代碼如下:(假設歌曲文件的路徑為path)Dim LrcPath As String== IO.Path.GetDirectoryName(cPath) "/" IO.Path.GetFileNameWithoutExtension(cPath) ".lrc"If IO.File.Exists(LrcPath= True Then AnalysisLyric() Private Sub AnalysisLyric()
Lyrics.Clear() '先清空列表
Dim tm As Byte
Dim sr As New IO.StreamReader(LrcPath, System.Text.Encoding.Default) '讀取歌詞文件
Do While sr.EndOfStream = False '判斷是否處于文件流末尾
Dim tmpStr As String = sr.ReadLine '讀取一行
If tmpStr.Length 5 Then Continue Do '長度小于5則跳過,進行下一次循環
Select Case Mid(tmpStr, 2, 2) '判斷第2-3個字符 因為歌詞里的注釋都是[ti:***]類似的結構
Case "ti"
lTitle = Mid(tmpStr, 5, tmpStr.Length - 5)
Case "ar"
lArtist = Mid(tmpStr, 5, tmpStr.Length - 5)
Case "al"
lAlbum = Mid(tmpStr, 5, tmpStr.Length - 5)
Case "by"
lAuthor = Mid(tmpStr, 5, tmpStr.Length - 5)
Case Else '如果不為以上的內容 則為歌詞正文,進行以下操作
If Not Mid(tmpStr, 1, 6) Like "?##:##" Then Continue Do
Dim time(-1) As String '因為有時歌詞是以[00:00.00][00:00.00]**** 這樣歌詞把多個時間存放在一起的 ,所以定義一個數組來存放歌詞
Do '因為不確定時間的個數,所以此處必須循環判斷
tm = InStr(tmpStr, "]") '因為歌詞時間有時是[00:00.00]形式,有時是[00:00]形式,所以不能單純的截取第幾個字符 ,我是根據查找']'字符來進行判斷的
ReDim Preserve time(time.GetUpperBound(0) + 1) 為time數組重新分配大小
time(time.GetUpperBound(0)) = Mid(tmpStr, 1, tm) 'time.GetUpperBound(0)返回數組的第一維的最大下標
tmpStr = IIf(tmpStr.Length = tm, " ", Mid(tmpStr, tm + 1)) '歌詞內容
Loop While Mid(tmpStr, 1, 6) Like "?##:##" '如果截取剩下的部分依然匹配的話繼續循環
For Each t In time '為每個時間都創建一個Lyric變量
Dim ln As Lyric
ln.Time = SwitchTime(Mid(t, 2, t.Length - 2))
ln.Content = tmpStr
Lyrics.Add(ln)
Next
End Select
Loop
sr.Close() 關閉流
Sort() '把所有Lyric按時間順序排序
End Sub Private Function SwitchTime(ByVal time As String) As Single ‘這個函數是用來把00:00.00格式的時間轉化成以秒數顯示的數值
Dim tm As Single
Dim minute As Single = Val(Mid(time, 1, 2))
Dim second As Single = Val(Mid(time, 4, 5))
tm = minute * 60 + second
Return tm
End Function Private Sub Sort()
For i = 0 To Lyrics.Count - 2
For j = i To Lyrics.Count - 1
If Lyrics(i).Time Lyrics(j).Time Then
Dim tm As Lyric = Lyrics(i)
Lyrics(i) = Lyrics(j)
Lyrics(j) = tm
End If
Next
Next
End Sub 接下來是顯示歌詞的問題了 ,只要有每句歌詞和對應的時間,那么問題就好辦了。你可以用Windows Media Player控件返回的時間和每句歌詞的時間做比較,來判斷應該顯示那一句。代碼是很久前寫的 ,那時沒加注釋,都是剛剛加上去的喲,你可以根據你的實際情況自己修改,有什么不懂的地方可以繼續問我哈~~
詳細查看了你的問題,完全不需要使用線程sleep的方法。
在這邊,我要給你引入一個概念。就是Form窗體的兩個方法。
Form.Show()和Form.ShowDialog()
第一個Show方法運行后,你的主程序還是會進行,你的代碼還是會繼續進行下去。此時,窗體還是彈出的。
第二個ShowDialog方法運行后,此時,彈出的一個窗體,你不將其關閉,那么,主程序就會一直等待這個窗體關閉后,才執行后面的代碼。
所以,你只需要使用showdialog這個方法,即可達到你想要的結果。
那么,如何才能讓彈出的窗體不改變呢?很簡單
你可以找到窗體的formcloseing事件,在這個事件中,有一個參數:e
這個e有一個屬性,就是e.handle,表示是否處理過這個事件了。
這個時候,如果你不想讓窗體關閉,你可以寫:
e.handle=true,那么表示已經處理過窗體關閉的事件了。
注:有些情況,可能是:e.cancel=true
'在窗體上添加一個按鈕測試
Private
m_PlayFlag
As
Boolean
=
False
'是否正在播放
Private
Sub
Button1_Click(ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
Button1.Click
If
m_PlayFlag
=
False
Then
Button1.Image
=
Image.FromFile("d:\play.jpg")
'更換為播放圖標
m_PlayFlag
=
True
'改變標志
Else
Button1.Image
=
Image.FromFile("d:\pause.jpg")
'更換為暫停圖標
m_PlayFlag
=
False
'改變標志
End
If
End
Sub
Private
Sub
Form1_Load(ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
MyBase.Load
'窗體加載時使用暫停圖標
Button1.Image
=
Image.FromFile("d:\pause.jpg")
End
Sub
在.NET里,沒有托管的音樂播放器,用API只能播放WAV格式,對于MP3等形式的音頻文件,就要依賴于其他控件了,常用的就是
MediaPlayer。使用方法:
在工具箱上點右鍵,選擇“選擇項目(Choose
Items)”,切到COM選項卡,找到
Windows
Media
Player,
勾選,確定
在t工具箱上,把剛才加入的MediaPlayer控件,拖放到窗體上
代碼:
WindowsMediaPlayer1.URL
=
"mp3文件路徑,支持網絡路徑"
WindowsMediaPlayer1.Ctlcontrols.play
基本就OK了,至于其他的操作諸如下一曲上一曲暫停停止,直接看
WindowsMediaPlayer1.Ctlcontrols.
里面的方法吧。
網站標題:vb.net暫停音樂 vbs播放音樂
瀏覽路徑:http://vcdvsql.cn/article14/dooohge.html
成都網站建設公司_創新互聯,為您提供云服務器、軟件開發、外貿網站建設、搜索引擎優化、動態網站、建站公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯