Re: XPlayer 1.01 (Reproductor de MP3)
Publicado: 22 Sep 2009, 02:16
Actualizado a la versión 1.01
En español. Descarga programas libres y Open-Source. Añade tu programa a la librería de Scripts en Autoit.es
http://autoit.es/
Código: Seleccionar todo
Func _CAMBIARPOSICION()
$PORCENTAJE = GUICtrlRead($Pos)
$DURACION = _SoundLength($FPLAY,2) ;; EN SEGUNDOS
;MsgBox(16,"HOLA",$PORCENTAJE)
$POSICIONFINAL = $PORCENTAJE*$DURACION/100 ;;; VALOR EN MILISEGUNDOS
$ENSEGUNDOS = $POSICIONFINAL/1000 ;;;SACA VALOR EN SEGUNDOS
$ENMINUTOS = StringFormat("%.2f",$ENSEGUNDOS/60) ;; en minutos con 2 decimales
$MINUTO = StringFormat("%i",$ENMINUTOS)
If $MINUTO>=60 Then
$HORAFINAL = StringFormat("%.0f",$MINUTO/60)
$MINUTOFINAL = $MINUTO - $HORAFINAL*60
Else
$MINUTOFINAL = $MINUTO
EndIf
$SEGUNDO =StringFormat("%.0f",($ENMINUTOS-$MINUTO)*60)
$SEGUNDOFINAL = $SEGUNDO
;MsgBox(32,"RESULTADO",$HORAFINAL & " HORAS " &$MINUTOFINAL & " MINUTOS " & $SEGUNDOFINAL & " SEGUNDOS ")
_SoundSeek($FPLAY, $HORAFINAL, $MINUTOFINAL, $SEGUNDOFINAL)
_SoundPlay($FPLAY,0)
EndFunc
Código: Seleccionar todo
Func WM_DROPFILES_FUNC($HWND, $MSGID, $WPARAM, $LPARAM)
Local $NSIZE, $PFILENAME
Local $NAMT = DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $WPARAM, "int", -1, "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 $GADROPFILES[$I + 1]
$GADROPFILES[$I] = DllStructGetData($PFILENAME, 1)
$PFILENAME = 0
Next
EndFunc
Func AGREGAR($TEMP, $MAINF)
GUICtrlSetState($MenuItem9, $GUI_ENABLE)
GUICtrlSetState($MenuItem4, $GUI_ENABLE)
Local $FILE, $SIZE, $MAIN, $DIR
$MAIN = StringTrimLeft($TEMP, StringLen(CORTAR($TEMP)))
$MAIN = StringTrimRight($MAIN,4)
;~ MsgBox(16,"",$MAIN)
$DIR = $TEMP
$ITEM = _GUICTRLLISTVIEW_ADDITEM($Lista1, $MAIN, -1, 0) ;;; nombre
_GUICTRLLISTVIEW_ADDSUBITEM($Lista1, $ITEM, $DIR, 1);; ruta
EndFunc
Func EVENTOJALAR() ;agrega desde alguna ubicacion
For $I = 0 To UBound($GADROPFILES) - 1
$TEMP = $GADROPFILES[$I]
If StringInStr(FileGetAttrib($TEMP), "D") Then
AGREGAR($TEMP, 0)
Else
AGREGAR($TEMP, 2)
EndIf
Next
EndFunc
Func CORTAR($TEMP)
Local $C = StringRight($TEMP, 1)
While 1
If $C = "\" Then
ExitLoop
Else
$TEMP = StringTrimRight($TEMP, 1)
$C = StringRight($TEMP, 1)
EndIf
WEnd
Return $TEMP
EndFunc
Mmmmm....eso no mola nada . Evitalo utilizando esto:XPyro escribió:Nota: Al cerrar recuerda que el volumen del sistema quedara igual que el marcado en XPlayer si lo cierras con el volumen al 100% ese quedara por defecto en el sistema
Código: Seleccionar todo
__SoundMciSendString("setaudio " & $aSnd_id & " volume to " & $volumen)
Código: Seleccionar todo
__SoundMciSendString("setaudio " & $aSnd_id & " treble to " & $agudos)
__SoundMciSendString("setaudio " & $aSnd_id & " bass to " & $bajos)
__SoundMciSendString("setaudio " & $aSnd_id & " left volume to " & $volumenizq)
__SoundMciSendString("setaudio " & $aSnd_id & " right volume to " & $volumendcho)
__SoundMciSendString("setaudio " & $aSnd_id & " on") ;activa el audio
__SoundMciSendString("setaudio " & $aSnd_id & " off) ;desactiva el audio
Código: Seleccionar todo
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiButton.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <Constants.au3>
#include <Misc.au3>
#include <Sound.au3>
#Include <GuiToolTip.au3>
;Si ya estoy corriendo, cerrarme
;~ _Singleton('REPRODUCTOR')
;;;; REPRODUCE HASTA 128
Global $HORAFINAL,$MINUTOFINAL,$SEGUNDOFINAL,$DURACION,$GADROPFILES[1],$DIRECCION,$ITEMID,$Lista1
Global Const $WM_DROPFILES = 563
Global $CABECERA = "Lista de reproducción |Ruta "
Global $FPLAY = '', $SWHID = 'H', $PAUSE = 0, $PISTA = '0', $PLAY = 0, $Form3 = 0, $NUMERO=0
FileInstall("C:\autoit\REPRODUCTOR\1.ico",@TempDir &"\1.ico",1)
FileInstall("C:\autoit\REPRODUCTOR\2.ico",@TempDir &"\2.ico",1)
FileInstall("C:\autoit\REPRODUCTOR\3.ico",@TempDir &"\3.ico",1)
FileInstall("C:\autoit\REPRODUCTOR\4.ico",@TempDir &"\4.ico",1)
FileInstall("C:\autoit\REPRODUCTOR\5.ico",@TempDir &"\5.ico",1)
FileInstall("C:\autoit\REPRODUCTOR\6.ico",@TempDir &"\6.ico",1)
;Quita la opción (Script Paused/Exit) en Traymenu
Opt('TrayMenuMode', 1)
$Ancho = 333
$Alto = 400
#Region ### START Koda GUI section ### Form=C:\autoit\koda_1.7.2.0\Forms\reproductor.kxf
$Form1 = GUICreate("Reproductor", $Ancho, $Alto, 318, 184, -1, BitOR($WS_EX_ACCEPTFILES,$WS_EX_WINDOWEDGE))
;;; MENUS LISTAS
$Archivo = GUICtrlCreateMenu("&Archivo")
$MenuItem2= GUICtrlCreateMenuItem("Añadir archivo", $Archivo)
$MenuItem6 = GUICtrlCreateMenuItem("Ocultar reproductor", $Archivo)
$MenuItem5 = GUICtrlCreateMenuItem("Salir", $Archivo)
$MenuLista = GUICtrlCreateMenu("&Lista")
$MenuItem9 = GUICtrlCreateMenuItem("Eliminar seleccionado", $MenuLista)
GUICtrlSetState(-1, $GUI_DISABLE)
$MenuItem4 = GUICtrlCreateMenuItem("Eliminar todo", $MenuLista)
GUICtrlSetState(-1, $GUI_DISABLE)
$MenuOpciones = GUICtrlCreateMenu("&Opciones")
$MenuItem10 = GUICtrlCreateMenuItem('&Repetir lista', $MenuOpciones, -1, 1)
$MenuItem11 = GUICtrlCreateMenuItem('&No repetir lista', $MenuOpciones, -1, 1)
GUICtrlSetState(-1, 65)
;;;; BOTONES
$BTNAGREGAR = GUICtrlCreateButton("", 8, 8, 27, 25, BitOR($BS_ICON,$WS_GROUP))
GUICtrlSetImage(-1, @TempDir &"\1.ico", -1)
GUICtrlSetTip(-1, 'Añadir archivos a la lista')
$BTNDETENER = GUICtrlCreateButton("", 67, 8, 27, 25, BitOR($BS_ICON,$WS_GROUP))
GUICtrlSetImage(-1, @TempDir &"\2.ico", -1)
GUICtrlSetTip(-1, 'Detener Reproducción')
$BTNEMPEZAR = GUICtrlCreateButton("", 40, 8, 27, 25, BitOR($BS_ICON,$WS_GROUP))
GUICtrlSetImage(-1, @TempDir &"\3.ico", -1)
GUICtrlSetTip(-1, 'Comenzar Reproducción')
$BTNPAUSAR = GUICtrlCreateButton("", 95, 8, 27, 25, BitOR($BS_ICON,$WS_GROUP))
GUICtrlSetImage(-1, @TempDir &"\4.ico", -1)
GUICtrlSetTip(-1, 'Pausar Reproducción')
$BTNANTERIOR = GUICtrlCreateButton("", 128, 8, 27, 25, BitOR($BS_ICON,$WS_GROUP))
GUICtrlSetImage(-1, @TempDir &"\5.ico", -1)
GUICtrlSetTip(-1, 'Reproducir pista anterior')
$BTNSIGUIENTE = GUICtrlCreateButton("", 154, 8, 27, 25, BitOR($BS_ICON,$WS_GROUP))
GUICtrlSetImage(-1, @TempDir &"\6.ico", -1)
GUICtrlSetTip(-1, 'Reproducir pista siguiente')
$CONTROLVOLUMEN = GUICtrlCreateSlider(208, 8, 118, 37, BitOR($TBS_BOTH,$TBS_NOTICKS,$TBS_ENABLESELRANGE))
GUICtrlSetData(-1, 80)
GUICtrlSetTip(-1, 'Control de Volumen')
SoundSetWaveVolume(80)
_LISTADO()
$Pos = GUICtrlCreateProgress(0, 306, $Ancho, 20, $PBS_SMOOTH)
$Pos1 =GUICtrlCreateSlider(0,320,$Ancho,20,BitOR($TBS_BOTH,$TBS_NOTICKS,$TBS_ENABLESELRANGE)) ;;; en SliderBar
;;;;; MINICONO
TraySetClick('9')
$TrayItem1 = TrayCreateItem('&Reproducir')
TrayItemSetState(-1, $TRAY_DISABLE)
$TrayItem2 = TrayCreateItem('&Pausar')
TrayItemSetState(-1, $TRAY_DISABLE)
$TrayItem3 = TrayCreateItem('&Detener')
TrayItemSetState(-1, $TRAY_DISABLE)
TrayCreateItem('')
$TrayItem4 = TrayCreateItem('&Pista anterior')
TrayItemSetState(-1, $TRAY_DISABLE)
$TrayItem5 = TrayCreateItem('&Pista siguiente')
TrayItemSetState(-1, $TRAY_DISABLE)
TrayCreateItem('')
$TrayItemv1 = TrayCreateItem('&Subir volumen +')
$TrayItemv2 = TrayCreateItem('&Bajar volumen -')
TrayCreateItem('')
$TrayItem6 = TrayCreateItem('Ocultar &Reproductor')
$TrayItem7 = TrayCreateItem('&Salir')
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY') ;; doble click
GUIRegisterMsg($WM_DROPFILES, "WM_DROPFILES_FUNC") ;;; agregar archivos de fuera
#EndRegion ### END Koda GUI section ###
While 1
$GUI = GUIGetMsg()
$Control = TrayGetMsg()
Switch $GUI
Case $GUI_EVENT_CLOSE
_Ocultar('H')
Case $BTNAGREGAR
_AgregarMusica()
Case $BTNPAUSAR
_Pausa()
Case $BTNDETENER
_Parar()
Case $BTNEMPEZAR
_SelectArchivo()
Case $BTNANTERIOR
_SiguienteAnterior(0)
Case $BTNSIGUIENTE
_SiguienteAnterior(1)
Case $CONTROLVOLUMEN
SoundSetWaveVolume(GUICtrlRead($CONTROLVOLUMEN))
Case $MenuItem4
_BorrarTodo()
Case $MenuItem6
_Ocultar('H')
Case $MenuItem2
_AgregarMusica()
Case $MenuItem9
_BorrarSeleccionado()
Case $MenuItem5
_Salir()
Case $Pos1
_CAMBIARPOSICION()
Case $GUI_EVENT_DROPPED
EVENTOJALAR()
EndSwitch
Switch $Control
Case $TrayItem1
_SelectArchivo()
Case $TrayItem2
_Pausa()
Case $TrayItem3
_Parar()
Case $TrayItem4
_SiguienteAnterior(0)
Case $TrayItem5
_SiguienteAnterior(1)
Case $TrayItem6
_Ocultar($SWHID)
Case $TrayItem7
_Salir()
Case $TrayItemv1
_SubirVolumen()
Case $TrayItemv2
_BajarVolumen()
EndSwitch
If $PLAY Then _Secons()
WinSetTrans("Posicion actual",ControlSetText("Posicion actual", "", "Static1", _SoundPos($FPLAY, 1)),105) ;;; transparente
;GUICtrlSetData($Pos1, 100 / _SoundLength($FPLAY, 2) * _SoundPos($FPLAY, 2),"Semiedit")
WEnd
Func _AgregarMusica()
$Music = FileOpenDialog('Añadir archivos', '', 'Audio (*.mp3;*.wav)', 5, '', $Form1)
If not @error Then
GUICtrlSetState($BTNDETENER, $GUI_ENABLE)
GUICtrlSetState($BTNEMPEZAR, $GUI_ENABLE)
GUICtrlSetState($BTNANTERIOR, $GUI_ENABLE)
GUICtrlSetState($BTNPAUSAR, $GUI_ENABLE)
GUICtrlSetState($BTNSIGUIENTE, $GUI_ENABLE)
GUICtrlSetState($MenuItem9, $GUI_ENABLE)
GUICtrlSetState($MenuItem4, $GUI_ENABLE)
TrayItemSetState($TrayItem1, $TRAY_ENABLE)
TrayItemSetState($TrayItem2, $TRAY_ENABLE)
TrayItemSetState($TrayItem3, $TRAY_ENABLE)
TrayItemSetState($TrayItem4, $TRAY_ENABLE)
TrayItemSetState($TrayItem5, $TRAY_ENABLE)
;MsgBox(16," sd",$Music)
$Musicdiv = StringSplit($Music, '|') ;Divido en variables la ruta anteriormente dada por $Music dependiendo de '|'
If $Musicdiv[0] <> 1 Then ;Si el valor es diferente a 1 entonces
For $N = 2 To $Musicdiv[0] ;Añadir varios archivos
$ITEMID = _GUICtrlListView_AddItem($Lista1, StringTrimRight($Musicdiv[$N], 4))
_GUICtrlListView_AddSubItem($Lista1, $ITEMID, $Musicdiv[1] & '\' & $Musicdiv[$N], 1)
UBICARDUPLICADO($ITEMID)
Next
Else
$Musicdiv = StringSplit($Music, '\') ;Añadir un archivo
$ITEMID = _GUICtrlListView_AddItem($Lista1, StringTrimRight($Musicdiv[$Musicdiv[0]], 4))
_GUICtrlListView_AddSubItem($Lista1, $ITEMID, $Music, 1)
UBICARDUPLICADO($ITEMID)
EndIf
BORRARDUPLICADOS()
EndIf
EndFunc
Func _Pausa()
If $PAUSE = 0 Then
_SoundPause($FPLAY)
$PAUSE = 1
TrayItemSetText($TrayItem2, '&Continuar')
If $Form3 <> 0 Then
_WinAnimate($Form3, 0x00090000)
;ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
$Form3 = 0
EndIf
ElseIf $PAUSE = 1 Then
_SoundResume($FPLAY)
$PAUSE = 0
TrayItemSetText($TrayItem2, '&Pausar')
EndIf
EndFunc ;==>_Pausa
Func _Reproducir($RUTAF)
If $Form3 <> 0 Then
_WinAnimate($Form3, 0x00090000)
;ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
$Form3 = 0
EndIf
_SoundClose($FPLAY)
$FPLAY = _SoundOpen($RUTAF)
If Not @error Then
_SoundPlay($FPLAY)
$splashtext = SplashTextOn("Posicion actual", _SoundPos($FPLAY, 1), 139, 48, 879, 639, 18, Default, 15)
If _SoundStatus($FPLAY) = 'playing' Then
$PLAY = 1
_PopUp()
Else
MsgBox(8240, 'Error', 'El archivo no se puede reproducir' & @CRLF & @CRLF & 'Intente reproducir otro')
_SoundClose($FPLAY)
GUICtrlSetData($Pos, 0)
GUICtrlSetData($Pos1, 0)
EndIf
Else
MsgBox(8240, 'Error', 'El archivo no se puede reproducir' & @CRLF & @CRLF & 'Intente reproducir otro')
_SoundClose($FPLAY)
GUICtrlSetData($Pos, 0)
GUICtrlSetData($Pos1, 0)
EndIf
EndFunc ;==>_Reproducir
Func _SelectArchivo()
If _GUICtrlListView_GetItemCount($Lista1) <> 0 Then
$A = 0
Do
$A = $A + 1
If _GUICtrlListView_GetItemSelected($Lista1, $A) = True Then
$PISTA = $A
_Reproducir(_GUICtrlListView_GetItemText($Lista1, $A, 1))
$A = _GUICtrlListView_GetItemCount($Lista1)
$Selection = 0
Else
$Selection = 1
EndIf
Until $A = _GUICtrlListView_GetItemCount($Lista1)
If $Selection = 1 Then
$PISTA = 0
_Reproducir(_GUICtrlListView_GetItemText($Lista1, 0, 1))
_GUICtrlListView_SetItemSelected($Lista1, 0)
EndIf
EndIf
EndFunc ;==>_SelectArchivo
Func _Parar()
_SoundClose($FPLAY)
$PLAY = 0
GUICtrlSetData($Pos, 0)
If $Form3 <> 0 Then
_WinAnimate($Form3, 0x00090000)
;ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
$Form3 = 0
EndIf
EndFunc
Func _SiguienteAnterior($VAL)
If _GUICtrlListView_GetItemCount($Lista1) <> 0 Then
If $VAL = 1 Then
If $PISTA < _GUICtrlListView_GetItemCount($Lista1) - 1 Then
$PISTA = $PISTA + 1
_Reproducir(_GUICtrlListView_GetItemText($Lista1, $PISTA, 1))
_GUICtrlListView_SetItemSelected($Lista1, $PISTA)
ElseIf $PISTA = _GUICtrlListView_GetItemCount($Lista1) - 1 Then
$PLAY = 0
EndIf
ElseIf $VAL = 0 Then
If $PISTA > 0 Then
$PISTA = $PISTA - 1
_Reproducir(_GUICtrlListView_GetItemText($Lista1, $PISTA, 1))
_GUICtrlListView_SetItemSelected($Lista1, $PISTA)
EndIf
EndIf
EndIf
EndFunc
Func _BorrarSeleccionado()
$ELIMINADO = _GUICtrlListView_GetSelectedCount($Lista1)
_GUICTRLLISTVIEW_DELETEITEMSSELECTED(GUICtrlGetHandle($Lista1))
If _GUICtrlListView_GetItemText($Lista1, 0) = '' Then _BorrarTodo()
If $PLAY Then
_SoundClose($FPLAY)
$PLAY = 0
GUICtrlSetData($Pos, 0)
GUICtrlSetData($Pos1, 0)
$ITEMID= $ITEMID-$ELIMINADO
EndIf
EndFunc
;Función para eliminar todos los archivos de la lista
Func _BorrarTodo()
_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($Lista1))
GUICtrlSetState($MenuItem4, $GUI_DISABLE)
GUICtrlSetState($MenuItem9, $GUI_DISABLE)
TrayItemSetState($TrayItem1, $TRAY_DISABLE)
TrayItemSetState($TrayItem2, $TRAY_DISABLE)
TrayItemSetState($TrayItem3, $TRAY_DISABLE)
TrayItemSetState($TrayItem4, $TRAY_DISABLE)
TrayItemSetState($TrayItem5, $TRAY_DISABLE)
_SoundClose($FPLAY)
$PLAY = 0
$PISTA = 0
GUICtrlSetData($Pos, 0)
GUICtrlSetData($Pos1, 0)
If $Form3 <> 0 Then
_WinAnimate($Form3, 0x00090000)
;ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
$Form3 = 0
EndIf
EndFunc
Func _Secons()
GUICtrlSetData($Pos, 100 / _SoundLength($FPLAY, 2) * _SoundPos($FPLAY, 2))
If GUICtrlRead($Pos) = 100 Then
_SoundClose($FPLAY)
_SiguienteAnterior(1)
GUICtrlSetData($Pos, 0)
GUICtrlSetData($Pos1, 0)
EndIf
If $PLAY = 0 And GUICtrlRead($MenuItem10) = 65 Then
_Reproducir(_GUICtrlListView_GetItemText($Lista1, 0, 1))
_GUICtrlListView_SetItemSelected($Lista1, 0)
$PISTA = 0
EndIf
If $Form3 <> 0 And _SoundPos($FPLAY, 2) >= 4000 Then
_WinAnimate($Form3, 0x00090000)
;ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
$Form3 = 0
EndIf
EndFunc ;==>_Secons
Func _CAMBIARPOSICION()
$PORCENTAJE = GUICtrlRead($Pos1)
$DURACION = _SoundLength($FPLAY,2) ;; EN SEGUNDOS
$POSICIONFINAL = $PORCENTAJE*$DURACION/100 ;;; VALOR EN MILISEGUNDOS
$ENSEGUNDOS = $POSICIONFINAL/1000 ;;;SACA VALOR EN SEGUNDOS
$ENMINUTOS = StringFormat("%.2f",$ENSEGUNDOS/60) ;; en minutos con 2 decimales
$MINUTO = StringFormat("%i",$ENMINUTOS)
If $MINUTO>=60 Then
$HORAFINAL = StringFormat("%.0f",$MINUTO/60)
$MINUTOFINAL = $MINUTO - $HORAFINAL*60
Else
$MINUTOFINAL = $MINUTO
EndIf
$SEGUNDO =StringFormat("%.0f",($ENMINUTOS-$MINUTO)*60)
$SEGUNDOFINAL = $SEGUNDO
;MsgBox(32,"RESULTADO",$HORAFINAL & " HORAS " &$MINUTOFINAL & " MINUTOS " & $SEGUNDOFINAL & " SEGUNDOS ")
_SoundSeek($FPLAY, $HORAFINAL, $MINUTOFINAL, $SEGUNDOFINAL)
_SoundPlay($FPLAY,0)
EndFunc
Func _Salir()
_SoundClose($FPLAY)
FileDelete ( @TempDir &"\1.ico" )
FileDelete ( @TempDir &"\2.ico" )
FileDelete ( @TempDir &"\3.ico" )
FileDelete ( @TempDir &"\4.ico" )
FileDelete ( @TempDir &"\5.ico" )
FileDelete ( @TempDir &"\6.ico" )
Exit
EndFunc
;Función para ocultar o mostrar el Reproductor GUI
Func _SubirVolumen()
If GUICtrlRead($CONTROLVOLUMEN) < 100 Then
GUICtrlSetData($CONTROLVOLUMEN, GUICtrlRead($CONTROLVOLUMEN) + 20)
SoundSetWaveVolume(GUICtrlRead($CONTROLVOLUMEN))
EndIf
EndFunc
Func _BajarVolumen()
If GUICtrlRead($CONTROLVOLUMEN) > 0 Then
GUICtrlSetData($CONTROLVOLUMEN, GUICtrlRead($CONTROLVOLUMEN) - 20)
SoundSetWaveVolume(GUICtrlRead($CONTROLVOLUMEN))
EndIf
EndFunc
Func _Ocultar($hs)
If $hs = 'H' Then
GUISetState(@SW_MINIMIZE, $Form1)
GUISetState(@SW_HIDE, $Form1)
TrayItemSetText($TrayItem6, 'Mostrar &Reproductor')
Opt('TrayIconHide', 0)
TraySetToolTip('Reproductor')
$SWHID = 'S'
ElseIf $hs = 'S' Then
GUISetState(@SW_SHOW, $Form1)
GUISetState(@SW_RESTORE, $Form1)
TrayItemSetText($TrayItem6, 'Ocultar &Reproductor')
Opt('TrayIconHide', 1)
$SWHID = 'H'
EndIf
EndFunc ;==>_Ocultar
Func _WinAnimate($v_gui, $i_mode = 0x00080000, $i_duration = 200)
If @OSVersion = 'WIN_XP' Or @OSVersion = 'WIN_2000' Or @OSVersion = 'WIN_VISTA' Or @OSVersion = 'WIN_2003' Then
DllCall('user32.dll', 'int', 'AnimateWindow', 'hwnd', WinGetHandle($v_gui), 'int', $i_duration, 'long', $i_mode)
Local $ai_gle = DllCall('kernel32.dll', 'int', 'GetLastError')
If $ai_gle[0] <> 0 Then
SetError(1)
Return 0
EndIf
Return 1
EndIf
EndFunc ;==>_WinAnimate
Func _PopUp()
Local $MULTI = 6.25 ;; constante que convierte caracteres a pixeles
$LONGITUD = StringLen(_GUICtrlListView_GetItemText($Lista1, $PISTA) & " " & "("& _SoundLength($FPLAY,1) &")")
$TAMANVENTANA = $LONGITUD*$MULTI ;;SE REFIERE AL LARGO
$Form3 = GUICreate('Ventana de información', $TAMANVENTANA, 53, @DesktopWidth - $TAMANVENTANA-5, 5, BitOR($WS_POPUP, $WS_GROUP, $WS_CLIPSIBLINGS), BitOR($WS_EX_OVERLAPPEDWINDOW, $WS_EX_TOPMOST, $WS_EX_WINDOWEDGE, $WS_EX_TOOLWINDOW))
GUISetBkColor(0x525252) ;; color de ventana
GUICtrlCreateLabel($PISTA+1 & " de "&_GUICTRLLISTVIEW_GETITEMCOUNT($Lista1), 40, 3, 100, 17)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlCreateLabel('Reproduciendo:', 40, 14, 100, 17)
GUICtrlSetFont(-1, 10, 800, 0, 'Comic Sans MS')
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlCreateLabel(_GUICtrlListView_GetItemText($Lista1, $PISTA) & " " & "("& _SoundLength($FPLAY,1) &")", 2, 34, 65+$TAMANVENTANA, 17)
GUICtrlSetFont(-1, 9, 800, 0, 'Comic Sans MS')
GUICtrlSetColor(-1, 0xFFFFFF)
_WinAnimate($Form3)
;ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
WinSetOnTop('Ventana de información', 'Reproduciendo:', 1)
EndFunc ;==>_PopUp
;Función de eveto cuando se hace 2 clicks en un ITEM del control LISTVIEW
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg, $iwParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
$hWndListView = $Lista1
If Not IsHWnd($Lista1) Then $hWndListView = GUICtrlGetHandle($Lista1)
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, 'hWndFrom'))
$iIDFrom = DllStructGetData($tNMHDR, 'IDFrom')
$iCode = DllStructGetData($tNMHDR, 'Code')
Switch $hWndFrom
Case $hWndListView
Switch $iCode
Case $NM_DBLCLK ; Reproduce con el doble click
_SelectArchivo()
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
Func WM_DROPFILES_FUNC($HWND, $MSGID, $WPARAM, $LPARAM) ;;; funcion evento para jalar
Local $NSIZE, $PFILENAME
Local $NAMT = DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $WPARAM, "int", -1, "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 $GADROPFILES[$I + 1]
$GADROPFILES[$I] = DllStructGetData($PFILENAME, 1)
$PFILENAME = 0
Next
EndFunc
Func AGREGAR($DIRECCION)
$Musicdiv = StringSplit($DIRECCION, '\')
StringTrimRight($Musicdiv[$Musicdiv[0]], 4)
GUICtrlSetState($MENUITEM9, $GUI_ENABLE)
GUICtrlSetState($MENUITEM4, $GUI_ENABLE)
$ITEMID = _GUICTRLLISTVIEW_ADDITEM($Lista1, StringTrimRight($Musicdiv[$Musicdiv[0]], 4), -1, 0) ;;;Nombre
_GUICTRLLISTVIEW_ADDSUBITEM($Lista1, $ITEMID, $DIRECCION, 1) ;;;Direccion
UBICARDUPLICADO($ITEMID)
EndFunc
Func EVENTOJALAR()
For $I = 0 To UBound($GADROPFILES) - 1
$DIRECCION = $GADROPFILES[$I]
If StringInStr(FileGetAttrib($DIRECCION), "D") Then
MsgBox(16,"ERROR","ES UNA CARPETA NO LO PUEDO AGREGAR")
ElseIf StringInStr($DIRECCION,".mp3") Or StringInStr($DIRECCION,".wav") Then
AGREGAR($DIRECCION)
Else
MsgBox(16,"Error","Este no es un mp3 ni wav")
EndIf
Next
BORRARDUPLICADOS()
EndFunc
Func BORRARDUPLICADOS()
Local $K, $D, $N, $DECISION = 0
$N = _GUICTRLLISTVIEW_GETITEMCOUNT($Lista1) ;;Tamaño de la lista comiensa segun numero
For $K = 1 To $N
$D = _GUICTRLLISTVIEW_GETITEMPARAM($Lista1, $N - $K)
If $D = 2 Then
If $DECISION = 0 Then
$DECISION = MsgBox(262148, "Duplicado encontrado", "El archivo que agrego ya existe ¿desea eliminarlo?")
EndIf
If $DECISION = 6 Then
GUICtrlSendMsg($Lista1, 4104, $N - $K, 0)
EndIf
EndIf
Next
EndFunc
Func UBICARDUPLICADO($ELEMENTO)
Local $NIT, $K, $AA, $BB
$NIT = _GUICTRLLISTVIEW_GETITEMCOUNT($Lista1) ;;;;Tamaño de la lista comiensa segun numero
$NOMBRE1 = _GUICTRLLISTVIEW_GETITEMTEXT($Lista1, $ITEMID, 0)
$DIRECCION1 = _GUICTRLLISTVIEW_GETITEMTEXT($Lista1, $ITEMID, 1)
For $K = 0 To $NIT - 1
If Not ($K = $ELEMENTO) Then
If _GUICTRLLISTVIEW_GETITEMTEXT($Lista1, $K, 0) = $NOMBRE1 Then
If _GUICTRLLISTVIEW_GETITEMTEXT($Lista1, $K, 1) = $DIRECCION1 Then
_GUICTRLLISTVIEW_SETITEMPARAM($Lista1, $ITEMID, 2)
EndIf
EndIf
EndIf
Next
EndFunc
Func _LISTADO()
$Lista1 = GUICtrlCreateListView($CABECERA, 0, 45, $Ancho, 257, $LVS_NOSORTHEADER, $WS_EX_CLIENTEDGE)
GUICtrlSetState($Lista1, $GUI_DROPACCEPTED)
_GUICTRLLISTVIEW_SETEXTENDEDLISTVIEWSTYLE($Lista1, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_INFOTIP))
Local $HTOOLTIP = _GUICTRLLISTVIEW_GETTOOLTIPS($Lista1)
If IsHWnd($HTOOLTIP) Then
WinSetOnTop($HTOOLTIP, "", 1)
_GUITOOLTIP_SETDELAYTIME($HTOOLTIP, 3, 60)
EndIf
EndFunc