Also, wie erwartet funktioniert das mit einem StringBuilder etc. einwandfrei (unter .Net FW 1.* und 2.0):
Public Class SoundFile
Private Declare Function mciSendString Lib "winmm.dll" Alias _
"mciSendStringA" _
(ByVal cmd As String, ByVal rsl As System.Text.StringBuilder, _
ByVal rsl_start As Int32,ByVal hwdcallback As Int32) As Int32
Private str_alias As String
Public ReadOnly Property Length As Long
Get
Dim sBuffer As New System.Text.StringBuilder(256)
mciSendString("set " & str_alias & " time format milliseconds", _
sBuffer,256,0)
mciSendString("status " & str_alias & " length",sBuffer,256,0)
Debug.WriteLine (sBuffer.ToString())
Return(CLng(sBuffer.ToString().Trim()))
End Get
End Property
Public ReadOnly Property Position As Long
Get
Dim sBuffer As New System.Text.StringBuilder(256)
mciSendString("set " & str_alias & " time format" & _
"milliseconds",sBuffer,255,0)
mciSendString("status " & str_alias & " position", sBuffer, 255,0)
Return(CLng(sBuffer.ToString().Trim()))
End Get
End Property
Private Function randomNumber() As String
Dim firstPart,secondPart,lastPart As String
Dim r As New Random()
firstPart = Microsoft.VisualBasic.Conversion.Hex(r.Next( _
100000,999999)).Trim().ToLower()
Return(firstPart)
End Function
Public Sub New(ByVal AudioFile As String,Optional ByVal DefaultVolume As _
Long = 1000)
str_alias = "audiofile" & randomNumber() & "mp3neo"
Try
Dim N As String = Chr(34)
Dim sBuffer As New System.Text.StringBuilder(256)
If mciSendString("open " & N & AudioFile & N & " alias " & _
str_alias, nothing, 0, 0) = 0 Then
If mciSendString("setaudio " & str_alias & " volume to " & _
DefaultVolume.ToString(), nothing, 0, 0) = 0 Then
If mciSendString("set " & str_alias & " time format" & _
"milliseconds", sBuffer,0,0) <> 0 Then
MessageBox.Show("Fehler bei der Initialisierung des" & _
"Songs","Fehler (Code" & _
"0x00000003)",MessageBoxButtons.Ok,MessageBoxIcon.Error)
mciSendString("close " & str_alias,Nothing,0,0)
End If
Else
MessageBox.Show("Fehler bei der Initialisierung des" & _
"Songs","Fehler (Code" & _
"0x00000002)",MessageBoxButtons.Ok,MessageBoxIcon.Error)
mciSendString("close " & str_alias,Nothing,0,0)
End If
Else
MessageBox.Show("Fehler bei der Initialisierung des" & _
"Songs","Fehler (Code" & _
"0x00000001)",MessageBoxButtons.Ok,MessageBoxIcon.Error)
End If
Catch
End Try
End Sub
Public Overloads Function AudioPlay() As Boolean
If mciSendString("play " & str_alias & " from 0",Nothing,0,0) = 0 Then
Return(True)
Else
Return(False)
End If
End Function
Public Overloads Function AudioPlay(ByVal FromPosition As Long) As Boolean
If FromPosition <= Me.Length - 10 And FromPosition >= 0 Then
If mciSendString("play " & str_alias & " from 0",Nothing,0,0) = 0 _
Then
Return(True)
Else
Return(False)
End If
End If
End Function
End Class(getestet mit Mp3-Dateien) |