[Beispiel] NeMP3-P (MP3-Player) Version 0.8.4.7

  • Hallo Com,

    ich möche euch hiermit NocheinMP3-Player vorstellen. Das Skript ist sozusagen ein Abfallprodukt von JaYT-DwiMP3-P.exe (YouTube Downloader siehe Signatur) Das Skript ist durch die eingebetteten Binärdaten zu gross, daher gesplittet: Hier das Skript:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=beetle.ico
    #AutoIt3Wrapper_outfile=NeMP3-P.exe
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Res_Description=MochEinMP3-Player
    #AutoIt3Wrapper_Res_Fileversion=0.8.4.7
    #AutoIt3Wrapper_Res_LegalCopyright=(Auto)Bert Lizenz: Beerware
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.3.6.1
    Author: AutoBert: MainWindow with personalized Icons and Player http://www.autoit.de/index.php?page…2461#post162461

    [/autoit] [autoit][/autoit] [autoit]

    CoAuthors funkey: Menu-everywhere http://www.autoit.de/index.php?page…0614#post110614
    (from adapted functions) BugFix: _CreateTmpFile http://www.autoit.de/index.php?page…99705#post99705
    _CreateTmpBinaryCall for creating the binary Data "
    Oscar: _SoundGetWaveVolume() http://www.autoit.de/index.php?page…3826#post133826 (er ist aber nicht der Author)
    You may use this Code complete with no changes or in Parts.
    When you use parts then you have to name me
    or when it is a func from above the name of the Author of the func.
    Both with the thread on AutoIt.de
    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>
    #include <GuiTab.au3>
    #include <GuiListView.au3>
    #include <array.au3>
    #include <File.au3>
    #include <INet.au3>
    #include <Misc.au3>
    #include <array.au3>
    #include <Sound.au3>
    #include <SliderConstants.au3>
    #include <EditConstants.au3>
    #include <String.au3>
    #include <GuiSlider.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #include "BilderDaten.au3"

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1) ;ONEvent Mode.
    Opt("MustDeclareVars", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Func _CreateTmpFile($sFileName, $sBin)
    ;BugFix
    ; erstellt im TEMPDIR die Datei $sFileName mit Daten von $sBin
    ;http://www.autoit.de/index.php?page…99705#post99705
    Local $sFile = @TempDir & "\" & $sFileName
    Local $hFileOut = FileOpen($sFile, 18)
    FileWrite($hFileOut, Binary($sBin))
    FileClose($hFileOut)
    ;;consolewrite($sFile & @CRLF)
    Return $sFile
    EndFunc ;==>_CreateTmpFile

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $iWidht = 412, $iHeight = 447, $bMaxi = False, $hListView, $iOldTab
    Global $idContextmenu, $idInsertitem, $idRenameitem, $idDeletemenu, $idDeleteAll, $idDeleteitem
    Global $sUpdateUrl = "http://www.autoit.de/index.php?page=Thread&postID=162461#post162461", $hDown, $sPath, $bDoNotSave = False, $iSize
    Global $idfrmInit = -1, $idcheckMP3, $idcheckMP4, $idcheckMPeg, $idcheckJPG, $idedtSave, $idCheckUpdate, $idbtnOK, $idbtnCancel
    Global $aDropFiles[1], $WM_DROPFILES = 0x233, $mod, $sMp3Dir, $sNewTitle, $bSlider = True
    Global $sLiz = @ScriptDir & "\NeMP3-P_Lizenz.dat", $sLVdat = "NeMP3-P_Music.dat", $sProgTitel = "NeMP3-P ", $sProgVer = "0.8.4.7"
    Global $mpToPlay = -1, $mpToPlayinAR, $htoPlay, $bNaviEnable = False, $istdVl, $iYTVl, $bNotLized = False, $bJPG = True, $bAutoUpdate = True

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $out
    ;#cs
    If _Singleton($sProgTitel & $sProgVer, 1) = 0 Then
    ; MsgBox(64, $sProgTitel & $sProgVer, $sProgTitel & $sProgVer & ' ist bereits gestartet',5)
    WinActivate($sProgTitel & $sProgVer)
    If _Singleton($sProgTitel & "Einstellungen", 1) Then
    WinActivate($sProgTitel & "Einstellungen")
    EndIf
    Exit
    EndIf
    ;#ce

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{F6}", "_hide")
    Global $idfrmMain = GUICreate($sProgTitel & $sProgVer, $iWidht, $iHeight, IniRead($sLiz, "Pos", "x", "20"), IniRead($sLiz, "Pos", "y", "20"), BitOR($WS_POPUPWINDOW, $WS_THICKFRAME), $WS_EX_CONTROLPARENT)
    Global $origHWND = DllCall("user32.dll", "hwnd", "SetClipboardViewer", "hwnd", $idfrmMain), $sjpgBckgrnd
    GUISetIcon("..\..\..\..\Dokumente und Einstellungen\Bert\Eigene Dateien\beetle.ico")
    $origHWND = $origHWND[0]
    GUISetState(@SW_HIDE, $idfrmMain)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_exitMain")
    GUISetOnEvent($GUI_EVENT_RESIZED, "_resized")

    [/autoit] [autoit][/autoit] [autoit]

    Local $idlblMyTitle = GUICtrlCreateLabel($sProgTitel & $sProgVer, 90, 4, 2000, 20, Default, $GUI_WS_EX_PARENTDRAG)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetFont(-1, 12, 800)
    GUICtrlSetResizing(-1, $GUI_DOCKMENUBAR)

    [/autoit] [autoit][/autoit] [autoit]

    Local $idicoClose = GUICtrlCreateIcon(_CreateTmpFile('close.ico', $bdtaClose), -1, $iWidht - 20, 8, 16, 16)
    GUICtrlSetOnEvent($idicoClose, "_exitMain")
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
    Local $idicoMini = GUICtrlCreateIcon(_CreateTmpFile('mini.ico', $bdtaMini), -1, $iWidht - 40, 8, 16, 16)
    GUICtrlSetOnEvent($idicoMini, "_Minimize")
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
    Local $idjpgBckgrnd = GUICtrlCreatePic(_CreateTmpFile('beetle.jpg', $bdtaBeetle), 3, 58, 360, 270, $WS_CLIPSIBLINGS)
    GUICtrlSetState(-1, $GUI_DISABLE)
    Global $idprgPlayer = GUICtrlCreateProgress(5, $iHeight - 42, $iWidht - 10, 40)
    GUICtrlSetResizing(-1, $GUI_DOCKSTATEBAR)

    [/autoit] [autoit][/autoit] [autoit]

    Global $idfrmChild = GUICreate("GUI", $iWidht, $iHeight - 35, 1, 35, $WS_POPUP, BitOR($WS_EX_MDICHILD, $WS_EX_ACCEPTFILES), $idfrmMain)
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "SliderFalse")
    GUISetOnEvent($GUI_EVENT_PRIMARYUP, "SliderTrue")
    GUISetOnEvent($GUI_EVENT_DROPPED, "_FilesDropped")
    GUISetState(@SW_HIDE, $idfrmChild)
    ;WinSetTrans("GUI", "", 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $idLV_Player = GUICtrlCreateListView("Name: |Beschreibung |Pfad", 5, 5, $iWidht - 40, $iHeight - 145, BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT))
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    GUICtrlSetFont(-1, 9, 800)
    GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
    Global $idsliderVol = GUICtrlCreateSlider($iWidht - 35, 0, 30, $iHeight - 120, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_Bottom, $TBS_ENABLESELRANGE, $TBS_TOOLTIPS, $TBS_VERT))
    GUICtrlSetOnEvent(-1, "_SetVol")
    GUICtrlSetLimit(-1, 100, 0) ;maximal 100 minimal 0
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKWIDTH)
    Global $idsliderPos = GUICtrlCreateSlider(5, $iHeight - 137, $iWidht - 40, 25, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_Bottom, $TBS_ENABLESELRANGE, $TBS_TOOLTIPS, $TBS_AUTOTICKS))
    GUICtrlSetOnEvent(-1, "_SetPos")
    GUICtrlSetLimit($idsliderPos, 100, 1)
    GUICtrlSetResizing(-1, $GUI_DOCKSTATEBAR + $GUI_DOCKWIDTH)
    Global $idbtnFirst = GUICtrlCreateButton("&erstes", 10, $iHeight - 107, 55, 20)
    GUICtrlSetOnEvent(-1, "_playFirst")
    GUICtrlSetResizing(-1, $GUI_DOCKSTATEBAR + $GUI_DOCKWIDTH)
    Global $idbtnPrev = GUICtrlCreateButton("&vorheriges", 70, $iHeight - 107, 65, 20)
    GUICtrlSetOnEvent(-1, "_playPrev")
    GUICtrlSetResizing(-1, $GUI_DOCKSTATEBAR + $GUI_DOCKWIDTH)
    Global $idbtnPlayPause = GUICtrlCreateButton("&abspielen", 140, $iHeight - 107, 65, 20)
    GUICtrlSetOnEvent(-1, "_playPause")
    GUICtrlSetResizing(-1, $GUI_DOCKSTATEBAR + $GUI_DOCKWIDTH)
    GUICtrlCreateButton("&STOP", 210, $iHeight - 107, 55, 20)
    GUICtrlSetOnEvent(-1, "_playStop")
    GUICtrlSetResizing(-1, $GUI_DOCKSTATEBAR + $GUI_DOCKWIDTH)
    Global $idbtnNext = GUICtrlCreateButton("&nächstes", 270, $iHeight - 107, 55, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKSTATEBAR + $GUI_DOCKWIDTH)
    GUICtrlSetOnEvent(-1, "_playNext")
    GUICtrlSetResizing(-1, $GUI_DOCKSTATEBAR + $GUI_DOCKWIDTH)
    Global $idbtnLast = GUICtrlCreateButton("&letztes", 330, $iHeight - 107, 55, 20)
    GUICtrlSetOnEvent(-1, "_playLast")
    GUICtrlSetResizing(-1, $GUI_DOCKSTATEBAR + $GUI_DOCKWIDTH)
    ;GUICtrlCreateButton("&zufällige Reihenfolge", 390, $iHeight - 107, 135, 20)
    ;GUICtrlSetResizing(-1, $GUI_DOCKSTATEBAR + $GUI_DOCKWIDTH)
    ;GUICtrlSetOnEvent(-1, "_playRandom")
    GUICtrlSetResizing(-1, $GUI_DOCKSTATEBAR + $GUI_DOCKWIDTH)
    Global $idlblPrcntPlayer = GUICtrlCreateLabel(" ", 5, $iHeight - 76, $iWidht - 10, 18, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800)
    GUICtrlSetResizing(-1, $GUI_DOCKSTATEBAR)
    Global $idlblTitelPlayer = GUICtrlCreateLabel(" ", 5, $iHeight - 60, $iWidht - 10, 17, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800)
    GUICtrlSetResizing(-1, $GUI_DOCKSTATEBAR)
    _LoadLVs()
    _GUICtrlListView_SetColumnWidth($idLV_Player, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($idLV_Player, 1, 0) ;zweite Spalte versteckt wird derzeit nicht benutzt
    _GUICtrlListView_SetColumnWidth($idLV_Player, 2, 0) ;dritte Spalte versteckt

    [/autoit] [autoit][/autoit] [autoit]

    $idContextmenu = GUICtrlCreateContextMenu($idLV_Player)
    $idDeletemenu = GUICtrlCreateMenu("Löschen...", $idContextmenu)
    $idDeleteAll = GUICtrlCreateMenuItem("Alle Einträge", $idDeletemenu)
    GUICtrlSetOnEvent(-1, '_DeleteAll')
    $idDeleteitem = GUICtrlCreateMenuItem("ausgewählte Einträge", $idDeletemenu)
    GUICtrlSetOnEvent(-1, '_DeleteItem')
    GUICtrlCreateMenuItem("", $idContextmenu)

    [/autoit] [autoit][/autoit] [autoit]

    #region ;ab hier Menü überall plazieren siehe http://www.autoit.de/index.php?page…0614#post110614 von funkey
    GUISwitch($idfrmMain)
    ;GUICtrlCreateLabel('', 5, 4, $iWidht - 50, 2, 0x1000)
    GUICtrlCreateLabel('', -2, 28, $iWidht + 4, 2, 0x1000)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKTOP)

    [/autoit] [autoit][/autoit] [autoit]

    Global $idMenueDatei = GUICtrlCreateLabel('&Datei', 5, 8, 40, 18, 0x201)
    GUICtrlSetFont(-1, 10, 800)
    GUICtrlSetResizing(-1, $GUI_DOCKAll)
    GUICtrlSetOnEvent(-1, '_MenuPressed')

    [/autoit] [autoit][/autoit] [autoit]

    Global $idDateiContext = GUICtrlCreateContextMenu(GUICtrlCreateDummy())
    Global $idOptionsOpen = GUICtrlCreateMenuItem("Hintergrund &wählen", $idDateiContext)
    GUICtrlSetOnEvent(-1, "_openJPG")
    Global $idOptionsInit = GUICtrlCreateMenuItem("&Einstellungen", $idDateiContext)
    GUICtrlSetOnEvent(-1, "_Initialize")
    GUICtrlCreateMenuItem("", $idDateiContext)
    Global $idOptionsLoad = GUICtrlCreateMenuItem("MP3's &laden", $idDateiContext)
    GUICtrlSetOnEvent(-1, "_LoadFiles")
    GUICtrlCreateMenuItem("", $idDateiContext)
    Global $idOptionsClose = GUICtrlCreateMenuItem("S&chließen ohne Speichern", $idDateiContext)
    GUICtrlSetOnEvent(-1, "_Close")
    GUICtrlCreateMenuItem("", $idDateiContext)
    Global $idOptionsExit = GUICtrlCreateMenuItem("&Beenden", $idDateiContext)
    GUICtrlSetOnEvent(-1, '_ExitMain')

    [/autoit] [autoit][/autoit] [autoit]

    Global $idMenueHelp = GUICtrlCreateLabel("&Hilfe", $iWidht - 100, 8, 45, 18, 0x201)
    GUICtrlSetFont(-1, 10, 800)
    GUICtrlSetResizing(-1, $GUI_DOCKMENUBAR + $GUI_DOCKRIGHT)
    GUICtrlSetOnEvent(-1, '_MenuPressed')

    [/autoit] [autoit][/autoit] [autoit]

    Global $idHelpContext = GUICtrlCreateContextMenu(GUICtrlCreateDummy())
    Global $idHelpWWW = GUICtrlCreateMenuItem("&Website", $idHelpContext)
    GUICtrlSetOnEvent(-1, '_Website')
    Global $idHelpUpdate = GUICtrlCreateMenuItem("&Update verfügbar?", $idHelpContext)
    GUICtrlSetOnEvent(-1, '_Update')
    GUICtrlCreateMenuItem("", $idHelpContext)
    Global $idHelpAbout = GUICtrlCreateMenuItem("Ü&ber...", $idHelpContext)
    GUICtrlSetOnEvent(-1, '_About')

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel('', -2, 28, $iWidht + 4, 2, 0x1000)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKTOP)

    [/autoit] [autoit][/autoit] [autoit]

    Global $AccelKeys[2][2] = [["!d", $idMenueDatei],["!h", $idMenueHelp]];["!b", $idMenueEdit],
    GUISetAccelerators($AccelKeys)
    #endregion ;ab hier Menü überall plazieren siehe http://www.autoit.de/index.php?page…0614#post110614 von funkey

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;WinSetOnTop($sProgTitel, "", 1)
    ;GUICtrlSetData($idlblTitelPlayer, "Test")
    ;GUICtrlSetData($idlblPrcntPlayer, "66 %")
    ;
    ;GUISetState(@SW_SHOW, $idfrmChild)
    ;GUISetState(@SW_SHOW, $idfrmMain)
    Dim $aGuis[2]
    $aGuis[0] = $idfrmMain
    $aGuis[1] = $idfrmChild

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If FileExists($sLiz) Then
    _Config()
    Else
    $bNotLized = True
    If Not _about() Then Exit
    $bNotLized = False
    ;;consolewrite("Lizenz wurde akzeptiert" & @CRLF)
    _config()
    _SaveConfig()
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    AdlibRegister("_resized")
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    GUIRegisterMsg($WM_DROPFILES, "WM_DROPFILES_FUNC")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(1000)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    #region ;funcs für Fensterhandling
    Func _Config()
    Local $aPos[4], $i, $j
    _initConfig()
    $istdVl = _SoundGetWaveVolume()
    If $istdVl <> 0 Then IniWrite($sLiz, "Volume", "Standard", $istdVl)

    [/autoit] [autoit][/autoit] [autoit]

    $iYTVl = IniRead($sLiz, "Volume", "NeMP3-P", 50)
    GUICtrlSetData($idsliderVol, $iYTVl)
    _SetVol()
    $aPos[0] = IniRead($sLiz, "Pos", "x", "20")
    $aPos[1] = IniRead($sLiz, "Pos", "y", "20")
    ;WinMove($idfrmMain, "", $aPos[0], $aPos[1], $iWidht, $iHeight,98)
    $sjpgBckgrnd = IniRead($sLiz, "Pos", "PIC", "")

    [/autoit] [autoit][/autoit] [autoit]

    Local $i = IniRead($sLiz, "Pos", "Tab", 0)
    ;WinWaitActive($idfrmChild, "", 5)
    _FadeIn($aGuis, 50, 180, 10)
    ;_resized()
    EndFunc ;==>_Config

    [/autoit] [autoit][/autoit] [autoit]

    Func _SaveConfig()
    Local $i, $aPos = WinGetPos($idfrmMain)
    IniWrite($sLiz, "Pos", "x", $aPos[0])
    IniWrite($sLiz, "Pos", "y", $aPos[1])
    IniWrite($sLiz, "Pos", "width", $aPos[2])
    IniWrite($sLiz, "Pos", "height", $aPos[3])
    IniWrite($sLiz, "Pos", "PIC", $sjpgBckgrnd)
    For $i = 0 To _GUICtrlListView_GetColumnCount($idLV_Player) - 1
    IniWrite($sLiz, "Player", "Col[" & $i & "]", _GUICtrlListView_GetColumnWidth($idLV_Player, $i))
    Next
    SoundSetWaveVolume($istdVl)
    IniWrite($sLiz, "Volume", "NeMP3-P", GUICtrlRead($idsliderVol))
    EndFunc ;==>_SaveConfig

    [/autoit] [autoit][/autoit] [autoit]

    Func _exitMain()
    _playStop()
    _SaveConfig()
    _saveLVs()
    FileDelete(@TempDir & "\normalize.ico")
    FileDelete(@TempDir & "\mini.ico")
    FileDelete(@TempDir & "\maxi.ico")
    FileDelete(@TempDir & "\close.ico")
    FileDelete(@TempDir & "\app.ico")
    FileDelete(@TempDir & "\beetle.jpg")
    HotKeySet("{F6}")

    [/autoit] [autoit][/autoit] [autoit]

    ;funkey Spoiler-Reader
    ; send notification that we no longer will be in clipboard hook queue
    DllCall("user32.dll", "int", "ChangeClipboardChain", "hwnd", $idfrmMain, "hwnd", $origHWND)
    _FadeOut($aGuis, 180, 0, 10)
    Exit
    EndFunc ;==>_exitMain

    [/autoit] [autoit][/autoit] [autoit]

    Func _Close()
    MsgBox(0, "", "Schliessen")
    $bDoNotSave = True
    _FadeOut($aGuis, 180, 0, 30)
    Exit
    EndFunc ;==>_Close

    [/autoit] [autoit][/autoit] [autoit]

    Func _Minimize()
    GUISetState(@SW_MINIMIZE, $idfrmMain)
    EndFunc ;==>_Minimize

    [/autoit] [autoit][/autoit] [autoit]

    #cs
    Func _Maximize()
    GUISetState(@SW_MAXIMIZE, $idfrmMain)
    _Resized()
    GUICtrlSetState($idicoMaxi, $GUI_HIDE)
    GUICtrlSetState($idicoNorm, $GUI_SHOW)
    EndFunc ;==>_Maximize

    [/autoit] [autoit][/autoit] [autoit]

    Func _Normalize()
    GUISetState(@SW_RESTORE, $idfrmMain)
    _Resized()
    GUICtrlSetState($idicoNorm, $GUI_HIDE)
    GUICtrlSetState($idicoMaxi, $GUI_SHOW)
    EndFunc ;==>_Normalize
    #ce

    [/autoit] [autoit][/autoit] [autoit]

    Func _Resized()
    Local $aPos = WinGetPos($idfrmMain)
    Local $aPos2 = WinGetPos($idfrmChild)
    $aPos2[3] += 34
    Local $i, $bResizeIt = False
    For $i = 2 To 3
    If $aPos[$i] <> $aPos2[$i] Then $bResizeIt = True
    Next
    If $bResizeIt Then
    WinMove($idfrmChild, "", $aPos[0], $aPos[1] + 34, $aPos[2], $aPos[3] - 34)
    GUISetState(@SW_SHOW, $idfrmMain)
    GUISetState(@SW_SHOW, $idfrmChild)
    If _Singleton($sProgTitel & "Einstellungen", 1) Then
    WinActivate($sProgTitel & "Einstellungen")
    EndIf
    EndIf
    EndFunc ;==>_Resized

    [/autoit] [autoit][/autoit] [autoit]

    Func _hide()
    GUISetState(@SW_HIDE, $idfrmMain)
    GUISetState(@SW_HIDE, $idfrmChild)
    HotKeySet("{F6}", "_show")
    EndFunc ;==>_hide

    [/autoit] [autoit][/autoit] [autoit]

    Func _show()
    GUISetState(@SW_SHOW, $idfrmMain)
    GUISetState(@SW_SHOW, $idfrmChild)
    _resized()
    HotKeySet("{F6}", "_hide")
    EndFunc ;==>_show

    [/autoit] [autoit][/autoit] [autoit]

    Func _FadeIn($aGuis, $iStart = 20, $iEnd = 255, $iStep = 5, $iDelay = 10)
    For $i = $iStart To 255
    For $j = 0 To UBound($aGuis) - 1
    If $j = 0 Then
    WinSetTrans($aGuis[0], "", $i)
    Else
    If $i < $iEnd Then WinSetTrans($aGuis[$j], "", $i)
    EndIf
    If $i = $iStart Then GUISetState(@SW_SHOW, $aGuis[$j])
    Next
    Sleep($iDelay)
    Next
    EndFunc ;==>_FadeIn

    [/autoit] [autoit][/autoit] [autoit]

    Func _FadeOut($aGuis, $iStart = 255, $iEnd = 20, $iStep = 5, $iDelay = 10)
    For $i = 255 To $iEnd Step -1
    For $j = 0 To UBound($aGuis) - 1
    If $j = 0 Then
    WinSetTrans($aGuis[0], "", $i)
    Else
    If $i < $iStart Then WinSetTrans($aGuis[$j], "", $i)
    EndIf
    Next
    Sleep($iDelay)
    Next
    EndFunc ;==>_FadeOut

    [/autoit] [autoit][/autoit] [autoit]

    Func _OpenJPG()
    $sjpgBckgrnd = FileOpenDialog("Hintergrundbild auswählen", @ScriptDir & "\bin", "Images (*.jpg)", 1, "", $idfrmMain)
    If $sjpgBckgrnd <> "" Then GUICtrlSetImage($idjpgBckgrnd, $sjpgBckgrnd)
    EndFunc ;==>_OpenJPG

    [/autoit] [autoit][/autoit] [autoit]

    ;#cs
    Func _Initialize()
    If $idfrmInit = -1 Then
    $idfrmInit = GUICreate($sProgTitel & " Einstellungen", 300, 275, -1, -1, BitOR($DS_MODALFRAME, $DS_SETFOREGROUND, $WS_SYSMENU), $WS_EX_TOOLWINDOW, $idfrmChild)
    $idcheckJPG = GUICtrlCreateCheckbox("Vorschau-Coverbild zeigen", 5, 5, 280)
    GUISetIcon("..\..\..\..\Dokumente und Einstellungen\Bert\Eigene Dateien\beetle.ico")
    GUICtrlCreateLabel("MP3's sind im Ordner:", 5, 70, 170, 20, $SS_CENTER)
    GUICtrlSetFont(-1, 12)
    Local $idbtnSelect = GUICtrlCreateButton("&ändern", 180, 70, 80, 20)
    GUICtrlSetOnEvent(-1, "_SelectPath")
    $idedtSave = GUICtrlCreateEdit($sMp3Dir, 5, 95, 285, 70, BitOR($ES_MULTILINE, $ES_READONLY))
    ;GUICtrlSetState(-1,$GUI_DISABLE)
    $idCheckUpdate = GUICtrlCreateCheckbox("Updates zulassen", 5, 170, 280)
    $idbtnOK = GUICtrlCreateButton("&übernehmen", 5, 210, 70, 20, $BS_DEFPUSHBUTTON)
    GUICtrlSetOnEvent(-1, "_InitOK")
    $idbtnCancel = GUICtrlCreateButton("&verwerfen", 220, 210, 70, 20)
    GUICtrlSetOnEvent(-1, "_exitInit")
    GUISetOnEvent($GUI_EVENT_CLOSE, "_exitInit")
    Else
    ;;consolewrite("Show" & @CRLF)
    EndIf
    GUISetState(@SW_DISABLE, $idfrmMain)
    GUISetState(@SW_DISABLE, $idfrmChild)
    _initConfig()

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetState($idcheckJPG, $bJPG)
    GUICtrlSetState($idCheckUpdate, $bAutoUpdate)
    GUICtrlSetData($idedtSave, $sMp3Dir)
    GUISetState(@SW_SHOW, $idfrmInit)
    EndFunc ;==>_Initialize

    [/autoit] [autoit][/autoit] [autoit]

    Func _initConfig()
    $sMp3Dir = IniRead($sLiz, "laden", "Pfad", @MyDocumentsDir & "\Eigene Musik")
    $bJPG = IniRead($sLiz, "speichern", "JPG", "1")
    $bAutoUpdate = IniRead($sLiz, "Update", "Automatisch", "1")
    EndFunc ;==>_initConfig

    [/autoit] [autoit][/autoit] [autoit]

    Func _SelectPath()
    Local $sNewDir
    If $sMp3Dir = "" Then $sMp3Dir = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
    $sNewDir = FileSelectFolder("Ordner zum Speichern auswählen", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", 1, $sMp3Dir, $idfrmMain)
    If $sNewDir <> "" Then
    GUICtrlSetData($idedtSave, $sNewDir)
    $sMp3Dir = $sNewDir
    EndIf
    EndFunc ;==>_SelectPath

    [/autoit] [autoit][/autoit] [autoit]

    Func _InitOK()
    $bJPG = Int((5 - GUICtrlRead($idcheckJPG)) / 4)
    $bAutoUpdate = Int((5 - GUICtrlRead($idCheckUpdate)) / 4)
    $sMp3Dir = GUICtrlRead($idedtSave)
    IniWrite($sLiz, "speichern", "JPG", $bJPG)
    IniWrite($sLiz, "Update", "Automatisch", $bAutoUpdate)
    IniWrite($sLiz, "laden", "Pfad", $sMp3Dir)
    _exitInit()
    EndFunc ;==>_InitOK

    [/autoit] [autoit][/autoit] [autoit]

    Func _exitInit()
    GUISetState(@SW_HIDE, $idfrmInit)
    GUISetState(@SW_ENABLE, $idfrmMain)
    GUISetState(@SW_ENABLE, $idfrmChild)
    WinActivate($idfrmMain)
    EndFunc ;==>_exitInit
    #endregion ;funcs für Fensterhandling

    [/autoit] [autoit][/autoit] [autoit]

    #region ;funcs fürs Abspielen
    Func _SoundGetWaveVolume() ;Oscar http://www.autoit.de/index.php?page…3826#post133826
    Local $WaveVol = -1, $p, $ret
    Local Const $MMSYSERR_NOERROR = 0
    $p = DllStructCreate('dword')
    If @error Then Return SetError(2, 0, -2)
    $ret = DllCall('winmm.dll', 'long', 'waveOutGetVolume', 'long', -1, 'long', DllStructGetPtr($p))
    If ($ret[0] == $MMSYSERR_NOERROR) Then
    $WaveVol = Round(Dec(StringRight(Hex(DllStructGetData($p, 1), 8), 4)) / 0xFFFF * 100)
    Else
    SetError(1)
    EndIf
    $p = 0
    Return $WaveVol
    EndFunc ;==>_SoundGetWaveVolume

    [/autoit] [autoit][/autoit] [autoit]

    Func _SetVol()
    SoundSetWaveVolume(GUICtrlRead($idsliderVol))
    EndFunc ;==>_SetVol

    [/autoit] [autoit][/autoit] [autoit]

    Func _playFirst()
    Local $arPlayList = _GUICtrlListView_GetSelectedIndices($idLV_Player, True)
    If $arPlayList[0] > 0 Then
    $bNaviEnable = True
    _playStop()
    $mpToPlay = $arPlayList[1]
    $mpToPlayinAR = 1
    Else
    $mpToPlay = 0
    EndIf
    _PlayIt()
    EndFunc ;==>_playFirst

    [/autoit] [autoit][/autoit] [autoit]

    Func _playPrev()
    Local $arPlayList = _GUICtrlListView_GetSelectedIndices($idLV_Player, True)
    If $arPlayList[0] > 0 Then
    $bNaviEnable = True
    _playStop()
    If $mpToPlay < 0 Then $mpToPlay = 0
    $mpToPlay = $arPlayList[1]
    $mpToPlayinAR -= 1
    If $mpToPlayinAR < 1 Then $mpToPlayinAR = $arPlayList[0]
    $mpToPlay = $arPlayList[$mpToPlayinAR]
    Else
    $mpToPlay -= 1
    If $mpToPlay < 0 Then $mpToPlay = _GUICtrlListView_GetItemCount($idLV_Player) - 1
    EndIf
    _PlayIt()
    EndFunc ;==>_playPrev

    [/autoit] [autoit][/autoit] [autoit]

    Func _playNext()
    Local $arPlayList = _GUICtrlListView_GetSelectedIndices($idLV_Player, True)
    If $arPlayList[0] > 0 Then
    $bNaviEnable = True
    _playStop()
    $mpToPlay = $arPlayList[1]
    $mpToPlayinAR += 1
    If $mpToPlayinAR > $arPlayList[0] Then $mpToPlayinAR = 1; AdlibUnRegister("_CheckPlayer")
    $mpToPlay = $arPlayList[$mpToPlayinAR]
    Else
    $mpToPlayinAR = 0
    $mpToPlay += 1
    If $mpToPlay > _GUICtrlListView_GetItemCount($idLV_Player) - 1 Then $mpToPlay = 0 ;AdlibUnRegister("_CheckPlayer")
    EndIf
    _PlayIt()
    EndFunc ;==>_playNext

    [/autoit] [autoit][/autoit] [autoit]

    Func _playLast()
    Local $arPlayList = _GUICtrlListView_GetSelectedIndices($idLV_Player, True)
    If $arPlayList[0] > 0 Then
    $bNaviEnable = True
    _playStop()
    $mpToPlay = $arPlayList[$mpToPlayinAR]
    Else
    $mpToPlay = _GUICtrlListView_GetItemCount($idLV_Player) - 1
    EndIf
    _PlayIt()
    EndFunc ;==>_playLast

    [/autoit] [autoit][/autoit] [autoit]

    Func _PlayNaviEnable()
    GUICtrlSetData($idbtnPlayPause, "&abspielen")
    GUICtrlSetState($idbtnFirst, $GUI_EnABLE)
    GUICtrlSetState($idbtnPrev, $GUI_EnABLE)
    GUICtrlSetState($idbtnNext, $GUI_EnABLE)
    GUICtrlSetState($idbtnLast, $GUI_EnABLE)
    EndFunc ;==>_PlayNaviEnable

    [/autoit] [autoit][/autoit] [autoit]

    Func _PlayNaviDisable()
    ;GUICtrlSetState($idlblTitelPlayer, $GUI_SHOW)
    GUICtrlSetData($idbtnPlayPause, "&Pause")
    GUICtrlSetState($idbtnFirst, $GUI_DISABLE)
    GUICtrlSetState($idbtnPrev, $GUI_DISABLE)
    GUICtrlSetState($idbtnNext, $GUI_DISABLE)
    GUICtrlSetState($idbtnLast, $GUI_DISABLE)
    EndFunc ;==>_PlayNaviDisable

    [/autoit] [autoit][/autoit] [autoit]

    Func SliderFalse()
    ; ConsoleWrite("Slider False" & @CRLF)
    $bSlider = False
    EndFunc ;==>SliderFalse

    [/autoit] [autoit][/autoit] [autoit]

    Func SliderTrue()
    ; ConsoleWrite("Slider True" & @CRLF)
    $bSlider = True
    EndFunc ;==>SliderTrue

    [/autoit] [autoit][/autoit] [autoit]

    Func _setPos()
    $bSlider = False
    If IsArray($htoPlay) Then
    Local $iLength = _SoundLength($htoPlay, 2) / 1000
    ;ConsoleWrite("Länge in Seknden:" & $iLength & @CRLF)
    Local $iSS = GUICtrlRead($idsliderPos)
    ;ConsoleWrite("neue Länge in Seknden:" & $iSS & @CRLF)
    Local $iHH = Int($iSS / 3600)
    $iSS = Mod($iSS, 3600)
    Local $iMM = Int($iSS / 60)
    $iSS = Mod($iSS, 60)
    ;ConsoleWrite($iHH & ":" & $iMM & ":" & $iSS & @CRLF)
    _SoundSeek($htoPlay, $iHH, $iMM, $iSS)
    _SoundPlay($htoPlay)
    EndIf
    $bSlider = True
    EndFunc ;==>_setPos

    [/autoit] [autoit][/autoit] [autoit]

    Func _CheckPlayer()
    Local $iLength = _SoundLength($htoPlay, 2)
    Local $iPos = _SoundPos($htoPlay, 2)
    ;ConsoleWrite($bSlider & " , " & Int($iPos / 1000) & @CRLF)
    If $bSlider Then GUICtrlSetData($idsliderPos, Int($iPos / 1000)) ;absolut
    If $iPos = $iLength Then
    If $mpToPlayinAR = 0 Then
    If $mpToPlay < _GUICtrlListView_GetItemCount($idLV_Player) - 1 Then
    $mpToPlay += 1
    _playIt()
    Else
    _playNext()
    EndIf
    Else
    _playStop()
    $bNaviEnable = False
    GUICtrlSetData($idbtnPlayPause, "&abspielen")
    Sleep(500)
    _playNext()
    EndIf
    Else
    Local $iPercent = Round($iPos / $iLength * 100)
    If $iPercent <> Number(StringReplace(GUICtrlRead($idprgPlayer), " %", "")) Then
    GUICtrlSetData($idprgPlayer, $iPercent)
    GUICtrlSetData($idlblPrcntPlayer, $iPercent & " %")
    EndIf
    EndIf
    EndFunc ;==>_CheckPlayer

    [/autoit] [autoit][/autoit] [autoit]

    Func _playStop()
    AdlibUnRegister("_CheckPlayer")
    _SoundStop($htoPlay)
    ;if WinExists($sNewTitle) then WinClose($sNewTitle)
    $htoPlay = ""
    GUICtrlSetData($idbtnPlayPause, "&abspielen")
    If $bNaviEnable Then _PlayNaviEnable()
    $mpToPlay = 0
    EndFunc ;==>_playStop

    [/autoit] [autoit][/autoit] [autoit]

    Func _playPause() ;funktioniert nicht richtig
    Local $arPlayList = _GUICtrlListView_GetSelectedIndices($idLV_Player, True)
    If $bNaviEnable Then _PlayNaviEnable()
    If GUICtrlRead($idbtnPlayPause) = "&Pause" Then
    ;;consolewrite("==> Pause" & @CRLF)
    GUICtrlSetData($idbtnPlayPause, "&abspielen")
    _SoundPause($htoPlay)
    Else
    GUICtrlSetData($idbtnPlayPause, "&Pause")
    ;;consolewrite("==> Pause" & @CRLF)
    If IsArray($htoPlay) Then
    ;;consolewrite("==> Resume" & @CRLF)
    ;If $bNaviEnable Then
    _SoundResume($htoPlay)
    ;Else
    ; _PlayIt()
    ;EndIf
    Else
    ;;consolewrite("==> Play" & @CRLF)
    _PlayIt()
    EndIf
    EndIf
    EndFunc ;==>_playPause

    [/autoit] [autoit][/autoit] [autoit]

    Func _playIT()
    Local $szDrive, $szDir, $szFName, $szExt, $split
    Local $arPlayList, $aMpToPlay = _GUICtrlListView_GetItemTextArray($idLV_Player, $mpToPlay)
    ;_ArrayDisplay($aMpToPlay)
    ;;consolewrite($mpToPlay & " in AR " & $mpToPlayinAR & $aMpToPlay[3] & @CRLF)
    GUICtrlSetData($idlblTitelPlayer, $aMpToPlay[1])
    ;ConsoleWrite($bJPG & " ")
    $split = _PathSplit($aMpToPlay[3], $szDrive, $szDir, $szFName, $szExt)
    If $bJPG Then
    $split = StringReplace($aMpToPlay[3], $szExt, ".jpg")
    ;ConsoleWrite($split & @CRLF)
    ;If Not FileExists($split) Then _GetJPG($aMpToPlay[1])
    If Not FileExists($split) Then
    If Not FileExists(@TempDir & "\beetle.jpg") Then _CreateTmpFile('beetle.jpg', $bdtaBeetle)
    $split = @TempDir & "\beetle.jpg"
    EndIf
    ;consolewrite($split & @CRLF)
    GUICtrlSetImage($idjpgBckgrnd, $split)
    EndIf
    If IsArray($htoPlay) Then _SoundStop($htoPlay)
    $htoPlay = _SoundOpen($aMpToPlay[3])
    _SoundPlay($htoPlay)
    Local $iLength = _SoundLength($htoPlay, 2) / 1000
    GUICtrlSetLimit($idsliderPos, $iLength) ;nur wenn absolut
    $bSlider = True
    $arPlayList = _GUICtrlListView_GetSelectedIndices($idLV_Player, True)
    If $arPlayList[0] = 1 Then _GUICtrlListView_SetItemSelected($idLV_Player, $arPlayList[1], False) ;sonst wird auch ein einzelnes Lied wiederholt (Doppelklick)
    AdlibRegister("_CheckPlayer")
    If IsArray($aMpToPlay) Then
    ;;consolewrite("PlayIt IsArray True" & @CRLF)
    If $aMpToPlay[0] = $aMpToPlay Then _PlayNaviDisable()
    Else
    ;;consolewrite("PlayIt IsArray False" & @CRLF)
    _PlayNaviDisable()
    EndIf
    If $bAutoUpdate Then _CheckUpdate()
    EndFunc ;==>_playIT

    [/autoit] [autoit][/autoit] [autoit]

    Func _playRandom()
    EndFunc ;==>_playRandom

    [/autoit] [autoit][/autoit] [autoit]

    #endregion ;funcs fürs Abspielen

    [/autoit] [autoit][/autoit] [autoit]

    #region ;funcs für Tab und Contextmenü LVs

    [/autoit] [autoit][/autoit] [autoit]

    Func _DeleteAll()
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($idLV_Player))
    EndFunc ;==>_DeleteAll

    [/autoit] [autoit][/autoit] [autoit]

    Func _Deleteitem()
    _GUICtrlListView_DeleteItemsSelected(GUICtrlGetHandle($idLV_Player))
    EndFunc ;==>_Deleteitem
    #endregion ;funcs für Tab und Contextmenü LVs

    [/autoit] [autoit][/autoit] [autoit]

    Func _saveLVs()
    Local $sFile, $aItem, $hFileOut
    $hFileOut = FileOpen(@ScriptDir & "\" & $sLVdat, 2)
    For $j = 0 To _GUICtrlListView_GetItemCount($idLV_Player) - 1
    $aItem = _GUICtrlListView_GetItemTextString($idLV_Player, $j)
    FileWriteLine($hFileOut, $aItem)
    Next
    FileClose($hFileOut)
    EndFunc ;==>_saveLVs

    [/autoit] [autoit][/autoit] [autoit]

    Func _LoadLVs()
    Local $aItems
    If FileExists($sLVdat) Then
    $aItems = ""
    _FileReadToArray($sLVdat, $aItems)
    If IsArray($aItems) Then
    ;;;_ArrayDisplay($aItems)
    For $j = 1 To $aItems[0]
    GUICtrlCreateListViewItem($aItems[$j], $idLV_Player)
    Next
    EndIf
    EndIf
    EndFunc ;==>_LoadLVs

    [/autoit] [autoit][/autoit] [autoit]

    #cs
    Func _GetJPG($sTitle)
    If FileExists($sMp3Dir & "\" & $sTitle & ".jpg") Then Return
    Local $sQuery = "http://www.youtube.com/results?search_query=" & StringReplace($sTitle, " ", "+") & "&aq=o"
    $sQuery = StringReplace($sQuery, "+-", "+")
    Do
    $sQuery = StringReplace($sQuery, "++", "+")
    Until @extended = 0
    ;consolewrite($sQuery & @CRLF)
    If $sQuery <> "http://www.youtube.com/results?search_query=0&aq=o" Then
    Local $sQSource = BinaryToString(InetRead($sQuery))
    Local $sVideoDescription
    Local $aVideoDescriptions = StringSplit($sQSource, "video-description-", 1)
    _ArrayDisplay($aVideoDescriptions)
    For $x = 1 To $aVideoDescriptions[0]
    If StringInStr($aVideoDescriptions[$x], $sDL_Url) Then
    $sVideoDescription = $aVideoDescriptions[$x]
    ExitLoop
    EndIf
    Next
    If $bJPG Then
    ;;consolewrite($sVideoDescription & @CRLF)
    Local $aJPG = _StringBetween($sVideoDescription, '<img src="', 'default.jpg" class="')
    If IsArray($aJPG) Then
    ;_arrayDisplay($aJPG)
    ;;consolewrite($sFileName & ".jpg" & @CRLF)
    InetGet($aJPG[0] & "default.jpg", $sMp3Dir & "\" & $sTitle & ".jpg")
    EndIf
    EndIf
    EndIf
    EndFunc ;==>_GetTitleSource
    #ce

    [/autoit] [autoit][/autoit] [autoit]

    #region ;ab hier Funktionen von Menü überall plazieren siehe http://www.autoit.de/index.php?page…0614#post110614 von funkey
    Func _MenuPressed()
    Switch @GUI_CtrlId
    Case $idMenueDatei
    ;;consolewrite("MP " & $idfrmMain & "," & $idMenueDatei & "," & $idDateiContext & @CRLF)
    ShowMenu($idfrmMain, $idMenueDatei, $idDateiContext)
    #cs
    Case $idMenueEdit
    ;;consolewrite("MP " & $idfrmMain & "," & $idMenueEdit & "," & $idEditContext & @CRLF)
    ShowMenu($idfrmMain, $idMenueEdit, $idEditContext)
    #ce
    Case $idMenueHelp
    ;;consolewrite("MP " & $idfrmMain & "," & $idMenueHelp & "," & $idHelpContext & @CRLF)
    ShowMenu($idfrmMain, $idMenueHelp, $idHelpContext)
    EndSwitch
    EndFunc ;==>_MenuPressed

    [/autoit] [autoit][/autoit] [autoit]

    Func _About()
    Local $iRet = 0
    Local $sInfo = "" ;$sProgTitel & @CRLF & @CRLF
    $sInfo &= "Noch ein MP3-Player (c) (Auto)Bert 2010" & @CRLF
    $sInfo &= $sUpdateUrl & @CRLF & @CRLF
    $sInfo &= "Credits: funkey für Menu-everywhere" & @CRLF
    $sInfo &= " BugFix für _CreateTmpFile" & @CRLF
    $sInfo &= " Oscar für _SoundGetWaveVolume" & @CRLF
    $sInfo &= @CRLF
    $sInfo &= "(Auto)Bert schrieb NeMP3-P(layer), er unterliegt der Beer-Ware Lizenz" & @CRLF & @CRLF
    $sInfo &= "Solange Sie diesen Vermerk nicht entfernen,können Sie mit der" & @CRLF
    $sInfo &= "Datei machen, was Sie möchten, ausser dekompilieren!" & @CRLF & @CRLF
    $sInfo &= "Wenn wir uns eines Tages treffen und Sie denken, dass NeMP3-P es wert ist," & @CRLF
    $sInfo &= "können Sie mir dafür ein Bier ausgeben. (Auto)Bert" & @CRLF & @CRLF
    If $bNotLized Then
    $sInfo &= "Ich bin bereit diese Lizenzbedingungen zu akzeptieren, mir ist auch bewusst" & @CRLF
    $sInfo &= "dass dekompilieren (=sichtbar machen des Quellcodes) strafbar ist" & @CRLF
    If MsgBox(68, "About " & $sProgTitel, $sInfo, 0, $idfrmMain) = 6 Then $iRet = 1
    Else
    MsgBox(64, "About " & $sProgTitel, $sInfo, 0, $idfrmMain)
    $iRet = 1
    EndIf
    Return $iRet
    EndFunc ;==>_About

    [/autoit] [autoit][/autoit] [autoit]

    Func _Website()
    MsgBox(64, "Thema im AutoIt-Forum", $sUpdateUrl)
    EndFunc ;==>_Website

    [/autoit] [autoit][/autoit] [autoit]

    ; Show a menu in a given GUI window which belongs to a given GUI ctrl
    Func ShowMenu($hWnd, $CtrlID, $nContextID)
    Local $arPos, $x, $y
    Local $hMenu = GUICtrlGetHandle($nContextID)
    ;;consolewrite("SM " & $hMenu & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    $arPos = ControlGetPos($hWnd, "", $CtrlID)

    [/autoit] [autoit][/autoit] [autoit]

    $x = $arPos[0]
    $y = $arPos[1] + $arPos[3]

    [/autoit] [autoit][/autoit] [autoit]

    ClientToScreen($hWnd, $x, $y)
    TrackPopupMenu($hWnd, $hMenu, $x, $y)
    EndFunc ;==>ShowMenu

    [/autoit] [autoit][/autoit] [autoit]

    ; Convert the client (GUI) coordinates to screen (desktop) coordinates
    Func ClientToScreen($hWnd, ByRef $x, ByRef $y)
    Local $stPoint = DllStructCreate("int;int")

    [/autoit] [autoit][/autoit] [autoit]

    DllStructSetData($stPoint, 1, $x)
    DllStructSetData($stPoint, 2, $y)
    ;;consolewrite("CTS1" & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    DllCall("user32.dll", "int", "ClientToScreen", "hwnd", $hWnd, "ptr", DllStructGetPtr($stPoint))

    [/autoit] [autoit][/autoit] [autoit]

    $x = DllStructGetData($stPoint, 1)
    $y = DllStructGetData($stPoint, 2)
    ; release Struct not really needed as it is a local
    $stPoint = 0
    EndFunc ;==>ClientToScreen

    [/autoit] [autoit][/autoit] [autoit]

    ; Show at the given coordinates (x, y) the popup menu (hMenu) which belongs to a given GUI window (hWnd)
    Func TrackPopupMenu($hWnd, $hMenu, $x, $y)
    ;;consolewrite("TPM" & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    DllCall("user32.dll", "int", "TrackPopupMenuEx", "hwnd", $hMenu, "int", 0, "int", $x, "int", $y, "hwnd", $hWnd, "ptr", 0)
    EndFunc ;==>TrackPopupMenu
    #endregion ;ab hier Funktionen von Menü überall plazieren siehe http://www.autoit.de/index.php?page…0614#post110614 von funkey

    [/autoit] [autoit][/autoit] [autoit]

    #region ;Drag and Drop und Doppelklick
    Func WM_DROPFILES_FUNC($hWnd, $msgID, $wParam, $lParam)
    Local $nSize, $pFileName
    Local $nAmt = DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", 0xFFFFFFFF, "ptr", 0, "int", 255)
    For $i = 0 To $nAmt[0] - 1
    $nSize = DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", $i, "ptr", 0, "int", 0)
    $nSize = $nSize[0] + 1
    $pFileName = DllStructCreate("char[" & $nSize & "]")
    DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", $i, "ptr", DllStructGetPtr($pFileName), "int", $nSize)
    ReDim $aDropFiles[$i + 1]
    $aDropFiles[$i] = DllStructGetData($pFileName, 1)
    $pFileName = 0
    Next
    EndFunc ;==>WM_DROPFILES_FUNC

    [/autoit] [autoit][/autoit] [autoit]

    Func _FilesDropped()
    Local $szDrive, $szDir, $szFName, $szExt, $split
    _GUICtrlListView_BeginUpdate($idLV_Player)
    For $i = 0 To UBound($aDropFiles) - 1
    $split = _PathSplit($aDropFiles[$i], $szDrive, $szDir, $szFName, $szExt)
    $szExt = StringUpper($szExt)
    ;;consolewrite($aDropFiles[$i] & ", " & $szExt & @CRLF)
    Switch $szExt
    ;Case ".MP3", ".MPEG", ".MPG", ".WAV" ;
    Case ".MP3", ".WMV", ".WAV"
    ;bei MPEG gehen Fenster mit Video auf werden aber nciht wieder geschlossen
    ;wenn das gerade laufende Video geschlossen wird hängt sich Programm auf
    ;daher keine MPEG MPG
    GUICtrlCreateListViewItem($szFName & "||" & $aDropFiles[$i], $idLV_Player)
    EndSwitch
    Next
    _GUICtrlListView_SetColumnWidth($idLV_Player, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_EndUpdate($idLV_Player)
    EndFunc ;==>_FilesDropped

    [/autoit] [autoit][/autoit] [autoit]

    Func _LoadFiles()
    Local $message = "Um mehrere Dateien auszuwählen, ist die Strg-Taste oder die Shift-Taste zu drücken."
    Local $var = FileOpenDialog($message, $sMp3Dir, " (*.mp3;*.wmv;*.wav)", 1 + 4)
    Local $aFiles, $szDrive, $szDir, $szFName, $szExt
    If @error Then
    MsgBox(4096, "", "Keine Datei(en) ausgewählt")
    Else
    _GUICtrlListView_BeginUpdate($idLV_Player)
    $aFiles = StringSplit($var, "|")
    If $aFiles[0] > 1 Then ;trifft nur bei Mehrfachauwal zu
    ;$aFiles[0] enthält Anzahl der Strings
    ;$aFiles[1] enthält den Pfad für alle ausgewählten Lieder
    ;$aFiles[2] enthält 1. Lied
    ;$aFiles[n+1] enthält n. Lied

    [/autoit] [autoit][/autoit] [autoit]

    ;Rückgabe des Fileopenialogs in einzzenlne Strings für Array splitten
    ;_ArrayDisplay($aFiles) ;Array anzeigen nur zu Verständnisuwecken evtl. aktivieren

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 2 To $aFiles[0]
    _PathSplit($aFiles[$i], $szDrive, $szDir, $szFName, $szExt)
    GUICtrlCreateListViewItem($szFName & "||" & $aFiles[1] & "\" & $aFiles[$i], $idLV_Player)
    Next
    Else ;nur eine Datei ausgewählt
    ;;consolewrite($aFiles[1] & @crlf)
    _PathSplit($aFiles[1], $szDrive, $szDir, $szFName, $szExt)
    GUICtrlCreateListViewItem($szFName & "||" & $aFiles[1], $idLV_Player)
    EndIf
    _GUICtrlListView_SetColumnWidth($idLV_Player, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_EndUpdate($idLV_Player)
    EndIf
    EndFunc ;==>_LoadFiles

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_NOTIFY($hWnd, $msgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code, $aItem
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $idLV_Player And $code = -3 And _GUICtrlListView_GetSelectedCount($idLV_Player) > 0 Then
    $aItem = _GUICtrlListView_GetItemTextArray($idLV_Player)
    ;;consolewrite($aItem[1] & ", " & $aItem[3] & @CRLF)
    $mpToPlay = -1
    _playIT()
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY
    #endregion ;Drag and Drop und Doppelklick

    [/autoit] [autoit][/autoit] [autoit]

    #region updater
    Func _Update()
    IniWrite($sLiz, "Update", "Date", 0) ;damit manuell auf jeden Fall geprüft wird
    _CheckUpdate()
    EndFunc ;==>_Update

    [/autoit] [autoit][/autoit] [autoit]

    Func _CheckUpdate()
    Local $tLastCeck = IniRead($sLiz, "Update", "Date", 0)
    Local $tDiff = _DateDiff('d', "2010/01/01 00:00:00", _NowCalc())
    Local $hFile, $sVar, $iPos, $sVerNr, $sDL_Url, $sDL_Url2
    If $tLastCeck < $tDiff Then
    IniWrite($sLiz, "Update", "Date", $tDiff) ;damit am heutigen Tag nicht mehr geprüft wird
    ToolTip("AutoIt lesen", @DesktopWidth / 2, @DesktopHeight / 2, "Prüfe auf Update ")
    IniWrite($sLiz, "Update", "Status", "Source checken")
    $sVar = _INetGetSource($sUpdateUrl)
    If Not @error Then
    $sVerNr = _StringBetween($sVar, '<title>[Beispiel] NeMP3-P (MP3-Player) Version ', ' - Skripte -')
    If IsArray($sVerNr) Then $sVerNr = $sVerNr[0]
    ;consolewrite($sVerNr & @CRLF)
    If $sVerNr <> $sProgVer Then
    ToolTip("Update von " & $sProgVer & " auf " & $sVerNr, @DesktopWidth / 2, @DesktopHeight / 2, "Prüfe auf Update ")
    $sDL_Url = _StringBetween($sVar, "hat folgende Dateien", 'heruntergeladen') ;dies muss noch exakter werden funktioniert aber
    If IsArray($sDL_Url) Then
    ; _ArrayDisplay($sDL_Url, "Anhänge")
    $sDL_Url = $sDL_Url[1]
    EndIf
    $sDL_Url2 = _StringBetween($sDL_Url, 'href="', '&amp;s=')
    If IsArray($sDL_Url2) Then
    ;_ArrayDisplay($sDL_Url2, "Ref")
    $sDL_Url = $sDL_Url2[1]
    $sDL_Url = StringReplace($sDL_Url, "&amp;", "&")
    EndIf
    ;consolewrite($sDL_Url & @CRLF)
    $iSize = InetGetSize("http://www.autoit.de/" & $sDL_Url)
    If $iSize <> 0 Then ;sollte immer der Fall sein
    $hDown = InetGet("http://www.autoit.de/" & $sDL_Url, @ScriptDir & "\NeMP3.Exe", 1, 1)
    IniWrite($sLiz, "Update", "Status", "Update läuft")
    ToolTip("gestartet", @DesktopWidth / 2, @DesktopHeight / 2, "Update ")
    AdlibRegister("_CheckDone", 1000)
    Else
    ToolTip("fehlerhaft", @DesktopWidth / 2, @DesktopHeight / 2, "Update ")
    Sleep(2000)
    IniWrite($sLiz, "Update", "Status", "fehlgeschlagen")
    EndIf
    Else
    ToolTip("kein Update notwendig", @DesktopWidth / 2, @DesktopHeight / 2, "Update ")
    Sleep(2000)
    EndIf
    Else
    ToolTip("keine Verbidnung" & @CRLF & "probieren Sie es später" & @CRLF & "noch eimal!", @DesktopWidth / 2, @DesktopHeight / 2, "Update ")
    Sleep(2000)
    EndIf
    EndIf
    ToolTip("")
    EndFunc ;==>_CheckUpdate

    [/autoit] [autoit][/autoit] [autoit]

    Func _CheckDone()
    Local $aData = InetGetInfo($hDown) ; Hole alle Informationen.
    Local $iProz = Round($aData[0] / $iSize * 100, 0)
    ;;consolewrite($iProz & @CRLF)
    ToolTip($iProz, @DesktopWidth / 2, @DesktopHeight / 2, "Update ")
    If Not $aData[2] Then Return
    If $aData[3] Then
    If FileMove(@ScriptDir & "\NeMP3.Exe", @ScriptDir & "\NeMP3-P.Exe", 1) Then
    IniDelete($sLiz, "Update", "Status")
    ToolTip("erfolgreich", @DesktopWidth / 2, @DesktopHeight / 2, "Update ")
    Sleep(2000)
    Else
    ;von Hand kopieren
    EndIf
    Else
    ToolTip("fehlerhaft", @DesktopWidth / 2, @DesktopHeight / 2, "Update ")
    Sleep(2000)
    IniWrite($sLiz, "Update", "Status", "fehlgeschlagen")
    EndIf
    AdlibUnRegister("_CheckDone")
    ToolTip("")
    EndFunc ;==>_CheckDone
    #endregion updater

    [/autoit]

    Im Anhang befindet sich das Include-File BilderDaten.au3 als Zip (Sorry, mein INet ist zur Zeit zu schlecht (ca. 4KB/s down und laufend Abbrüche beim Uploaden)bis dahin müssen die Ungeduldigen die Daten aus der Vorgängerversion herauskopieren: Zeile 59 region ;Binärdaten für Bilder bis Zeile 129 #endregion ;Binärdaten für Bilder. Ich stelle diese Datei, die neue EXE und die Prüfung bei Virustotal ein, sobald das INet wieder besser funktioniert.
    Drei Änderung bei Version 0.8.3.6:

    • ich habe ins Dateimenü einen FileOpen-Dialog integriert, so dass man jetzt auch darüber MP3's in die ListView aufnehmen kann
    • Ins Einstellungsmenü den Startordner aufgenommen
    • beim Ausschneiden aus JaYT-DwiMP3-P versehentlich Variablen nicht angepasst, so dass das Contextmenü der Listview zum Löschen nicht funktionierte, dieser Bug ist gefixt

    Bei Version 0.8.3.4.1

    • WAV-Dateien zum Abspielen zugelassen
    • eine Auto-Update Funktion für die Exe eingebaut. Achtung während auf Update geprüft wird sind alle anderen Funktionen nicht verfügbar (Grund InetGetSource, wenn jemand eine andere Lösung kennt bitte posten), wenn eine neue Versionsnr. vorliegt (anhand der Überschrift dieses Postes) wird diese heruntergeladen. Ab diesem Zeitpunkt sind auch wieder alle anderen Funktionen (dank InetGet) verfügbar. Der Status wird über Tooltips angezeigt


    Bei Verison 0.8.4.6 wird wenn _SoundGetWaveVolume 0 zurückgibt dieser Wert nicht mehr in die Ini geschrieben. Ausserdem wurde ein Slider für die Positionierng eingebaut, dieser ist aber noch sehr buggy. (Versions-Nr. kommt daher, dass ich Änderungen in JaYT-DwiMP3-P im Playerbereich hier gleich nachvollziehe, bzw. umgedreht damit ich einen übereinstimmenden Programmstand habe.

    Die Virenwächter scheinen jetzt mein Programm zu akzeptieren, denn Ergebnis ist 0,
    siehe: http://www.virustotal.com/de/analisis/fd…6b5f-1281191718

    Die ebenfalls im Zip [Edit5] im Anhang[/Edit5] befindliche NeMP3-P.exe darf nicht verändert werden und es darf auch keine andere als dieses Original NeMP3-P.exe (bzw. spätere von mir hochgesltelte Updates ) in Umlauf gebracht werden. Den Skriptcode könnt ihr als Beispiel verwenden und auch Teile davon direkt übenehmen. Ich bestehe dann aber auf einer Namensnennung von mir bzw. sollte es sich um Funktionen von


    auf deren Namensnennung zumindest als Kommentar im Skript, eine Namensnennung von mir bei den Credits einer kompilierten Exe ist nicht nötig.

    How to Use: Einfach MP3-Files auf das NeMP3-P Fenster ziehen und fallen lassen oder [ Die ListView wird beim beenden gespeichert und beim nächsten Programmstart wider geladen.
    Zu beachten ist, wenn mehrere Lieder ausgewählt sind, werden nur die ausgewählten Lieder gespielt.
    Falls sich im gleichen Ordner wie das zu spielende Lied eine JPG-Datei mit dem gleichen Namen wie das Lied (JPG anstelle MP3) befindet, wird dieses standardmäßig als Hintergrundbild eingeblendet. Wird keines gefunden wird automatisch wieder das im Source hinterlegte Bild verwendet. Dieses Feature kann über Einstellungen geändert werden.
    Hier noch ein ScreenShot:
    autoit.de/wcf/attachment/9909/

    Da das Skript aus JaYT-DwiMP3-P ausgeschnitten ist sind sicherlich unnötige Variablen und evtl. auch noch Skriptzeilen vorhanden, also nicht wundern.

    Über Anregungen, Kritik, Bugmeldungen freue ich mich,

    Edit1: damit ich die Thread-ID für den Source
    Edit2: aus Angst um Trademarkverletzung umbenannt
    Edit4+5: kleines BugFix
    Edit6: auf Grund von Oscar Auflistng der zu nennenden Authoren für funcs korrigiert
    Edit7: Skript von Version 0.8.3.6 eingestellt BugFix Contextmenü und Erweiterung, jetzt kann man auch MP3's über das Menü hinzufügen
    Edit8: Skript von Version 0.8.4.1 eingestellt AutoUpdate-Funktion eingebaut (EXE folgt noch)
    Edit13: Skript und Exe von Version 0.8.4.6 eingestellt
    Edit15: Skript (in Spoiler) und Exe von Version 0.8.4.7 eingestellt (Slider zum navigieren innerhalb eines Liedes eingebaut)
    Edit16: Link zur Analyse auf Viren ausgetauscht, Ergebnis 0!
    Edit17: Skript (im Anhang) ausgetauscht

    Bekannte Bugs:

    • Slider für Positionierung innerhalb des Liedes erledigt
    • Vorschau-/Coverbilder werden nicht angezeigt erledigt

    vor 0.8.4.7 51 mal downgeloaded

    mfg (Auto)Bert

  • Hallo Oscar,

    trotzdem danke fürs finden und posten. In den Credits der Exe werde ich dich trotzdem lassen, nur meinen Eröffnungspost auf Author unbekannt ändern,

    mfg (Auto)Bert

  • Hi AutoBert!

    Schöner Code , Läuft bei mir auch super!
    Was hälst du davon wenn du noch ein .wav - mp3 wandlung einbaust?? ( erweiterung)
    Hätte da ein Code schni´.... 8)


    LG Kleiner

  • Hallo kleiner27,

    WAV's könnten auch jetzt schon abgespielt werden. Dazu muss nur

    _FilesDropped
    [autoit]

    ...
    Case ".MP3", ".WMV", ".WAV"
    ...

    [/autoit]

    und

    _Loadiles (ab Ver.: 0.8.3.6
    [autoit]

    ...
    Local $var = FileOpenDialog($message, $sMp3Dir," (*.mp3;*.wmv;*.wav)", 1 + 4)
    ...

    [/autoit]

    angepasst werden,

    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (27. Mai 2010 um 16:11) aus folgendem Grund: Formatierung

  • Hallo DeepRed92,

    danke für den Hinweis. Aber mein Player heisst NeMP3-P. Ich habe schon dahin umbenannt da Wunschname (siehe ScreenShot in #1) evtl. mit Trademark belegt ist und AutoBertsMP3-Player zu trivial ist,

    mfg (Auto)Bert

  • Achso ok ^^
    Tipp, ich würde es so machen, dass man mit Hilfe der ProgressBar auf eine beliebige Stelle vor bzw. zurückspulen kann. Ich glaub Oscar hatte dafür mal eine passende Funktion geschrieben. An sonsten ganz gut gemacht. Funktioniert auch unter Windows 7 64 Bit ;)

    danke für die Rückmeldung, ich habe selbst WinXP Prof SP3. Zum spulen werde ich warscheins einen Slider nehmen.

    @all Bin am Überlegen, ob ich

    • eine Möglichkeit einbaue (wie im JaYT-DwiMP3-P) um evtl. noch fehlende Vorschau- bzw. Coverbilder downzuloaden
    • MPeg zulassen soll, weiss aber nicht wie ich die durch _Soundplay() automatisch erzeugten Fenster nach Ende eines Liedes wieder schliessen kann. Beim Programmende werden sie automatisch mit geschlossen.

    , was haltet ihr davon?

    mfg (Auto)Bert


  • MPeg zulassen soll, weiss aber nicht wie ich die durch _Soundplay() automatisch erzeugten Fenster nach Ende eines Liedes wieder schliessen kann. Beim Programmende werden sie automatisch mit geschlossen.
    [/list], was haltet ihr davon?


    Gleich konsequent den Player auf bass.dll Basis umstellen.

    Ansonsten - gute Arbeit. :thumbup:

  • Update auf Version 0.8.4.1 siehe Post #1

    ab dieser Version ist eine AutoUpdate-Version in die EXE eingebaut. Zusätzlich sind jetzt auch WAV-Dateien zum Abspielen zugelassen.

    nuts,

    Gleich konsequent den Player auf bass.dll Basis umstellen.

    Ansonsten - gute Arbeit. :thumbup:

    kann ich denn mit der bass.dll auch so einfach die Videos in einem Fenster darstellen?

    mfg (Auto)Bert

  • Achso dir geht es um die Videos.
    Also da wird das Directshow-System angezapft, dass ist äußerst wacklig und nun wirklich nicht schön. Ob das überhaupt gewollt ist?

    Anbei mal eine Directshow UDF für die Videowiedergabe.
    Mein Tipp -> übergib diese Sachen lieber an ein Programm das sich damit auskennt wie z.B. mpc-hc (opensource) und stelle für die Musikwiedergabe auf die bass.dll um. Da gibts auch alle Möglichkeiten (asio, visualiserungen usw.) und ganz mächtige UDF's.

  • neues Update siehe Post #1,

    in Version 0.8.4.7 die Bugs aus dem Slider behoben. Übrigens können bisherige Benutzer von NeMP3-P das Update der EXE auch über "Hilfe|Udate verfügbar?" herunterladen. Der Source ist in Post #1 in einem Spoiler,

    mfg (Auto)Bert