Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - BlackZeroX

#2881
si no me equivoco:

1.- Devuelve Datos segun el comando
2.- Longitud Maximo de los Datos que se semiten en el 1ro
3.- es un Callback a un proceso si el string lo amerita

Te voy a poner un ejemplo de mcisenstrin completoo para ver si lo entiendes mejor:

Crea un nuevo proyecto y solo has esto
solo nesesitas un formulario y un timer con nombre timer1
cambia la ruta del archivo multimedio

Código (vb) [Seleccionar]


Option Explicit
Private Declare Function mciGetErrorString Lib "winmm.dll" Alias "mciGetErrorStringA" _
   (ByVal dwError As Long, ByVal lpstrBuffer As String, ByVal uLength As Long) As Long
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
   (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

Private Error As Long
Private Reproduccion As String
Private archivo As String
Private TipoArchivo As String
Private alias As String

Private Sub Form_Load()
   Timer1.Interval = 100
   Timer1.Enabled = True
   archivo = "E:\Mi música\Slayer\slayer - reign in blood - jesus saves(2).mp3" ' puede ser una imagen, video o musica (video y musica nesesitan los codecs instalados)
   alias = "music"
   TipoArchivo = "mpegvideo" ' Esto no importa tanto sea cual sea el tipo lo reproducira xP
   Error = mciSendString("open " & Chr(34) & archivo & Chr(34) & " type " & TipoArchivo & " alias " & alias & " ", 0, 0, 0)
   Debug.Print ChecarError
   Error = mciSendString("play " & alias, 0, 0, 0) ' si es video o imagen puedes espesificar el HDC donde se reproducira icho elemento de lo contrio sera en una ventanilla emergente nueva
   Debug.Print ChecarError
End Sub
Public Function ChecarError() As String
   ChecarError = Space$(255)
   mciGetErrorString Error, ChecarError, Len(ChecarError)
End Function

Private Sub Form_Unload(Cancel As Integer)
   ' All cierra Todo lo que este abierto por mci
   'Error = mciSendString("close All", 0, 0, 0)
   Error = mciSendString("close " & alias, 0, 0, 0)
   Debug.Print ChecarError
End Sub

Private Sub Timer1_Timer()
   Dim Data As String * 128
   Error = mciSendString("status " & alias & " mode", Data, 128, 0)
   Debug.Print ChecarError
   Reproduccion = Left(Data, 7)
   If Reproduccion = "playing" Then
       Caption = "Reproduciendo"
   Else
       Caption = "Detenido"
   End If
End Sub




P.D.: Si gustas te paso una Dll (InfraMedia.dll Ir al Post) que hace esto y mucho mas!¡, tecnicamente esta dll es la que use para Mi Reproductor de musica, solo que la dll es un compilado externo y en el reproductor esta source code mas no como dll.

Dulces Lunas!¡.
#2882
Hay algunas teclas en los teclados que no son detectadas por nada solo por el driver que controla el teclado por ejemplo, en mi teclado tengo 15 botones que un Keylogger no las detecta mas sin encambio si veo sus efectos es por que se comunica directamente con el driver, hay  que tomar en cuenta eso.

Por ejemplo uno de esos botones controla la posicion X,Y de mi pantalla

P.D.: No me crean tanto, pero tampoco lo ignoren

Dulces Lunas!¡.
#2883
Cita de: Rudy21 en 30 Septiembre 2009, 06:14 AM
Humm estuve buscano en el foro y no encontre lo que me dices,

me podrias dar alguna ayuda

o referencia para buscar


gracias :D

como dige ya hace 4 años ni idea del nombre del post sorry, pero de que esta esta
#2884
Cita de: the_chaoz en 30 Septiembre 2009, 05:44 AM
gracias x la respuesta voy a tratar de aplicarla a ese codigo
pregunta:
las matrices hacen que el programa use menos recursos, corra mas rapido o algo asi, o simplemente es para simplificar el codigo???

Solopor mencionarte algo que se me paso:

Las matrizes son contigus y los controles independientes No
Es decir contiguas en memoria una tras otra
El usar matrices Disminuye las lineas de programaciòn y algo que debe tener el programador en cuenta es que menor sea la cantidad de lineas mucho mejor
El usarmatrices disminuye el peso del programa final y por consiguiente usa menos memoria por si solo (Exepto cuando carga archivos externos a el ejecutable final como por ejemplo juegos como el Need for speed que carga los objetos como archivos de musica de archivos externos a el exe del juego)

En rendimiento si hay algo pero en tu programa esto la verdad no importa ya que tu programa es solo una manejador del windows media player el cual realisa todo el trabajo, en otros aspectos si mejora todo

P.D. usa MCISendString, MCIExecute  o MCICommand para reproducir multimedios

Ejemplo SUPER Basico:

Código (vb) [Seleccionar]

mcisendstring("play c:\musica.mp3",0,0,0)


Se puede usar un alias para manipular el multimedio pero es cosa que desees usar el mci en lugar del WMP

MciSendStringm MCIcommand y MCIExecute  son APIS de windows como Optativa mciGetErrorString

Dulces Lunas!¡.
#2885
Un TIP: Aqui en este foro como ya hace unos 4 años o un poco mas me di cuenta que estaban haciendo un proyector de tomar la pantalla pero solo los frragmentos cambiados todo onfly, lo terminaron y por hay anda.

Algo que hice en base a la idea en de ese proyecto es que puedes hacer capturas y solo tomar los cambios pertinentes y con la imagen completa primeria ir sobre escribiendo en X, Y los pixeles cambiados algo comolo hace el codec MPEG pero mas podre, pero mejor xP y mejor aun sin tomar capturas completas de la pantalla  ;-) ;-) ;-) y para reproducirlo usar tu propio algoritmo xD tipo peli pero que solo se pueda reproducir con tu programa es decir algo como tu propio codec pero mas podre y limitado xS.

