#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.8
#AutoIt3Wrapper_Res_LegalCopyright=(Auto)Bert Lizenz: Beerware
#AutoIt3Wrapper_Res_Language=1031
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------

	AutoIt Version: 3.3.6.1
	Author:						AutoBert:	MainWindow with personalized Icons and Player http://www.autoit.de/index.php?page=Thread&postID=162461#post162461

	CoAuthors					funkey: 	Menu-everywhere	http://www.autoit.de/index.php?page=Thread&postID=110614#post110614
	(from adapted functions)	BugFix:		_CreateTmpFile 	http://www.autoit.de/index.php?page=Thread&postID=99705#post99705
	_CreateTmpBinaryCall for creating the binary Data "
	Oscar:		_SoundGetWaveVolume() http://www.autoit.de/index.php?page=Thread&postID=133826#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 ----------------------------------------------------------------------------

#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>

#include "BilderDaten.au3"

Opt("GUIOnEventMode", 1) ;ONEvent Mode.
Opt("MustDeclareVars", 1)

Func _CreateTmpFile($sFileName, $sBin)
	;BugFix
	;	erstellt im TEMPDIR die Datei $sFileName mit Daten von $sBin
	;http://www.autoit.de/index.php?page=Thread&postID=99705#post99705
	Local $sFile = @TempDir & "\" & $sFileName
	Local $hFileOut = FileOpen($sFile, 18)
	FileWrite($hFileOut, Binary($sBin))
	FileClose($hFileOut)
	;;consolewrite($sFile & @CRLF)
	Return $sFile
EndFunc   ;==>_CreateTmpFile


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.8"
Global $mpToPlay = -1, $mpToPlayinAR, $htoPlay, $bNaviEnable = False, $istdVl, $iYTVl, $bNotLized = False, $bJPG = True, $bAutoUpdate = True



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

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")

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)

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)

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)

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

$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)

#region ;ab hier Menü überall plazieren siehe http://www.autoit.de/index.php?page=Thread&postID=110614#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)

Global $idMenueDatei = GUICtrlCreateLabel('&Datei', 5, 8, 40, 18, 0x201)
GUICtrlSetFont(-1, 10, 800)
GUICtrlSetResizing(-1, $GUI_DOCKAll)
GUICtrlSetOnEvent(-1, '_MenuPressed')

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')

Global $idMenueHelp = GUICtrlCreateLabel("&Hilfe", $iWidht - 100, 8, 45, 18, 0x201)
GUICtrlSetFont(-1, 10, 800)
GUICtrlSetResizing(-1, $GUI_DOCKMENUBAR + $GUI_DOCKRIGHT)
GUICtrlSetOnEvent(-1, '_MenuPressed')

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')

GUICtrlCreateLabel('', -2, 28, $iWidht + 4, 2, 0x1000)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKTOP)

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=Thread&postID=110614#post110614 von funkey


;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


If FileExists($sLiz) Then
	_Config()
Else
	$bNotLized = True
	If Not _about() Then Exit
	$bNotLized = False
	;;consolewrite("Lizenz wurde akzeptiert" & @CRLF)
	_config()
	_SaveConfig()
EndIf

AdlibRegister("_resized")
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUIRegisterMsg($WM_DROPFILES, "WM_DROPFILES_FUNC")

While 1
	Sleep(1000)
WEnd

#region ;funcs für Fensterhandling
Func _Config()
	Local $aPos[4], $i, $j
	_initConfig()
	$istdVl = _SoundGetWaveVolume()
	If $istdVl <> 0 Then IniWrite($sLiz, "Volume", "Standard", $istdVl)

	$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", "")

	Local $i = IniRead($sLiz, "Pos", "Tab", 0)
	;WinWaitActive($idfrmChild, "", 5)
	_FadeIn($aGuis, 50, 180, 10)
	;_resized()
EndFunc   ;==>_Config

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

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}")

	;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

Func _Close()
	MsgBox(0, "", "Schliessen")
	$bDoNotSave = True
	_FadeOut($aGuis, 180, 0, 30)
	Exit
EndFunc   ;==>_Close

Func _Minimize()
	GUISetState(@SW_MINIMIZE, $idfrmMain)
EndFunc   ;==>_Minimize

#cs
	Func _Maximize()
	GUISetState(@SW_MAXIMIZE, $idfrmMain)
	_Resized()
	GUICtrlSetState($idicoMaxi, $GUI_HIDE)
	GUICtrlSetState($idicoNorm, $GUI_SHOW)
	EndFunc   ;==>_Maximize

	Func _Normalize()
	GUISetState(@SW_RESTORE, $idfrmMain)
	_Resized()
	GUICtrlSetState($idicoNorm, $GUI_HIDE)
	GUICtrlSetState($idicoMaxi, $GUI_SHOW)
	EndFunc   ;==>_Normalize
#ce

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

Func _hide()
	GUISetState(@SW_HIDE, $idfrmMain)
	GUISetState(@SW_HIDE, $idfrmChild)
	HotKeySet("{F6}", "_show")
EndFunc   ;==>_hide

Func _show()
	GUISetState(@SW_SHOW, $idfrmMain)
	GUISetState(@SW_SHOW, $idfrmChild)
	_resized()
	HotKeySet("{F6}", "_hide")
EndFunc   ;==>_show

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

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

