Воспроизведение MP3 файлов
MP3 можно проигрывать с помощью известного кода :
http://nsis.sourceforge.net/Play_Sound
или с помощью bass.dll, что гораздо удобнее и более гибко (если знать вызов всех команд...)
Код:
!define BASS_DLL "bass.dll"
!define BASS_LOC "$PLUGINSDIR\${BASS_DLL}"
!define MP3 "demo.mp3"
!define MP3_LOC "$PLUGINSDIR\demo.mp3"
; для зацикливания воспроизведения
;!define BASS_SAMPLE_LOOP 4
OutFile "Bass_Test.exe"
Page instfiles
Function .onInit
InitPluginsDir
File "/oname=${MP3_LOC}" "${MP3}"
File "/oname=${BASS_LOC}" "${BASS_DLL}"
FunctionEnd
Section
FindWindow $0 "#32770" "" $HWNDPARENT
System::Call /NOUNLOAD '${BASS_LOC}::BASS_Init(i -1,i 44100,i 0,i r0,i n) b.r0'
System::Call /NOUNLOAD '${BASS_LOC}::BASS_Start() b.r0'
System::Call /NOUNLOAD '${BASS_LOC}::BASS_StreamCreateFile(b 0,t "$PLUGINSDIR\demo.mp3",i 0,i 0,i 0) i.r1'
; для зацикливания воспроизведения
;System::Call /NOUNLOAD "${BASS_LOC}::BASS_ChannelFlags(i r1, i ${BASS_SAMPLE_LOOP}, i ${BASS_SAMPLE_LOOP}) i.R0"
System::Call /NOUNLOAD '${BASS_LOC}::BASS_ChannelPlay(i r1, b 0) i.R1'
SectionEnd
Function .onGUIEnd
System::Call /NOUNLOAD "${BASS_LOC}::BASS_StreamFree(i) v (r1)"
System::Call /NOUNLOAD "${BASS_LOC}::BASS_Stop() b () .r0"
FunctionEnd