XPlayer 1.01 (Reproductor de MP3)
Re: XPlayer 1.01 (Reproductor de MP3)
archivo dañado, no puedo descomprimir
- XPyro
- Profesional del Autoit
- Mensajes: 542
- Registrado: 04 Mar 2007, 10:12
- Ubicación: México
- Contactar:
Re: XPlayer 1.01 (Reproductor de MP3)
No hay problema ya que lo puedes descomprimir con 7zip y te lo dejo portable:
http://xportables.blogspot.com/2010/01/ ... p-910.html
saludos
http://xportables.blogspot.com/2010/01/ ... p-910.html
saludos
Re: XPlayer 1.01 (Reproductor de MP3)
Hola como estas yo eh estado haciendole unas modificaciones al codigo pero tengo un par de problemas le quiero poner unas nuevas funciones pero no corren como espero.
la primera es para adelantar o retroceder segun la slider bar pero si la funcion secons() esta condicionada al Fplay no se mueve lo posibilite desactivandola pero la slider no corre.
La segunda es para arrastrar desde afuera funka normal el problema que tengo es que cuando quiero borrar le doy delAll pero aun queda ahi estampado si si le doy eliminar funka pero si se ha reproducido algun mp3 elimina el formulario y me lo deja sin la cuadricula.
Espero me des una mano para poder mejorar ste programa con las 2 ideas que propongo aver que tal nos va.
Te adjunto el codigo:
para la primera funcion
y para la segunda:
es llamada en Case $GUI_EVENT_DROPPED
EVENTOJALAR()
agrego esto GUIRegisterMsg($WM_DROPFILES, "WM_DROPFILES_FUNC")
y declaro esto Global Const $WM_DROPFILES = 563
Gracias de antemano y espero aceptes sugerencias
la primera es para adelantar o retroceder segun la slider bar pero si la funcion secons() esta condicionada al Fplay no se mueve lo posibilite desactivandola pero la slider no corre.
La segunda es para arrastrar desde afuera funka normal el problema que tengo es que cuando quiero borrar le doy delAll pero aun queda ahi estampado si si le doy eliminar funka pero si se ha reproducido algun mp3 elimina el formulario y me lo deja sin la cuadricula.
Espero me des una mano para poder mejorar ste programa con las 2 ideas que propongo aver que tal nos va.
Te adjunto el codigo:
para la primera funcion
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
EVENTOJALAR()
agrego esto GUIRegisterMsg($WM_DROPFILES, "WM_DROPFILES_FUNC")
y declaro esto Global Const $WM_DROPFILES = 563
Gracias de antemano y espero aceptes sugerencias
- XPyro
- Profesional del Autoit
- Mensajes: 542
- Registrado: 04 Mar 2007, 10:12
- Ubicación: México
- Contactar:
Re: XPlayer 1.01 (Reproductor de MP3)
Los problemas que mencionas son los mismos con los que me tope y evadí para crear un simple reproductor, si tienes mejoras e ideas son estas bienvenidas
Espero ponerme al día ya que no cuento con mucho tiempo pero veremos que mejoramos
Espero ponerme al día ya que no cuento con mucho tiempo pero veremos que mejoramos
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: XPlayer 1.01 (Reproductor de MP3)
Jejeje....si quereis os ayudo . Se puede hacer un reproductor muy muy majo si le sacamos partido a las apis de la librería winmm.dll .
La api mciSendString se puede utilizar para muchas muchas cosas. Se pueden madar todo tipo de mensajes. Lo mejor para estas cosas es consultar el mci de microsoft: http://msdn.microsoft.com/en-us/library ... S.85).aspx
En la udf sound.au3 esta función está definida como __SoundMciSendString.
donde la variable volumen puede comprender un valor entre 0 y 1000. Con esto se evita el tocar volúmenes de win .
Otra efecto chulo sería el que cuando tocases el volumen oyeras en tiempo real como se baja y sube, sin tener que esperar a soltar el slider para ver los cambios. Aquí logré este efecto: http://www.emesn.com/autoitforum/viewto ... umen#p2428. Aunque seguramente hoy en día lo intentaría hacer con los eventos que tiene la librería.
Puedes enviar muchos tipos de mensajes de este estilo. Siguiendo este mismo mensaje se pueden poner varios ejemplos de manejo de volúmenes:
etc etc etc y muchos muchos etcs .
No os podeis ni imaginar los mensajes que se pueden enviar . Se puede grabar desde periféricos externos, modificar los sonidos, definir las propiedades del sonido (calidad, muestreo, etc), hacer marcas para luego trabajar con pedazos, cortar, copiar, y muchos etcs que ni se lo que hacen (No soy muy bueno en sonido).
Por supuesto también vale para todo lo que se refiere a video.
jonathan7 si quieres que te ayudemos con esos problemas pon el código del programa completo, para así no tener que estar teniendo que calentarnos la cabeza para adaptar las funciones al código y tener que poner controles.
Saludos.
La api mciSendString se puede utilizar para muchas muchas cosas. Se pueden madar todo tipo de mensajes. Lo mejor para estas cosas es consultar el mci de microsoft: http://msdn.microsoft.com/en-us/library ... S.85).aspx
En la udf sound.au3 esta función está definida como __SoundMciSendString.
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)
Otra efecto chulo sería el que cuando tocases el volumen oyeras en tiempo real como se baja y sube, sin tener que esperar a soltar el slider para ver los cambios. Aquí logré este efecto: http://www.emesn.com/autoitforum/viewto ... umen#p2428. Aunque seguramente hoy en día lo intentaría hacer con los eventos que tiene la librería.
Puedes enviar muchos tipos de mensajes de este estilo. Siguiendo este mismo mensaje se pueden poner varios ejemplos de manejo de volúmenes:
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
No os podeis ni imaginar los mensajes que se pueden enviar . Se puede grabar desde periféricos externos, modificar los sonidos, definir las propiedades del sonido (calidad, muestreo, etc), hacer marcas para luego trabajar con pedazos, cortar, copiar, y muchos etcs que ni se lo que hacen (No soy muy bueno en sonido).
Por supuesto también vale para todo lo que se refiere a video.
jonathan7 si quieres que te ayudemos con esos problemas pon el código del programa completo, para así no tener que estar teniendo que calentarnos la cabeza para adaptar las funciones al código y tener que poner controles.
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: XPlayer 1.01 (Reproductor de MP3)
Buebo yo me di el time y resolvi ambos problemas solo le agrege otro slider para cambiar de posicion te adjunto el codigo pero a mi modo nota elimine el menu ayuda junto con acerca de y web pues no lo necesitaba espero no te molestes.
este permite arrastrar eliminar algunos elementos arrastrados se actualiza e incluso permite detectar elementos duplicafos cosa q el original no lo hacia echale un ojo y dime que tal va
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
- XPyro
- Profesional del Autoit
- Mensajes: 542
- Registrado: 04 Mar 2007, 10:12
- Ubicación: México
- Contactar:
Re: XPlayer 1.01 (Reproductor de MP3)
No te preocupes por modificar el código, incluso tienes permiso de crear tu propio reproductor, lo único que pido es que le des los créditos correspondientes al autor
Re: XPlayer 1.01 (Reproductor de MP3)
Se ve muy bueno el programa pero no he podido descargarlo.. me da un error al extraer de que no hay ficheros para extraer..
Si alguien me puede facilitar un link del .exe directamente seria de mucha ayuda.
Saludos!
Si alguien me puede facilitar un link del .exe directamente seria de mucha ayuda.
Saludos!
Cause no one here can ever stop us! They can try but we won't let them! No way..
- XPyro
- Profesional del Autoit
- Mensajes: 542
- Registrado: 04 Mar 2007, 10:12
- Ubicación: México
- Contactar:
Re: XPlayer 1.01 (Reproductor de MP3)
El archivo no esta dañado, solo que se comprimió con 7zip y con este mismo se puede extraer, te lo dejo portable:
http://xportables.blogspot.com/2010/01/ ... p-910.html
http://xportables.blogspot.com/2010/01/ ... p-910.html