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
#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 Version: 3.3.6.1
Author: AutoBert: MainWindow with personalized Icons and Player http://www.autoit.de/index.php?page…2461#post162461
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 ----------------------------------------------------------------------------
#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"
[/autoit] [autoit][/autoit] [autoit]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…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.7"
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…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)
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…0614#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…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
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
[/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
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…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
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)
[/autoit] [autoit][/autoit] [autoit]$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))
[/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
; 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…0614#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="', '&s=')
If IsArray($sDL_Url2) Then
;_ArrayDisplay($sDL_Url2, "Ref")
$sDL_Url = $sDL_Url2[1]
$sDL_Url = StringReplace($sDL_Url, "&", "&")
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
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
- BugFix: _CreateTmpFile Fremddateien "includen" (ohne FileInstall)
- funkey: Menu-everywhere Menü überall platzierenhttp://www.autoit.de
-
Oscar: _SoundGetWaveVolume [ offen ] Gibt es eine SoundGetWaveVolume() func.?Author ist nicht bekannt wenn er sich meldet wird er natürlich hier aufgenommen
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