Hi @ all
Habe ein Problem mit der Bass.dll. Ich will einen MediaPlayer damit schreiben. Nur habe ich das Problem, dass er keine Datei abspielt
. Er geht dem Play-Zweig zwar ab, aber man hört nichts und es kommt auch keine MsgBox mit Erfolg(hatte ich vorher eingebaut) beim _BASS_ChannelPlay kommt . Hier mal der Skript:
Spoiler anzeigen
#include <GuiListView.au3>
#include <Sound.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Date.au3>
#include <Array.au3>
#include <GUIListBox.au3>
#include <...\Bass.au3>
#include <...\BassConstants.au3>
Global $position, $paus = 0, $lang, $soundplay, $re, $Titelanzahl = 0, $List, $MusicHandle
[/autoit] [autoit][/autoit] [autoit]$gMusikPfad = IniRead(@ScriptDir & "\Data\Daten.uid", "Musik-Pfad", "", @DesktopDir)
[/autoit] [autoit][/autoit] [autoit]#cs
GUI geändert
Dateiformate geändert
#ce
$bass_dll = DllOpen("...\BASS.dll");Open Bass.DLL. Required for all function calls.
_BASS_Init($bass_dll, 0, -1, 44100, 0, "");Initalize bass. Required for most functions.
If @error Then;Check if bass iniated. If not, we cannot continue.
MsgBox(0, "Error", "Could not initialize audio")
Exit
EndIf
#Region
$Mediaplayer_GUI = GUICreate("Mediaplayer", 396, 396, 195, 127)
GUISetBkColor(0xFFFFFF)
GUICtrlCreateLabel("Position:", 40, 56, 41, 17)
$posi = GUICtrlCreateInput("", 88, 56, 57, 21)
GUICtrlCreateLabel("Länge:", 40, 112, 36, 17)
$bleibend = GUICtrlCreateInput("", 88, 112, 57, 21)
GUICtrlCreateLabel("Lautstärke:", 32, 176, 54, 17)
$Slider = GUICtrlCreateSlider(96, 168, 126, 29)
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlSetData(-1, IniRead(@ScriptDir & "\Data\Settings.uid", "Settings", "volume", 50))
GUICtrlCreatePic(@ScriptDir & "\Data\Buttons\Notenblattnew.jpg", 3, 0, 239, 393, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetState(-1, $GUI_DISABLE)
$Stop = GUICtrlCreateIcon(@ScriptDir & "\Data\Buttons\Button Stop.ico", 0, 16, 296, 32, 32, BitOR($SS_NOTIFY, $WS_GROUP))
$Play = GUICtrlCreateIcon(@ScriptDir & "\Data\Buttons\Button Play.ico", 0, 56, 296, 32, 32, BitOR($SS_NOTIFY, $WS_GROUP))
$Pause = GUICtrlCreateIcon(@ScriptDir & "\Data\Buttons\Button Pause.ico", 0, 96, 296, 32, 32, BitOR($SS_NOTIFY, $WS_GROUP))
$Add = GUICtrlCreateIcon(@ScriptDir & "\Data\Buttons\Button Add.ico", 0, 56, 336, 32, 32, BitOR($SS_NOTIFY, $WS_GROUP))
$Next = GUICtrlCreateIcon(@ScriptDir & "\Data\Buttons\Button Next.ico", 0, 176, 296, 32, 32, BitOR($SS_NOTIFY, $WS_GROUP))
$Before = GUICtrlCreateIcon(@ScriptDir & "\Data\Buttons\Button Previous.ico", 0, 136, 296, 32, 32, BitOR($SS_NOTIFY, $WS_GROUP))
$PlayList = GUICtrlCreateListView("Nr.|Name|Speicherplatz", 248, 0, 146, 374)
GUICtrlSendMsg(-1, 0x101E, 0, 28)
GUICtrlSendMsg(-1, 0x101E, 1, 112)
GUICtrlSendMsg(-1, 0x101E, 2, 50)
$Save = GUICtrlCreateIcon(@ScriptDir & "\Data\Buttons\floppy.ico", 0, 136, 336, 32, 32, BitOR($SS_NOTIFY, $WS_GROUP))
$Load = GUICtrlCreateIcon(@ScriptDir & "\Data\Buttons\Find.ico", 0, 96, 336, 32, 32, BitOR($SS_NOTIFY, $WS_GROUP))
$Auto = GUICtrlCreateCheckbox("Playlist einschalten", 32, 232, 177, 17)
$MenuItem1 = GUICtrlCreateMenu("Allgemein")
$MenuItem3 = GUICtrlCreateMenuItem("", $MenuItem1)
GUICtrlSetState(-1, $GUI_DISABLE)
$M_Exit = GUICtrlCreateMenuItem("Exit", $MenuItem1)
$MenuItem5 = GUICtrlCreateMenu("Optionen")
$Pfad = GUICtrlCreateMenuItem("Pfad", $MenuItem5)
$MenuItem2 = GUICtrlCreateMenu("Info")
$M_Info = GUICtrlCreateMenuItem("Info", $MenuItem2)
GUISetState(@SW_SHOW)
#EndRegion
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $M_Exit
IniWrite(@ScriptDir & "\Data\Settings.uid", "Settings", "volume", GUICtrlRead($Slider));er schreibt den aktuellen wert der lautstärke in die datei
_BASS_Free($bass_dll);Free Resources
Exit
Case $Play
Switch $paus
Case 2; Song Paused, Resume.
_BASS_Start($bass_dll)
$paus = 1
Case 0 ; Song stopped, start from begining.
If GUICtrlRead($Auto) = $GUI_UNCHECKED Then
$SoundPfad = _GUICtrlListView_GetItemText($PlayList, _GUICtrlListView_GetSelectionMark($PlayList), 2)
Else
$SoundPfad = _GUICtrlListView_GetItemText($PlayList, Random(1, $Titelanzahl), 2)
EndIf
$MusicHandle = _BASS_StreamCreateFile($bass_dll, False, $SoundPfad, 0, 0, $BASS_STREAM_AUTOFREE)
If @error Then;Check if we opened the file correctly.
MsgBox(0, "Error", "Could not load audio file" & @CR & "Error = " & @error)
Exit
EndIf
$Play = _BASS_ChannelPlay($bass_dll, $MusicHandle, 1)
If @error Then;Check if we opened the file correctly.
MsgBox(0, "Error", "Could not play audio file" & @CR & "Error = " & @error)
Exit
EndIf
$paus = 1
;$lang = _BASS_ChannelGetLength($bass_dll, $MusicHandle, $BASS_POS_BYTE)
;GUICtrlSetData($bleibend, $lang)
EndSwitch
Case $Pause
; Song Playing, Pause
;Pause song
_BASS_Pause($bass_dll)
$paus = 2
Case $Stop
;Stop Song
_BASS_ChannelStop($bass_dll, $MusicHandle)
$paus = 0
Case $Save
_PlayListSave()
Case $Add
_AddPlay()
Case $Load
_PlayListLoad()
Case $Pfad
$MusikPfad = FileSelectFolder("Bitte den Musikordner auswählen", @HomeDrive)
IniWrite(@ScriptDir & "\Data\Daten.uid", "Musik-Pfad", "", $MusikPfad)
$gMusikPfad = IniRead(@ScriptDir & "\Data\Daten.uid", "Musik-Pfad", "", @DesktopDir)
EndSwitch
;$BASS_CONFIG_GVOL_STREAM
;_BASS_SetConfig($bass_dll,$BASS_CONFIG_GVOL_SAMPLE ,10000) ;GUICtrlRead($Slider)*100)
SoundSetWaveVolume(100)
If $paus = 1 Then
$position = _BASS_ChannelGetPosition($bass_dll, $MusicHandle, $BASS_POS_BYTE)
GUICtrlSetData($posi, $position) ;War irgendwie weg ![]()
EndIf
If $position = $lang Then
_SetBack()
_BASS_ChannelStop($bass_dll, $MusicHandle)
$paus = 0
EndIf
WEnd
Func _PlayListSave()
#Region ### START Koda GUI section ### Form=C:\Users\Christopher\Desktop\Media Player\BackUp\Form2.kxf
$PlayListSave_GUI = GUICreate("Sichern", 275, 228, 303, 219)
$List = GUICtrlCreateList("", 0, 0, 272, 162)
_GUICtrlListBox_Dir($List, @ScriptDir & "\Playlists\*.pl")
$PlayListSave_Sichern = GUICtrlCreateButton("Sichern", 32, 200, 75, 25, 0)
$PlayListSave_Abbrechen = GUICtrlCreateButton("Abbrechen", 160, 200, 75, 25, 0)
$PlayListSave_Input = GUICtrlCreateInput("Input1", 8, 176, 121, 21)
$PlayListSave_New = GUICtrlCreateCheckbox("New?", 152, 176, 97, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
GUIDelete($PlayListSave_GUI)
GUISetState(@SW_SHOW, $Mediaplayer_GUI)
GUISwitch($Mediaplayer_GUI)
ExitLoop
Case $PlayListSave_Sichern
$Count = _GUICtrlListView_GetItemCount($PlayList) - 1
If GUICtrlRead($PlayListSave_New) = $GUI_CHECKED Then
$PlayListSave_NewName = GUICtrlRead($PlayListSave_Input)
MsgBox(0, "", $PlayListSave_NewName)
For $i = 0 To $Count Step +1
IniWrite(@ScriptDir & "\Playlists\" & $PlayListSave_NewName & ".pl", "Playlist", $i, _GUICtrlListView_GetItemText($PlayList, $i, 0) & "|" & _GUICtrlListView_GetItemText($PlayList, $i, 1) & "|" & _GUICtrlListView_GetItemText($PlayList, $i, 2))
If @error Then MsgBox(0, "", "2")
Next
Else
For $i = 0 To $Count Step +1
IniWrite(@ScriptDir & "\Playlists\" & _GUICtrlListBox_GetText($List, _GUICtrlListBox_GetCurSel($List)) & ".pl", "Playlist", $i, _GUICtrlListView_GetItemText($PlayList, $i, 0) & "|" & _GUICtrlListView_GetItemText($PlayList, $i, 1) & "|" & _GUICtrlListView_GetItemText($PlayList, $i, 2))
If @error Then MsgBox(0, "", "2")
Next
EndIf
MsgBox(0, "", "Liste erfolgreich gespeichert")
GUIDelete($PlayListSave_GUI)
GUISwitch($Mediaplayer_GUI)
ExitLoop
EndSwitch
WEnd
EndFunc ;==>_PlayListSave
Func _PlayListLoad()
#Region
$PlayListLoad_GUI = GUICreate("Laden", 273, 228, 303, 219)
$List = GUICtrlCreateList("", 0, 0, 272, 162)
_GUICtrlListBox_Dir($List, @ScriptDir & "\Playlists\*.pl")
$PlayListLoad_Laden = GUICtrlCreateButton("Laden", 32, 168, 75, 25, 0)
$PlayListLoad_Abbrechen = GUICtrlCreateButton("Abbrechen", 160, 168, 75, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
GUIDelete($PlayListLoad_GUI)
GUISetState(@SW_SHOW, $Mediaplayer_GUI)
GUISwitch($Mediaplayer_GUI)
ExitLoop
Case $PlayListLoad_Laden
$LoadList = IniReadSection(@ScriptDir & "\Playlists\" & _GUICtrlListBox_GetText($List, _GUICtrlListBox_GetCurSel($List)), "Playlist")
For $j = 1 To $LoadList[0][0] Step +1
GUICtrlCreateListViewItem($LoadList[$j][1], $PlayList)
$Titelanzahl += ($j - 1)
Next
GUIDelete($PlayListLoad_GUI)
GUISwitch($Mediaplayer_GUI)
ExitLoop
EndSwitch
WEnd
EndFunc ;==>_PlayListLoad
Func _AddPlay()
$sfile = FileOpenDialog("Öffnen", $gMusikPfad, "Alle Musikdateien(*.mp3;*.wma;*.aac,*.wav)")
If Not $sfile = "" Then
$file = StringSplit($sfile, "\")
$Titelanzahl += 1
GUICtrlCreateListViewItem($Titelanzahl & "|" & $file[$file[0]] & "|" & $sfile, $PlayList)
Else
MsgBox(0, "", "Bitte wählen sie eine Datei aus")
EndIf
EndFunc ;==>_AddPlay
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _SetBack()
GUICtrlSetData($posi, "00:00:00")
GUICtrlSetData($bleibend, "00:00:00")
EndFunc ;==>_SetBack
der Skript und alle nötigen Bilder,.dll´s,... nochmal hier zum Download: http://rapidshare.de/files/46925016/Media_Player.rar.html
P.S.: Wie kann man die Soundlautstärke mit der Bass.dll verändern
Hoffe jemand kann mir helfen
Edit: Link gefixt