Func _OpenJPG()
	$sjpgBckgrnd = FileOpenDialog("Hintergrundbild auswählen", @ScriptDir & "\bin", "Images (*.jpg)", 1, "", $idfrmMain)
	If $sjpgBckgrnd <> "" Then GUICtrlSetImage($idjpgBckgrnd, $sjpgBckgrnd)
EndFunc   ;==>_OpenJPG

;#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()

	GUICtrlSetState($idcheckJPG, $bJPG)
	GUICtrlSetState($idCheckUpdate, $bAutoUpdate)
	GUICtrlSetData($idedtSave, $sMp3Dir)
	GUISetState(@SW_SHOW, $idfrmInit)
EndFunc   ;==>_Initialize

Func _initConfig()
	$sMp3Dir = IniRead($sLiz, "laden", "Pfad", @MyDocumentsDir & "\Eigene Musik")
	$bJPG = IniRead($sLiz, "speichern", "JPG", "1")
	$bAutoUpdate = IniRead($sLiz, "Update", "Automatisch", "1")
EndFunc   ;==>_initConfig

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

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

Func _exitInit()
	GUISetState(@SW_HIDE, $idfrmInit)
	GUISetState(@SW_ENABLE, $idfrmMain)
	GUISetState(@SW_ENABLE, $idfrmChild)
	WinActivate($idfrmMain)
EndFunc   ;==>_exitInit
#endregion ;funcs für Fensterhandling

#region ;funcs fürs Abspielen
Func _SoundGetWaveVolume() ;Oscar http://www.autoit.de/index.php?page=Thread&postID=133826#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

Func _SetVol()
	SoundSetWaveVolume(GUICtrlRead($idsliderVol))
EndFunc   ;==>_SetVol

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

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

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

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

Func _PlayNaviEnable()
	GUICtrlSetData($idbtnPlayPause, "&abspielen")
	GUICtrlSetState($idbtnFirst, $GUI_EnABLE)
	GUICtrlSetState($idbtnPrev, $GUI_EnABLE)
	GUICtrlSetState($idbtnNext, $GUI_EnABLE)
	GUICtrlSetState($idbtnLast, $GUI_EnABLE)
EndFunc   ;==>_PlayNaviEnable

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

Func SliderFalse()
;	ConsoleWrite("Slider False" & @CRLF)
	$bSlider = False
EndFunc   ;==>SliderFalse

Func SliderTrue()
;	ConsoleWrite("Slider True" & @CRLF)
	$bSlider = True
EndFunc   ;==>SliderTrue

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

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

Func _playStop()
	AdlibUnRegister("_CheckPlayer")
	_SoundStop($htoPlay)
	;if WinExists($sNewTitle) then WinClose($sNewTitle)
	$htoPlay = ""
	GUICtrlSetData($idbtnPlayPause, "&abspielen")
	If $bNaviEnable Then _PlayNaviEnable()
	$mpToPlay = 0
EndFunc   ;==>_playStop

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

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

Func _playRandom()
EndFunc   ;==>_playRandom

#endregion ;funcs fürs Abspielen

#region ;funcs für Tab und Contextmenü LVs

Func _DeleteAll()
	_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($idLV_Player))
EndFunc   ;==>_DeleteAll

Func _Deleteitem()
	_GUICtrlListView_DeleteItemsSelected(GUICtrlGetHandle($idLV_Player))
EndFunc   ;==>_Deleteitem
#endregion ;funcs für Tab und Contextmenü LVs

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

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

#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

#region ;ab hier Funktionen von Menü überall plazieren siehe http://www.autoit.de/index.php?page=Thread&postID=110614#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

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

Func _Website()
	MsgBox(64, "Thema im AutoIt-Forum", $sUpdateUrl)
EndFunc   ;==>_Website

; 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)

	$arPos = ControlGetPos($hWnd, "", $CtrlID)

	$x = $arPos[0]
	$y = $arPos[1] + $arPos[3]

	ClientToScreen($hWnd, $x, $y)
	TrackPopupMenu($hWnd, $hMenu, $x, $y)
EndFunc   ;==>ShowMenu

; Convert the client (GUI) coordinates to screen (desktop) coordinates
Func ClientToScreen($hWnd, ByRef $x, ByRef $y)
	Local $stPoint = DllStructCreate("int;int")

	DllStructSetData($stPoint, 1, $x)
	DllStructSetData($stPoint, 2, $y)
	;;consolewrite("CTS1" & @CRLF)

	DllCall("user32.dll", "int", "ClientToScreen", "hwnd", $hWnd, "ptr", DllStructGetPtr($stPoint))

	$x = DllStructGetData($stPoint, 1)
	$y = DllStructGetData($stPoint, 2)
	; release Struct not really needed as it is a local
	$stPoint = 0
EndFunc   ;==>ClientToScreen

; 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)

	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=Thread&postID=110614#post110614 von funkey

#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

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

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

			;Rückgabe des Fileopenialogs in einzzenlne Strings für Array splitten
			;_ArrayDisplay($aFiles)	;Array anzeigen nur zu Verständnisuwecken evtl. aktivieren

			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

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

#region updater
Func _Update()
	IniWrite($sLiz, "Update", "Date", 0) ;damit manuell auf jeden Fall geprüft wird
	_CheckUpdate()
EndFunc   ;==>_Update

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

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