CODICE
; Installazione...
If Not FileExists(@appDataDir&"\mmp") Then
DirCreate(@AppDataDir&"\mmp")
FileInstall("mmp.bmp",@AppDataDir&"\mmp\mmp.bmp")
FileInstall("play.bmp",@appdatadir&"\mmp\play.bmp")
FileInstall("skni3.bmp",@appdatadir&"\mmp\skni3.bmp")
FileInstall("pause.bmp",@AppDataDir&"\mmp\pause.bmp")
FileInstall("skin2.bmp",@appdatadir&"\mmp\skin2.bmp")
FileInstall("stop.bmp",@appdatadir&"\mmp\stop.bmp")
ElseIf FileExists(@appdatadir&"\mmp") And Not FileExists(@appdatadir&"\mmp\skni3.bmp") Then
DirCreate(@AppDataDir&"\mmp")
FileInstall("mmp.bmp",@AppDataDir&"\mmp\mmp.bmp")
FileInstall("play.bmp",@appdatadir&"\mmp\play.bmp")
FileInstall("skni3.bmp",@appdatadir&"\mmp\skni3.bmp")
FileInstall("pause.bmp",@AppDataDir&"\mmp\pause.bmp")
FileInstall("skin2.bmp",@appdatadir&"\mmp\skin2.bmp")
FileInstall("stop.bmp",@appdatadir&"\mmp\stop.bmp")
EndIf
#cs
Created by Gianlu-thebest..
Vesion 3.1 Alpha 1
#ce
SoundSetWaveVolume(80)
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.0
Author: ACIDBURN16 & Gianlu-thebest & Gigi 32
---Obbiettivi---
? > Playlist
v > Lettore video
? > Effetti WMP
v > Modalità Loop
v > Movimento canzone con lo slider
x > Riconoscimento artista
; Ma ca**o ...
#ce ----------------------------------------------------------------------------
#include <Audio.au3>
#include <WindowsConstants.au3>
#include <GUISlider.au3>
#include <Misc.au3>
#include <GDIPlus.au3>
#include <GUIListBox.au3>
Opt("GUIOnEventMode",1)
; Script Start - Add your code below here
HotKeySet("^e","Force_Close")
HotKeySet("{F10}","vis")
$trasparenza = IniRead("conf.ini","Trasparenza","trasparenza",255)
$messaggio = IniRead("conf.ini","Messaggio","novita'","no")
; Variabili
Global $loop = 0
Global $ex = False
Global $4
Global $vol
Global $path
Global $Debug_S = False
Global $file
Const $messaggio_file = "Versione 3.1"&@CR&"- Corretti bug"&@CR&"- "&@CR&"- Effetti grafici!"&@CR&"- È possibile muovere la canzone con lo slider!"&@CR&"- Ridotto ulteriormente il consumo di CPU!"&@CR&"- Molto altro!"&@CR&@CR&"Speriamo Continuerà ad usare My Media Player"
Const $colore = 0x408efa
Const $desktop = @DesktopHeight
Const $colore2 = 0x87d2ee
Const $azzurro = 0x3886FC
If $messaggio = "no" Then
MsgBox(64,"Info",$Messaggio_file)
IniWrite("conf.ini","Messaggio","novita'","Si")
EndIf
#region ### GUI ###
$Gui = GUICreate("My Media Player 3", 800, 650,10,10,$WS_POPUP)
GUISetOnEvent(-3,"EXIT_B",$Gui)
GUICtrlSetTip(-1,"My Media Player 2: Il lettore multimediale migliore che c'è!")
GUISetIcon(@ScriptDir & "\icona.ico")
$skin = GUICtrlCreatePic(@AppDataDir&"\mmp\skni3.bmp",0,0,800,650)
GUICtrlSetTip(-1,"My Media Player 2: Il lettore multimediale migliore che c'è!")
GUICtrlSetState(-1,128)
GUICtrlSetResizing($skin,1)
GUICtrlCreateLabel('Benvenuti su my Media player!',300,20)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetBkColor(-1,-2)
$b = GUICtrlCreateLabel("Artista: ",50,250,200)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetBkColor(-1,-2)
$c = GUICtrlCreateLabel("Titolo: " ,50,275,200)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetBkColor(-1,-2)
$d = Guictrlcreatelabel("Album: ",50,300,200)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetBkColor(-1,-2)
$e = GUICtrlCreateLabel("Durata: ",50,325,160,30)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetBkColor(-1,-2)
GUICtrlSetTip(-1,"Durata e progresso della canzone")
$f = GUICtrlCreateLabel("Volume: ",400,550,60,20)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetBkColor(-1,-2)
GUICtrlSetTip(-1,"Volume: "&$vol)
$filel=GUICtrlCreateLabel("File: ",50,225,250,60)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetBkColor(-1,-2)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlCreateLabel("Altre funzioni",550,80)
GUICtrlSetOnEvent(-1,"Advanced")
GUICtrlSetBkColor(-1,-2)
GUICtrlSetTip(-1,"Apre una finestra dove sono disponibili altre funzioni")
GUICtrlCreateLabel("Controlla aggiornamenti",630,80)
GUICtrlSetOnEvent(-1,"AGGIORNAMENTO")
GUICtrlSetBkColor(-1,-2)
GUICtrlSetTip(-1,"Controlla se sono disponibili aggiornamenti per My Media Player")
GUICtrlCreateLabel("Apri",200,40)
GUICtrlSetOnEvent(-1,"_artist")
GUICtrlSetBkColor(-1,-2)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetTip(-1,"Apre un file multimediale")
GUICtrlCreateLabel("Sposta finestra",380,5)
GUICtrlSetBkColor(-1,-2)
GUICtrlSetOnEvent(-1,"M")
; Bottoni
GUICtrlCreateButton("X",770,2,25,25)
GUICtrlSetOnEvent(-1,"exit_b")
GUICtrlSetTip(-1,"Chiudi")
GUICtrlSetBkColor(-1,0xFF0000)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlCreateButton("_",745,2,25,25)
GUICtrlSetOnEvent(-1,"min")
GUICtrlSetBkColor(-1,0x0)
GUICtrlSetColor(-1,$colore)
GUICtrlSetTip(-1,"Minimizza")
GUICtrlCreateButton("__",720,2,25,25)
GUICtrlSetOnEvent(-1,"rid")
GUICtrlSetBkColor(-1,0x0)
GUICtrlSetColor(-1,$colore)
GUICtrlSetTip(-1,"Riduci nella tray")
GUICtrlCreateButton("X",466,544,25,25)
GUICtrlSetBkColor(-1,0x0)
GUICtrlSetTip(-1,"Mute")
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetFont(-1,12,10,0,"Webdings")
GUICtrlSetOnEvent(-1,"mute")
GUICtrlCreateButton("U",491,544,25,25)
GUICtrlSetOnEvent(-1,"max")
GUICtrlSetBkColor(-1,0x0)
GUICtrlSetTip(-1,"Max Volume")
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetFont(-1,12,10,0,"webdings")
$lop=GUICtrlCreateButton("q",516,544,25,25)
GUICtrlSetOnEvent(-1,"loop")
GUICtrlSetBkColor(-1,0x0)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetFont(-1,12,10,0,"webdings")
GUICtrlCreateButton("Apri File Selezionato",375,450)
GUICtrlSetOnEvent(-1,"opnpl")
GUICtrlSetBkColor(-1,0x0)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlCreateButton("Successivo",485,450)
GUICtrlSetOnEvent(-1,"nextt")
GUICtrlSetBkColor(-1,0x0)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlCreateButton("Effetti Grafici(GDI+)",375,90)
GUICtrlSetOnEvent(-1,"GD")
GUICtrlSetBkColor(-1,0x0)
GUICtrlSetColor(-1,0xFFFFFF)
; Immagini
$0 = GUICtrlCreatePic(@AppDataDir&"\mmp\mmp.bmp",5,5,76,75)
GUICtrlSetTip(-1,"My Media Player")
GUICtrlSetBkColor(-1,-2)
GUICtrlSetOnEvent(-1,"info")
$1 = GUICtrlCreatePic(@AppDataDir&"\mmp\play.bmp",300,555,50,50)
GUICtrlSetBkColor(-1,-2)
GUICtrlSetOnEvent(-1,"play")
GUICtrlSetTip(-1,"Riproduce un file")
$2 = GUICtrlCreatePic(@AppDataDir&"\mmp\stop.bmp",250,555,50,50)
GUICtrlSetTip(-1,"Stoppa un file musicale")
GUICtrlSetBkColor(-1,-2)
GUICtrlSetOnEvent(-1,"stop")
$10 = GUICtrlCreateIcon(@AppDataDir&"\mmp\icona.ico",-1,470,10,50,50)
GUICtrlSetBkColor(-1,-2)
GUICtrlSetTip(-1,"My Media Player")
;~ Creazione slider
$slider = GUICtrlCreateSlider(410,570,190,25)
GUICtrlSetOnEvent($slider,"_Volume")
GUICtrlSetBkColor($slider,$colore)
$sliderd = GUICtrlCreateSlider(220,513,340,20)
GUICtrlSetOnEvent($sliderd,"Move")
GUICtrlSetBkColor($sliderd,$colore)
;List
$list = GUICtrlCreateList("",320,150,430,300)
GUISetState(@SW_SHOW,$GUI)
$vl = IniRead("conf.ini","Volume","vale",80)
GUICtrlSetData($slider,$vl)
GUICtrlSetData($f,"Volume: "&$vl)
#endregion
AdlibRegister("barra",1000)
AdlibRegister("temp",1000)
While 1
Sleep(1000)
WEnd
Func EX()
GUIDelete($GUI1)
_GDIPlus_GraphicsDispose($graf)
_GDIPlus_PenDispose($p)
AdlibUnRegister("ef")
EndFunc
;----------------
Func gd()
if MsgBox(52,"Alpha","Mi dispiace, questa è una versione alpha. Gli effetti grafici non sono applicati correttamente."&@CR&@CR&"Si desidera avviare?") = 6 Then
Global $GUI1=GUICreate("Effetti 0.1",400,400,0,0)
Global $graf=_GDIPlus_GraphicsCreateFromHWND($Gui1)
Global $p=_GDIPlus_PenCreate(0xFF&Random(11,99,1)&Random(11,99,1)&Random(11,99,1)&Random(11,99,1),0.1)
GUISetState(@SW_SHOW,$GUI1)
GUISetOnEvent(-3,"EX",$GUI1)
AdlibRegister("ef",1)
EndIf
EndFunc
;-----------------
Func opnpl()
_SoundClose($4)
$4 = GUICtrlRead($List)
$artist1 = _GetExtProperty($path, 16)
$title1 = _GetExtProperty($path, 10)
$album1 = _GetExtProperty($path, 17)
GUICtrlSetData($b,"Artista: "&$artist1)
GUICtrlSetData($c,"Titolo: "&$title1)
GUICtrlSetData($d,"Album: "&$album1)
GUICtrlSetData($filel,"File: "&_FileGetName($4))
$4=_SoundOpen($4)
GUICtrlSetImage($1,@AppDataDir&"\mmp\pause.bmp")
_SoundPlay($4)
EndFunc
;------------------
Func ef()
$p=_GDIPlus_PenCreate(0xFF&Random(11,99,1)&Random(11,99,1)&Random(11,99,1)&Random(11,99,1),1)
_GDIPlus_GraphicsDrawLine($graf,Random(0,400),Random(0,400,1),Random(0,400,1),Random(0,400,1),$p)
EndFunc
;------------------
;~ Func apri_lite($sFile = 0)
;~ If $sFile = 0 Then
;~ $file = FileOpenDialog("Open",@mydocumentsdir,"All (*.*)")
;~ $4=_SoundOpen($file)
;~ _SoundPlay($4)
;~ temp()
;~ barra()
;~ Else
;~ $4 = _SoundOpen($sFile)
;~ _SoundPlay($4)
;~ EndIf
;~ EndFunc
;------------------
Func m()
While Not _IsPressed("0D")
ToolTip("Appena finito premere Invio")
Sleep(10)
ControlMove("My Media Player 3","",$GUI,MouseGetPos(0)-400,MouseGetPos(1))
WEnd
ToolTip("")
EndFunc
;-------------------
Func temp()
If GUICtrlRead($e) <> "Durata: "&_SoundPos($4)&" di "&_SoundLength($4) Then GUICtrlSetData($e,"Durata: "&_SoundPos($4)&" di "&_SoundLength($4))
EndFunc
;-------------------
Func Move()
$iMs = _GUICtrlSlider_GetPos($sliderd)
mciSendString("set " & FileGetShortName($4) & " time format miliseconds")
mcisendstring("seek " & FileGetShortName($4) & " to " & $iMs)
_SoundPlay($4)
EndFunc
;-------------------
Func Barra()
_GUICtrlSlider_SetRangeMax($sliderd,_Soundlength($4,2))
_GUICtrlSlider_SetPos($sliderd,_SoundPos($4,2))
EndFunc
;-------------------
Func loop()
If $loop = True Then
AdlibUnRegister("LoopActive")
GUICtrlSetBkColor($lop,0x0)
$loop = False
ElseIf $loop = False Then
AdlibRegister("LoopActive",10)
GUICtrlSetBkColor($lop,$azzurro)
$loop = True
EndIf
EndFunc
;-------------------
Func LoopActive()
If _SoundPos($4) = _SoundLength($4) Then
Sleep(100)
_SoundStop($4)
_SoundPlay($4)
EndIf
EndFunc
;-------------------
Func _INetGetSource($s_URL, $bString = True)
Local $sString = InetRead($s_URL, 1)
Local $nError = @error, $nExtended = @extended
If $bString Then $sString = BinaryToString($sString)
Return SetError($nError, $nExtended, $sString)
EndFunc ;==>_INetGetSource
;-------------------
Func Max()
GUICtrlSetData($slider,100)
GUICtrlSetData ($f,"Volume: "&100)
SoundSetWaveVolume(100)
EndFunc
;-------------------
Func AGGIORNAMENTO()
Const $source = _InetGetSource("http://fileinternealt.altervista.org/agg.txt")
Const $source2 = _InetGetSource("http://fileinternealt.altervista.org/url.txt")
If $source=3.1 Then
MsgBox(32,"Controllo aggiornamenti","Non è disponibile nessun aggiornamento... Versione "&$source,15,$Gui)
ElseIf $source = "" Then
MsgBox(48,"Errore","L'aggiornamento ha riscontrato un'errore:"&@CR&"L'aggiornamento è stato disattivato in questa versione"&@CRLF&"oppure non è possibile connettersi a internet."&@CR&@CR&"L'aggiornamento, quando disponibile, si attiverà.")
Else
$domanda2=MsgBox(32+4,"Nuova versione!","È disponibile una nuova versione, "&$source&", scaricarla?",15,$Gui)
If $domanda2=6 Then
$salva = FileSaveDialog("Dove salvare?",@MyDocumentsdir,"ALL(*.*)")
If Not @error Then
If Not StringRight($salva,3) = "exe" Then
$salva=$salva&".exe"
EndIf
ToolTip("Attendere...")
InetGet($source2,$salva)
ToolTip("")
$domanda3=MsgBox(32+4,"Download completato...","Download Completato, aprire il file?")
If $domanda3=6 Then
ShellExecute($salva)
EndIf
EndIf
EndIf
EndIf
EndFunc
;-------------------
Func Force_close()
If ProcessExists(@ScriptName) Then ProcessClose(@ScriptName)
If ProcessExists("Autoit3.exe") Then ProcessClose("Autoit3.exe")
If @error Then
Return -1
Exit
Else
Return 1
EndIf
Exit
EndFunc
;-------------------
Func _volume()
$vol = GUICTrlRead($slider)
SoundSetWaveVolume ($vol)
If GUICtrlRead($f) <> "Volume: "&GUICtrlRead($slider) Then
GUICtrlSetData ($f,"Volume: "&$vol)
IniWrite("conf.ini","Volume","value",$vol)
EndIf
EndFunc ; ==> _volume()
;-------------------
Func _GetExtProperty($sPath, $iProp); presa dal forum ufficiale di autoit.
Local $iExist, $sFile, $sDir, $oShellApp, $oDir, $oFile, $aProperty, $sProperty
$iExist = FileExists($sPath)
If $iExist = 0 Then
SetError(1)
Return "Sconosciuto"
Else
$sFile = StringTrimLeft($sPath, StringInStr($sPath, "", 0, -1))
$sDir = StringTrimRight($sPath, (StringLen($sPath) - StringInStr($sPath, "", 0, -1)))
$oShellApp = ObjCreate("shell.application")
$oDir = $oShellApp.NameSpace($sDir)
$oFile = $oDir.Parsename($sFile)
If $iProp = -1 Then
Local $aProperty[35]
For $i = 0 To 34
$aProperty[$i] = $oDir.GetDetailsOf($oFile, $i)
Next
Return $aProperty
Else
$sProperty = $oDir.GetDetailsOf($oFile, $iProp)
If $sProperty = "" Then
Return "Sconosciuto"
Else
Return $sProperty
EndIf
EndIf
EndIf
EndFunc ;==>_GetExtProperty
;-------------------
Func _FileGetName($sNameCompl)
$aSplit=StringSplit($sNameCompl,"\")
Return $aSplit[$aSplit[0]]
EndFunc
;-------------------
Func mute()
GUICtrlSetData($slider,0)
GUICtrlSetData ($f,"Volume: "&0)
SoundSetWaveVolume(0)
EndFunc
;-------------------
Func rid()
GUISetState(@SW_HIDE)
ToolTip("Per visualizzare My Media Player 2, Premere F10!")
Sleep(3000)
ToolTip("")
AdlibUnRegister("barra")
AdlibUnRegister("_volume")
EndFunc
;-------------------
Func vis()
GUISetState(@SW_SHOW)
AdlibRegister("barra",1000)
AdlibRegister("temp",1000)
EndFunc
;-------------------
Func min()
GUISetState(@SW_MINIMIZE)
EndFunc
;-------------------
Func Ripristino()
DirRemove(@AppDataDir&"\mmp",1)
GUIDelete()
_Func_Conf()
$doman=MsgBox(52,"Riavviare","È necessario riavviare my media player per applicare le modifiche effettuate."&@CR&"Riavviare?")
If $doman = 6 Then
Exit
Else
MsgBox(4096+16,"Errore","Si È verificato un errore in My media Player. L'applicazione verra chiusa.")
Exit
EndIf
EndFunc
;-------------------
Func changelog()
MsgBox(0,"ChangeLog",$messaggio_file)
EndFunc
;-------------------
Func trasp()
$transparence_input = InputBox("Trasparenza","Inserisci la trasparenza a numeri da 1 a 255 qui sotto"&@cr&"(255 è opaco)",150)
If $transparence_input = 0 Then
WinSetTrans("My Media Player","Durata:",255)
IniWrite("conf.ini","Trasparenza","trasparenza",255)
Else
WinSetTrans("My Media Player","Durata:",$transparence_input)
IniWrite("conf.ini","Trasparenza","trasparenza",$transparence_input)
EndIf
EndFunc
;-------------------
Func traspoff()
WinSetTrans("My Media Player","Durata:",255)
IniWrite("conf.ini","Trasparenza","trasparenza",255)
EndFunc
;-------------------
Func info()
MsgBox(64,"Info","My Media Player è stato realizzato da Gianlu-thebest, perchè"&@CR&"volevano creare un lettore multimediale decente"&@CR&"in confronto a WMP"&@CR&"Versione Ufficiale 3.1.0")
EndFunc
;-------------------
Func exit_a()
Exit
EndFunc
;-------------------
Func _artist()
$4 = FileOpenDialog("Scegli File:",@MyDocumentsDir&"\Musica","All (*.*)", 4)
If Not @error Then
_SoundClose($4)
EndIf
If StringInStr($4,"|") = 0 Then
$artist1 = _GetExtProperty($path, 16)
$title1 = _GetExtProperty($path, 10)
$album1 = _GetExtProperty($path, 17)
GUICtrlSetData($b,"Artista: "&$artist1)
GUICtrlSetData($c,"Titolo: "&$title1)
GUICtrlSetData($d,"Album: "&$album1)
GUICtrlSetData($filel,"File: "&_FileGetName($4))
$4=_SoundOpen($4)
GUICtrlSetImage($1,@AppDataDir&"\mmp\pause.bmp")
_SoundPlay($4)
Else
$sl=StringSplit($4,"|")
For $i = 2 to UBound($sl)-1
GUICtrlSetData($list,$sl[1]&"\"&$sl[$i])
Next
EndIf
EndFUnc; ==> _Artist()
;-------------------
Func play()
If _SoundStatus($4) = "playing" Then
_SoundPause($4)
GUICtrlSetImage($1,@AppDataDir&"\mmp\play.bmp")
ElseIf _SoundStatus($4) = "paused" Or _SoundStatus($4) = "stopped" Then
_SoundPlay($4)
GUICtrlSetImage($1,@AppDataDir&"\mmp\pause.bmp")
EndIf
EndFunc
;-------------------
Func stop()
_SoundStop($4)
GUICtrlSetImage($1,@AppDataDir&"\mmp\play.bmp")
EndFunc
;-------------------
Func pausa()
_SoundPause($4)
EndFunc
;-------------------
Func exit_b()
For $i = 255 to 0 Step -10
WinSetTrans(WinGetTitle("My"),"",$i)
Next
Exit
EndFunc
;-------------------
Func Advanced()
Opt("GUIOnEventMode",1)
Global $Form1 = GUICreate("Altro...", 284, 284, 316, 215, $WS_POPUP)
$Pic1 = GUICtrlCreatePic(@AppDataDir&"\mmp\skin2.bmp", 0, 0, 300, 300)
GUICtrlSetState(-1,128)
$Button1 = GUICtrlCreateButton("Changelog", 8, 100, 75, 25, 0)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetBkColor(-1,0x0)
GUICtrlSetOnEvent(-1,"Changelog")
$Button2 = GUICtrlCreateButton("Autore", 8, 132, 75, 25, 0)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetBkColor(-1,0x0)
GUICtrlSetOnEvent(-1,"Autor")
$Button3 = GUICtrlCreateButton("Informazioni", 8, 164, 75, 25, 0)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetBkColor(-1,0x0)
GUICtrlSetOnEvent(-1,"info")
$Button4 = GUICtrlCreateButton("X", 248, 8, 27, 25, 0)
GUICtrlSetBkColor(-1,0xFF0000)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetOnEvent(-1,"Chiudi_advanced")
$Button5 = GUICtrlCreateButton("Setta trasparenza",8,65,100,25,0)
GUICtrlSetOnEvent(-1,"trasp")
GUICtrlSetBkColor(-1,0x0)
GUICtrlSetColor(-1,0xFFFFFF)
$Button6 = GUICtrlCreateButton("Ripristina",109,65,75,25,0)
GUICtrlSetOnEvent(-1,"ripristino")
GUICtrlSetBkColor(-1,0x0)
GUICtrlSetColor(-1,0xFFFFFF)
WinSetTrans($Form1,"",0)
GUISetState(@SW_SHOW,$Form1)
For $i = 0 To 255 Step 5
WinSetTrans("Altro...","",$i)
Next
EndFunc
;-------------------
Func Chiudi_advanced()
For $i = 255 to 0
WinSetTrans("Altro...","",$i)
Next
GUISetState(@sw_hide)
EndFunc
;-------------------
Func Autor()
MsgBox(64,"Autore","Gli autori di questo maginifico programma sono: Gigi 32 & Gianlu-thebest & ACIDBURN16")
EndFunc