| |
|
|
| fountain: [...] , stood: 26.04.2004 on the pages of Sebastian Sprenger have I subesquent interessanten Source found. One example for Use with Ressourcen. CompileMarkSeparationRessourcen abspielen (als Wave oder MIDI) und in echte Dateien schreiben
Profan 6.5 Version
© 2002 by Sebastian Sprenger
Benötigte Funktionen
def LoadResource(2) !KERNEL32,LoadResource
def FindResource(3) !KERNEL32,FindResourceA
def LockResource(1) !KERNEL32,LockResource
def SizeofResource(2) !KERNEL32,SizeofResource
def sndPlaySound(2) !WINMM,sndPlaySoundA
Ressource öffnen
proc OpenResource
parameters hinst&,Typ$,Name$
res1&=FindResource(hinst&,addr(Name$),addr(Typ$)) Ressource in der Instanz suchen
res2&=LoadResource(hinst&,res1&) Ressource laden
res3&=LockResource(res2&) Ressource sperren(?)
endproc
WriteResourceToFile H,S1,S2,S3
H : LongInt - Instanz-Handle der Ressource
S1 : String - Name der Ressource
S2 : String - Typ der Ressource
S3 : String - Name der Zieldatei
Schreibt eine Ressource in eine Datei.
proc WriteResourceToFile
parameters hinst&,Typ$,Name$,Datei$
declare res1&,res2&,res3&,res#,res2#,max&
OpenResource hinst&,Typ$,Name$ Ressource öffnen
max&=SizeofResource(hinst&,res1&) Größe der Ressource ermitteln
dim res#,max&+1
res2#=res#
res#=res3& Ressource in eine Bereichsvariable
assign #1,Datei$
openrw #1
blockwrite #1,res#,0,max& Bereich in Datei schreiben
closerw #1
dispose res2#
endproc
PlayExtSound H,S,N
H : LongInt - Instanz-Handle der Ressource
S : String - Name der Ressource
N : Integer - Modus (siehe Profan-Befehl PlaySound)
Spielt einen Sound in einer Ressource (Typ WAVE) ab
proc PlayExtSound
parameters hinst&,Name$,Mode%
declare res1&,res2&,res3&
OpenResource hinst&,WAVE,Name$ Ressource öffnen
sndPlaySound(res3&,Mode% or 4) Ressource abspielen (4=SND_RESOURCE)
endproc
PlayExtMidi H,S
H : LongInt - Instanz-Handle der Ressource
S : String - Name der Ressource
Spielt eine Midi-Datei in einer Ressource (Typ MIDI) ab
Da MIDIs nur über MCI und als Datei ansprechbar sind, wird die Datei im temporären Verzeichnis gespeichert
proc PlayExtMidi
parameters hinst&,Name$
declare res1&,res2&,res3&,Datei$
Datei$=$winpath;TEMP;Name$;.MID Die MIDI-Datei gehört ins Temp-Verzeichnis
WriteResourceToFile hinst&,MIDI,Name$,Datei$ MIDI-Ressource in eine Datei schreiben
setfattr Datei$,$22 MIDI-Dateien verstecken
mcisend$(OPEN +chr$(34)+Datei$+chr$(34)+ TYPE SEQUENCER ALIAS MIDI)
mcisend$(PLAY MIDI) Musik einschalten
endproc
CloseExtMidi S
S : String - Name der Ressource
Schliesst die Midi-Datei wieder und löscht die temporäre Datei
proc CloseExtMidi
parameters Datei$
mcisend$(CLOSE MIDI) Musik ausschalten
assign #1,Datei$ Die temporäre MIDI-Datei wieder löschen
erase #span>
endproc
Vielen Thanks Sebastian.
iF |
|
|
| |
|
|