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

#21
.NET (C#, VB.NET, ASP) / Cargar una imagen
8 Mayo 2016, 19:18 PM
Alguien me pudiera ayudar, necesito cargar en un picturebox desde un array de bytes, les dejo un ejemplo para que lo vean mejor y así alguien pueda ayudar, gracias

Código (vbnet) [Seleccionar]

Dim Arr() As Byte = {}
Arr = System.IO.Files.ReadAllBytes("C:\1.jpg")

'La pregunta es como mostrar la imagen en un picturebox desde el array Arr
#22
gracias por los aportes, los voy a probar y después les cuento.
#23
Tengo un Array que en cada uno de sus elementos tiene separados por punto y coma lo que serían los datos de diferentes columnas. por ejemplo:

Código (vbnet) [Seleccionar]

Dim X() As String = {"052;Juan;Lopez;México", "101;Enrique;Morales;Guatemala", "005;John;McCain;USA", "034;María;Delgado;España"}

        'De esta manera me organiza la información por el primer Campo (Los números).
        Array.Sort(X)

        'Deseo Organizar por otros campos que no sea el primero.
        '¿...?
#24
Este código me resuelve el problema, pero si alguien lo puede mejorar o tiene otra idea, bienvenida sea

Código (vbnet) [Seleccionar]

    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer)
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
    Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Integer, ByVal nCmdShow As Integer) As Integer
    Private Const SW_HIDE = 0
    Private Const SW_SHOW = 5

    Private Sub Form1_Click(sender As Object, e As EventArgs) Handles Me.Click
        Dim h As Long
        h = FindWindow(vbNullString, "Form1")
        If h > 0 Then
            ShowWindow(h, SW_HIDE)
            Sleep(20000)
            ShowWindow(h, SW_SHOW)
        End If
    End Sub

#25
Lo importante es que la aplicación se ejecute en segundo plano, o sea, que en el administrador de tareas no salga en el listado de aplicaciones y que si salga en el listado de procesos en segundo plano. Algo que ocurre automaticamente en VB6 al usar App.Taskvisible = False, pero en .NET no se como sería.

Gracias
por todas las ideas
#26
Cita de: bybaal en 24 Diciembre 2015, 21:07 PM
Ahora si funciona perfectamente, gracias por todo


Me he dado cuenta de que la perfección no se logra tan fácilmente, ya que al código solo le falta que la aplicación se ejecute en segundo plano, o sea, que en el administrador de tareas no salga en el listado de aplicaciones y que si salga en el listado de procesos en segundo plano.

Gracias por la ayuda

#27
OK, muchas gracias, funciona perfectamente.

Cita de: Eleкtro en 13 Enero 2016, 09:55 AM
Los métodos del namespace My son útiles y sencillos ...pero limitados, trata de evitarlos.

Teniendo el web-proxy:
Código (vbnet) [Seleccionar]
Dim proxy As New WebProxy("proxydeprueba", 3128)
proxy.Credentials = New NetworkCredential("yomismo", "mipass,")


Puedes utilizar la class webclient para descargar el archivo de forma sincrónica o asíncrona para utilizar sus eventos de reporte de progreso:
Código (vbnet) [Seleccionar]
Using wc As New WebClient
   wc.Proxy = proxy
   wc.DownloadFile("https://foro.elhacker.net/Themes/converted/selogo.jpg", "C:\selogo.jpg")
End Using


O también la class WebRequest / HttpWebRequest:
Código (vbnet) [Seleccionar]
Dim request As WebRequest = WebRequest.Create("https://foro.elhacker.net/Themes/converted/selogo.jpg")

With request
   .Proxy = proxy
End With

Using sr As Stream = (request.GetResponse.GetResponseStream)

   Using fs As FileStream = File.Create("c:\selogo.jpg")
       sr.CopyTo(fs)
   End Using

End Using

También puedes realizar una copia del stream por bloques si prefieres reportar el progreso de la copia en archivos grandes.




Código fuente sacado de mi API ElektroKit:


Como puedes ver, con el siguiente método se intenta evitar o automatizar la asignación de un nombre de archivo de destino, aunque no es un algoritmo perfecto.
El código original utiliza una lista de MimeTypes para una mejor detección del tipo o extensión del archivo de destino, pero la he eliminado para reducir el código que mostrarte aquí en el foro, y le añadí el parámetro del proxy.
Si descomentas las lineas de variables comentadas puedes extender el método para reportar el progreso mediante eventos.