Dulces Lunas
#2886
Otra opcion es con AddAtom() y GetAtom() (Me parece que asi se llamaban las apis...) verificar si existe

Dulces Lunas!¡.
#2887
Cita de: the_chaoz en 30 Septiembre 2009, 05:21 AM
sisi, si yo a ese codigo le saco todo esto:
Código (vb) [Seleccionar]
Slider.Max = WMP.currentMedia.duration
me anda perfecto
pero no entendi eso de acortar el codigo usando matrizes de los controles


las matrices de controles son controles con el mismo NOMBRe pero con un identificadar unico llamado index de tipo entero

un ejemplo es este

1.- Crea un control X (que no sea linea u otro no tienen dichas opciones)
2.- Copea ese control con el comando copiar y pegalo nuevamente, te aparece un mensaje que te dice si deseas crear una serie de controles tipo matriz responde que si
    Alternativa, un poco mas laboriosa: puede dibujar otro control, hubica en propiedades la propiedad index y ponle un Cero 0 y en el otro control ponle 1 y cambiale su nombre al del control con matriz Cero
3.- entra en el codigo fuente de uno de los dos controles, es decir dale doble click a uno de los dos para ir al proceso determinado, escribe lo siguiente:

Código (vb) [Seleccionar]


Select case index
case 0
  msgbox "Objecto con matriz Cero"
case 1
  inputbox "Holaaaaa matriz uno","Holaaaaa matriz uno","Holaaaaa matriz uno"
case 2
  debug.printf "Holaaaaa matriz dos"
etc
case else
  msgbox "Este mensaje JAmas deberia aparecer almenos que se modifique la cantidad de controles con matriz y este sea mayor a 3 objetos"
end select ' No recuerdo si si es end select con esto que me meti a C++ ya no recuerdo bien xP



los objetos con arreglo, matriz... que al dado caso tienen un mismo nombre pero diferente indexaciòn (index) comparten el mismo PROCESO y por obvias razones el mismo NOMBRE y deben ser del MISMO TIPO es decir matriz de textbox, command buton o inclusive clases (que al dado caso todo control seria una clase).

La particularidad de los procesos con matriz es que tienen una opcion o variante llamada index de tipo entero y los otro NO

Ejemplo:

Código (vb) [Seleccionar]


' proceso de un objeto SIN MATRIZ
private sub text1_click()
end sub
'proceso de un objeto Matrizado, TODOS los objetos con el mismo nombre usaran este proceso y cada objeto serà identificado por index
private sub text1_click(index as integer)
end sub



P.D.: No tenia nada que hacer asi que me parecio buena idea explicarte esto xP

Dulces Lunas!¡.
#2888
usa el boton Buscar este codigo ya se ha posteado con anterioridad

Dulces Lunas!¡.
#2889
intenta poner esto

Código (vb) [Seleccionar]

If Right(File1.Path, 1) <> "\" Then
   ruta = File1.Path & "\" & File1.FileName
Else
   ruta = File1.Path & File1.FileName
End If

' // En una linea seria mejor!¡.

ruta = File1.Path & iif(Right(File1.Path, 1) <> "\", "\" & File1.FileName, File1.FileName)


Código (vb) [Seleccionar]

' //
' //No cuento con el VB a la mano, cualquier error lo podràs corregir!¡.
' //
if dir(ruta,vbarchive)<>"" then
  setattr ruta,vbnormal
  kill ruta
else ' Solo para debug
  debug.print "Ruta de Archivo no encontrado",ruta
end if



y si ya estas harto con el kill y setearle atributos con setattr usa la API DeleteFile

Código (vb) [Seleccionar]


Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long

Proceso_X()
{
 dim rs as long
 rs=deletefile(ruta)
}



Dulces Lunas!¡.
#2890
setattr()

kill() '// No borra archivo ocultos o similares/derivados como los abiertos por ejemplo, setattr() ejecuta antes los pones en modo normal y despues le pasas el kill()

Espero sea eso lo de que algunos archivos los borra y otros no.!¡

Dulces Lunas.