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 - adla

#1
Cita de: Serapis en 13 Noviembre 2021, 00:36 AM
Si, cuando falta contexto no ...

hola, no sé por que no recibo avisos de nuevos mensajes en el foro y lo tengo activado..

bueno, ahora estoy a tope con el curro y me queda poco tiempo para las aficiones, he pensado en un programilla que reprodujera un mp3 y diese opción a 'pintar' los encendidos de las luces pero no tengo ni idea de por donde empezar, mis conocimientos son muy básico.. dejo la idea por alguien tiene algo parecido.

gracias por todo Serapis, eres una máquina, ojalá yo dominase esto como tú.



#2
Cita de: Serapis en 10 Noviembre 2021, 20:22 PM
adla,  Tengo una buena noticia para tí...

Me picaba el gusanillo de probar que de alguna manera fuera posible y simple lograr lo que reclamas y lo he conseguido.
...

muchisimas gracias Serapis, te lo has trabajado, no he conseguido que me funcione porque quizas tenia que haber dicho que tengo el keypreview en true para que sea el formulario el que tome la pulsación, no es una caja de texto y por tanto no necesito mostrar el valor del keyascii.. la idea es o era, no es tan fácil, quiero hacer que una serie de luces se enciendan al ritmo de una melodía, para ello uso un arduino, reles, etc, y lo que hago es poner la canción 2 o 3 segundos, escribo el código para que se enciendan o apaguen, luego vuelvo al inicio de la cancion oigo otros 2 o 3 segundos más es decir 4 o 6, escribo el código para que se enciendan o apaguen, luego vuelvo al inicio de la cancion oigo otros 2 o 3 segundos más es decir entre 6 y 8 segundos, te puedes imaginar las veces que tengo que oir el tema, cuando llevo un minuto la he oido 30 o 40 veces y ya tengo las luces des-sincronizadas totalmente y soy incapaz de pillar el hilo, hacer esto me lleva semanas o meses,

[youtube=640,360]https://youtu.be/6iSElfabvC8[/youtube]

asi que pensé en asignar un relé a cada tecla y luego intentar seguir el ritmo de la música pulsando las teclas que se corresponderían con cada luz, por eso necesito saber cuanto tiempo permanece pulsada cada tecla para poder darle el tiempo a la luz encendida.. no se si lo he conseguido entender.. bueno sea como sea también es muy dificil conseguir sincronizar las luces así..

he conseguido solucionar el tema de esta forma y puesto que solo tenemos 10 dedos, esas serán las teclas que podamos pulsar a la vez, así que metemos las teclas pulsadas en un cadena y para cada repetición comprobamos si ya existe esa tecla en la cadena, si no existe la añadimos, al soltar la tecla borramos el código de la cadena..




Dim teclasPulsadas as String

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
   If InStr(teclasPulsadas, "(" & Str(KeyCode) & ")") = 0 Then

'---- lo que queramos hacer ----

       teclasPulsadas = teclasPulsadas & "(" & Str(KeyCode) & ")"
   End If
End Sub



Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
   teclasPulsadas = Replace(teclasPulsadas, "(" & Str(KeyCode) & ")", "")
End Sub

#3
hola,

edito el mensaje, lo pregunto mejor:

¿hay alguna forma de evitar la repetición de una tecla o varias en el evento keydown? es decir que si mantengo pulsado el 1, no aparezca 11111111111111111111111111.....

gracias
#4
Programación Visual Basic / soap generico
28 Noviembre 2020, 21:14 PM
hola,

estoy buscando algo generico en VB6 que sirva para todos los servicios web del mundo de esta forma, he probado todo lo que he visto por la red pero solo me ha funcionado una consulta con un servicio para la conversin de grados C a F y ademas he tenido que cambiar cosas porque eran antiguo, aun asi no es generico solo funciona con ese ejemplo y no tiene usuario y contraseña.. No se si es posible lo que digo.

Url del servicio: https://....

Usuario: usu
Clave: 123

Consulta: <?xml version..>

