WinCE VB.NET – 解決播放問題

今天寫程式又遇到一個問題…

就是 WinCE 到底要怎麼讓它播放音效檔案呢…??

這邊教您一個方式…

先新增一個 程式碼檔案,然後將下列程式碼貼進去。


Imports System.IO
Public Class Sound
    Private m_soundBytes() As Byte
    Private m_fileName As String

    Public Declare Function WCE_PlaySound Lib "CoreDll.dll" Alias "PlaySound" (ByVal szSound As String, ByVal hMod As IntPtr, ByVal flags As Integer) As Integer
    Public Declare Function WCE_PlaySoundBytes Lib "CoreDll.dll" Alias "PlaySound" (ByVal szSound() As Byte, ByVal hMod As IntPtr, ByVal flags As Integer) As Integer

    Private Enum Flags
        SND_SYNC = &H0 ' play synchronously (default)
        SND_ASYNC = &H1 ' play asynchronously
        SND_NODEFAULT = &H2 ' silence (!default) if sound not found
        SND_MEMORY = &H4 ' pszSound points to a memory file
        SND_LOOP = &H8 ' loop the sound until next sndPlaySound
        SND_NOSTOP = &H10 ' don't stop any currently playing sound
        SND_NOWAIT = &H2000 ' don't wait if the driver is busy
        SND_ALIAS = &H10000 ' name is a registry alias
        SND_ALIAS_ID = &H110000 ' alias is a predefined ID
        SND_FILENAME = &H20000 ' name is file name
        SND_RESOURCE = &H40004 ' name is resource name or atom
    End Enum

    ' Construct the Sound object to play sound data from the specified file.
    Public Sub New(ByVal fileName As String)
        m_fileName = fileName
    End Sub

    ' Construct the Sound object to play sound data from the specified stream.
    Public Sub New(ByVal stream As Stream)
        ' read the data from the stream
        m_soundBytes = New Byte(stream.Length) {}
        stream.Read(m_soundBytes, 0, Fix(stream.Length))
    End Sub 'New

    ' Play the sound
    Public Sub Play()
        ' If a file name has been registered, call WCE_PlaySound,
        ' otherwise call WCE_PlaySoundBytes.
        If Not (m_fileName Is Nothing) Then
            WCE_PlaySound(m_fileName, IntPtr.Zero, Fix(Flags.SND_ASYNC Or Flags.SND_FILENAME))
        Else
            WCE_PlaySoundBytes(m_soundBytes, IntPtr.Zero, Fix(Flags.SND_ASYNC Or Flags.SND_MEMORY))
        End If
    End Sub
End Class

接著呼叫它的方式


Dim sound As New Sound("\Storage Card\??.wav")  '檔案路徑
sound.Play()

有問題一樣…在一起交流討論嚕!!

0 留言

發表留言 »

姓名
信箱
網站