'Hallo lbex
'Hier ein kleines Beispiel zum "abspielen von Resourcedateien".
'Ein wenig umständlich funktioniert aber.
'Beschreibung : In dem Projekt ist die Resource (.res) Datei resMid.res
' integriert.
'------------------------------------------------------------------------------
' ---
'Aufbau von resMid.rc :
'//**
'1001 CUSTOM DISCARDABLE "test.mid"
'------------------------------------------------------------------------------
' ---
'Kompilierung der Resource-Datei erfolgt durch : Compile.bat
'Aufbau Compile.bat: RC.EXE + RCDLL.DLL müssen sich im Kompilierungspfad
' befinden.
'RC /fo resMid.res resMid.rc
'------------------------------------------------------------------------------
' ---
'
'p.s. Ich hoffe das noch irgendjemand eine bessere Lösungsmöglichkeit hat.
'N.G.:15.03.03.do.(c)
Private Declare Function mciSendString Lib "winmm.dll" _
Alias "mciSendStringA" _
(ByVal lpstrCommand As String, _
ByVal lpstrReturnString As String, _
ByVal uReturnLength As Long, _
ByVal hwndCallback As Long) _
As Long
'Nur zum Test...
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'
Private Sub ExtractMidifile(Filename As String)
Dim bExtractData() As Byte
If Dir$(Filename) <> "" Then Kill Filename 'Ist die Datei
' vorhanden dann löschen
fno = FreeFile
Open Filename For Binary As #fno 'Die Resource wird in
' die übergebene
bExtractData = LoadResData(1001, "CUSTOM") 'Datei extrahiert und
' gespeichert.
Put #fno, , bExtractData
Close #fno
'Test ob die Datei existiert...implementieren
'hier...
'Wenn ja wird die im Anwendungspfad liegende .mid Datei abgespielt
Dim sBuffer As String
Dim lRet As Long
Dim sSend As String
sSend = "open sequencer!" & Filename & " alias midi"
sBuffer = Space$(255)
lRet = mciSendString(sSend, sBuffer, 255, 0&)
Debug.Print lRet
If lRet Then MsgBox "Fehler :", , "Fehler..."
lRet = mciSendString("play midi", sBuffer, 255, 0&)
'
'Zum Testen...
Call Sleep(5000)
'und löschen
Call Kill(Filename)
End Sub
Public Sub StoppMidifile()
Dim sBuffer As String
Dim lRet As Long
sBuffer = Space$(255)
lRet = mciSendString("stop midi", sBuffer, 255, 0&)
lRet = mciSendString("close midi", sBuffer, 255, 0&)
End Sub
Private Sub Command1_Click()
Call ExtractMidifile(App.Path & "\test_resource.mid")
End Sub
Private Sub Command2_Click()
Call StoppMidifile
End Sub
Private Sub Form_Load()
Command1.Caption = "&Play"
Command2.Caption = "&Stop"
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call StoppMidifile
End Sub
'MfG
'Frank |