[boton:pulsa para enviar consulta y obtener respuesta]

Respuesta: <...

gracias.
#5
creo que se produce porque hay caracteres raros bien en el archivo.eml o bien en el archivo embebido..
#6
Cita de: AlbertoBSD en 14 Noviembre 2020, 06:28 AM
No se si todos tus eml tengan algún detalle, uno de ellos como te comente por correo estaba "dañado", se supone que deberia de estar X cantidad de información en una línea y en tu archivo tenia un salto de linea en medio eso colgó el programa.

Ya funciona para los ejemplos que me pasaste mira las imágenes





El codigo esta actualizado en el post donde lo publique, en este mismo Hilo.

Saludos


hola, gracias por todo, lo he compilado pero cuando lo ejecuto se rompe y da este error, no sé si será un problema puntual de mi máquina..

Firma con problemas:
  Nombre del evento de problema:   APPCRASH
  Nombre de la aplicación:   extrae_eml.exe
  Versión de la aplicación:   0.0.0.0
  Marca de tiempo de la aplicación:   5fb22c7c
  Nombre del módulo con errores:   extrae_eml.exe
  Versión del módulo con errores:   0.0.0.0
  Marca de tiempo del módulo con errores:   5fb22c7c
  Código de excepción:   c0000005
  Desplazamiento de excepción:   000018fd
  Versión del sistema operativo:   6.1.7601.2.1.0.256.48
  Id. de configuración regional:   3082
  Información adicional 1:   0a9e
  Información adicional 2:   0a9e372d3b4ad19135b953a78882e789
  Información adicional 3:   0a9e
  Información adicional 4:   0a9e372d3b4ad19135b953a78882e789

Lea nuestra declaración de privacidad en línea:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0c0a

Si la declaración de privacidad en línea no está disponible, lea la declaración de privacidad sin conexión:
  C:\Windows\system32\es-ES\erofflps.txt
#7

Cita de: [D]aniel en 11 Noviembre 2020, 13:49 PM
Hola, en el primer parámetro tenes que pasar un directorio y vos estás pasando un solo archivo, tenés que indicar un directorio donde estén todos esos archivos que querés procesar.

Además el segundo parámetro le estás indicando una unidad como ubicación pero no una carpeta y es recomendable que crees una carpeta para alojar todos los archivos destinos, por ejemplo el comando podría ser:

"D:\agua o cocacola" "D:\Adjuntos de correos EML"


Saludos

no le paso la ruta porque el ejecutable y el archivo estan en la misma carpeta de hecho lo encuentra. He probado poniendo la ruta entera, con la carpeta creada, con la misma carpeta de entrada y con todo lo que se me ha pasado por la cabeza pero he subido solo una imagen. Gracias, Saludos
#8
hola, muchas gracias por todo, pero no consigo que me extraiga el adjunto..



no aparece la imagen adjunta, esta aqui http://www.franci.es/tmp/eml-no.jpg
#9
Cita de: AlbertoBSD en 10 Noviembre 2020, 15:59 PM
Te puedo ayudar , pero no tengo compilador de VB ni de tecnologías Microsoft en este momento, pasame un archivo EML y con gusto le hecho un ojo para extraer todas los adjuntos, por cierto que ya debería de existir un programa que haga eso no?




Edito ya vi la estructura del archivo y no esta tan complicada.

Pregunta:

Quieres todos los adjuntos incluidos los que aparecen en el body del mensaje como imagenes y demas o solo considerados realmente "attachment" ?

Las imágenes del body y demás tienen un "inline" en el código ejemplo
Content-Disposition: inline; filename="background.gif"

O solo los "attachment"
Content-Disposition: attachment; filename="attachment.txt"


Saludos!

he encontrado esto: https://www.enmimaquinafunciona.com/pregunta/51267/como-extraer-los-datos-adjuntos-de-archivos-eml-con-la-linea-de-comandos-de-windows
pero no funcionan los enlaces..

