XPlayer 1.01 (Reproductor de MP3)

y programas personales para otros como tu, puede que te corrijan ;)
Responder
Avatar de Usuario
XPyro
Profesional del Autoit
Mensajes: 542
Registrado: 04 Mar 2007, 10:12
Ubicación: México
Contactar:

Re: XPlayer 1.01 (Reproductor de MP3)

Mensaje por XPyro »

Actualizado a la versión 1.01 :smt006
Imagen
owned2x
Mensajes: 5
Registrado: 30 Ene 2010, 06:23

Re: XPlayer 1.01 (Reproductor de MP3)

Mensaje por owned2x »

archivo dañado, no puedo descomprimir :smt021
Avatar de Usuario
XPyro
Profesional del Autoit
Mensajes: 542
Registrado: 04 Mar 2007, 10:12
Ubicación: México
Contactar:

Re: XPlayer 1.01 (Reproductor de MP3)

Mensaje por XPyro »

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 :smt006
Imagen
jonathan7
Mensajes: 10
Registrado: 27 Feb 2010, 02:47

Re: XPlayer 1.01 (Reproductor de MP3)

Mensaje por jonathan7 »

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

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
y para la segunda:

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
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 :smt041
Avatar de Usuario
XPyro
Profesional del Autoit
Mensajes: 542
Registrado: 04 Mar 2007, 10:12
Ubicación: México
Contactar:

Re: XPlayer 1.01 (Reproductor de MP3)

Mensaje por XPyro »

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 :smt003

Espero ponerme al día ya que no cuento con mucho tiempo pero veremos que mejoramos :smt006
Imagen
Avatar de Usuario
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)

Mensaje por Chefito »

Jejeje....si quereis os ayudo :smt002 . Se puede hacer un reproductor muy muy majo si le sacamos partido a las apis de la librería winmm.dll :smt002 .
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.
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
Mmmmm....eso no mola nada :smt012 . Evitalo utilizando esto:

Código: Seleccionar todo

__SoundMciSendString("setaudio " & $aSnd_id & " volume to " & $volumen)
donde la variable volumen puede comprender un valor entre 0 y 1000. Con esto se evita el tocar volúmenes de win :smt002 .
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
etc etc etc y muchos muchos etcs :smt005 :smt005 .
No os podeis ni imaginar los mensajes que se pueden enviar :smt003 . 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 :smt005 (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 ;).
jonathan7
Mensajes: 10
Registrado: 27 Feb 2010, 02:47

Re: XPlayer 1.01 (Reproductor de MP3)

Mensaje por jonathan7 »

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.

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
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
Avatar de Usuario
XPyro
Profesional del Autoit
Mensajes: 542
Registrado: 04 Mar 2007, 10:12
Ubicación: México
Contactar:

Re: XPlayer 1.01 (Reproductor de MP3)

Mensaje por XPyro »

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 :smt016 :smt006
Imagen
Avatar de Usuario
Fredinchy
Aprendiz de Mago
Mensajes: 32
Registrado: 30 Mar 2010, 01:27
Ubicación: Unknown

Re: XPlayer 1.01 (Reproductor de MP3)

Mensaje por Fredinchy »

Se ve muy bueno el programa pero no he podido descargarlo.. me da un error al extraer de que no hay ficheros para extraer.. :smt022

Si alguien me puede facilitar un link del .exe directamente seria de mucha ayuda.

Saludos! :smt026
Cause no one here can ever stop us! They can try but we won't let them! No way.. :smt020
Avatar de Usuario
XPyro
Profesional del Autoit
Mensajes: 542
Registrado: 04 Mar 2007, 10:12
Ubicación: México
Contactar:

Re: XPlayer 1.01 (Reproductor de MP3)

Mensaje por XPyro »

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


:smt006
Imagen
Responder