Ejemplo de uso:
Código (vbnet) [Seleccionar]
DownloadFile(proxy, "http://download.thinkbroadband.com/5MB.zip", "C:\")

Snippet:
Código (vbnet) [Seleccionar]
Public Shared Sub DownloadFile(ByVal proxy As WebProxy,
                              ByVal url As String,
                              ByVal dirpath As String)

   Dim req As HttpWebRequest = DirectCast(HttpWebRequest.Create(url), HttpWebRequest)
   req.Proxy = proxy

   Using resp As WebResponse = req.GetResponse

       Dim filename As String = ""

       Try
           filename = Path.GetFileName(resp.ResponseUri.AbsoluteUri)

       Catch ex As Exception
           filename = String.Format("{0}.{1}", Path.GetFileNameWithoutExtension(Path.GetRandomFileName), "file")

       Finally
           If Not Path.HasExtension(filename) Then
               filename.Insert(filename.Length, ".file")
           End If

       End Try

       Dim buffer As Byte() = New Byte(1023) {}
       Dim bytesRead As Integer
       ' Dim totalBytes As Long
       ' Dim receivedBytes As Long

       Using fs As New FileStream(Path.Combine(dirpath, filename), FileMode.CreateNew, FileAccess.ReadWrite, FileShare.Read)

           Using data As Stream = resp.GetResponseStream

               ' totalBytes = data.Length
               bytesRead = data.Read(buffer, 0, buffer.Length)

               While (bytesRead > 0)
                   fs.Write(buffer, 0, bytesRead)
                   ' receivedBytes += bytesRead
                   bytesRead = data.Read(buffer, 0, buffer.Length)
               End While

           End Using

       End Using

   End Using

End Sub


Saludos!
#28
Hola a todos, he encontrado un tema muy viejo que habla sobre descargar un archivo de internet, pero no utilizaba un proxy con autentificación, que es lo que necesito y al ejemplo que se utilizó no se como combinarlo con lo que tengo, aquí les dejo ambos para ver si alguien me puede ayudar

Ejemplo del tema viejo

Código (vbnet) [Seleccionar]

My.Computer.Network.DownloadFile("https://foro.elhacker.net/Themes/converted/selogo.jpg", "c:\1.jpg"


Esto es lo que tengo y no se como combinarlos

Código (vbnet) [Seleccionar]

Dim proxy As New WebProxy("proxydeprueba.com:3128", False)
proxy.Credentials = New NetworkCredential("yomismo", "mipass,")


Gracias por los aportes que puedan dar
#29
Discúlpame por demorarme en responder, es que ya casi había dado este tema como sin solución de corto plazo, pero bueno, aquí vamos.

Voy a tratar de explicarlo mejor ya que después me di cuenta que hay librerías que me permiten hacer lo que necesito, lo que pasa es que no me encontré ninguna que fuera free o un código para poder hacerlo.

Lo que en realidad necesito es desde mi programa llevar el control de lo que se imprime en cada impresora local, o sea; el nombre y ubicación de los documentos, cantidad de hojas impresas de los documentos.

Salu2s

PD: puse este problema aquí pensando que alguien me podía ayudar con algún segmento de código, pero si aparece una librería free u otra solución, bienvenida sea.

Cita de: Eleкtro en 20 Diciembre 2015, 08:16 AM
Llego bastante tarde a responder (es lo que sucede si se publica en la sección equivocada, jeje), pero, ¿ya solucionaste el problema?, como veo que no recibiste respuesta te dejo alguna ayuda por si acaso...

Puedes hacerlo al menos de dos formas, la primera sería invocando el verbo de impresión del archivo (la constante "print"), con la class Process:
Código (vbnet) [Seleccionar]

Using p As New Process
   p.StartInfo.FileName = "C:\Imagen.png"
   p.StartInfo.Verb = "Print"
   p.Start()
End Using


Y la segunda manera sería utilizar la class PrintDocument para dibujar la imagen en el evento PrintPage, pero este modo en mi opinión es para tareas más sofisticadas que una simple impresión de un archivo multimedia.

Saludos
#30
Ahora si quedo perfecto   ;-)

Cita de: Eleкtro en  8 Enero 2016, 20:37 PM
Tienes razón, un fallo tonto. La manera correcta de obtener el índice de la columna sería la siguiente:

Código (vbnet) [Seleccionar]
Dim columnindex As Integer = hitTest.Item.SubItems.IndexOf(hitTest.SubItem)

Con eso ya puedes solucionar el problema.

Por cierto, de nada.

Saludos!