aqui puedes descargar un zip que contiene un eml con un solo adjunto.. la idea es que extraiga todos los adjuntos, aunque este solo contiene uno. Solo los adjuntos pero si son imagenes tambien, no los logos que tenga el cuerpo.

Muchas gracias Alberto.

#10
doy mas información, porque no consigo hacerlo, creo que la idea la tengo pero no me centro, estoy con una medicación fuerte para la ansiedad y la depresión que no me deja pensar.

1. la idea es abrir el fichero .eml y recorrerlo hasta encontrar "filename=" que contiene el nombre del adjunto, algo asi:

Private Sub VerContenido(Fichero As String)
    Dim Canal As Integer
    Dim Cadena As String
    Dim NombreArchivo As String
    Dim Contenido As String
    Dim Adjunto As String
    Dim t As Integer

    If Len(Fichero) = 0 Then Exit Sub

    NombreArchivo = ""
    Contenido = ""
    Adjunto = ""

    Canal = FreeFile()
    Open Fichero For Input As #Canal

    Do While Not EOF(Canal)
        'lee una linea del fichero origen
        Line Input #Canal, Cadena

   ' Si la variable NombreArchivo esta vacia el contenido se añade a Contenido
        ' Aqui se guarda todo el mensaje del correo menos los adjuntos en txt
        If NombreArchivo = "" Then Contenido = Contenido + Cadena + Chr$(13) + Chr$(10)
        ' Si se ha encontrado el nombre de un adjunto
        ' el contenido del adjunto se guarda en la variable Adjunto
        If NombreArchivo <> "" Then
            If Cadena <> "" Then
                Adjunto = Adjunto + Cadena
            End If
        End If

   ' Si encontramos "filename=" quiere decir que hay un adjunto
        t = InStr(LCase(Cadena), "filename=")
        If t > 0 Then
            NombreArchivo = Mid$(Cadena, t + 10)
            NombreArchivo = Left(NombreArchivo, Len(NombreArchivo) - 1)
        End If
    Loop
    Close #Canal    ' Cierra el archivo.

End Sub

2. Ahora tenemos dos variables, Contenido con todo el mensaje menos los adjuntos que se guardaria como aguaococacola.txt y la variable Adjunto que contiene el adjunto codificado en Base64, habria que pasar esa codificación a binario y guardarla como aguaococacola.pps, para eso he encontrado estas funciones:

' Codificar y Decodificar en BASE64

Public Function DecodeBase64(ByVal strData As String) As Byte()
    Dim objXML As Object
    Dim objNode As Object

    Set objXML = CreateObject("MSXML2.DOMDocument")
    Set objNode = objXML.createElement("b64")
    objNode.dataType = "bin.base64"
    objNode.Text = strData
    DecodeBase64 = objNode.nodeTypedValue

    Set objNode = Nothing
    Set objXML = Nothing

End Function


Public Function EnecodeBase64(ByVal strData As String) As Byte()
    Dim objStream As Object
    Dim objNode As Object
    Dim objXML As Object
    Dim bArray() As Byte

    Set objStream = CreateObject("ADODB.Stream")

    With objStream
        .Type = 2
        .Open
        .Charset = "unicode"
        .WriteText strData
        .Flush
        .Position = 0
        .Type = 1
        .read (2)
        bArray = .read
        .Close
    End With

    Set objXML = CreateObject("MSXML2.DOMDocument")
    Set objNode = objXML.createElement("b64")

    objNode.dataType = "bin.base64"
    objNode.nodeTypedValue = bArray
    EnecodeBase64 = objNode.Text

    Set objStream = Nothing
    Set objNode = Nothing
    Set objXML = Nothing

End Function

3. Si hay varios adjuntos se tiene que repetir el proceso.

a). Tengo problemas para encontrar el final del adjunto.
b). No sé como pasar la variable Adjunto para que funcione la decodificacion Base64
c). No sé como guardar el archivo Adjunto una vez pasado a binario.

He intentado varias cosas pero todas me dan error. Alguien me puede ayudar  :-(

Gracias, un saludo.