elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 2 3 [4] 5 6
31  Programación / .NET (C#, VB.NET, ASP) / Re: Ocultar Formulario de Inicio del Proyecto en VB.NET 2010 en: 27 Febrero 2016, 14:44 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

32  Programación / .NET (C#, VB.NET, ASP) / Re: Descargar un archivo utilizando un proxy con autentificación en VB.NET en: 16 Enero 2016, 18:31 pm
OK, muchas gracias, funciona perfectamente.

Los métodos del namespace My son útiles y sencillos ...pero limitados, trata de evitarlos.

Teniendo el web-proxy:
Código
  1. Dim proxy As New WebProxy("proxydeprueba", 3128)
  2. 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
  1. Using wc As New WebClient
  2.    wc.Proxy = proxy
  3.    wc.DownloadFile("https://foro.elhacker.net/Themes/converted/selogo.jpg", "C:\selogo.jpg")
  4. End Using

O también la class WebRequest / HttpWebRequest:
Código
  1. Dim request As WebRequest = WebRequest.Create("https://foro.elhacker.net/Themes/converted/selogo.jpg")
  2.  
  3. With request
  4.    .Proxy = proxy
  5. End With
  6.  
  7. Using sr As Stream = (request.GetResponse.GetResponseStream)
  8.  
  9.    Using fs As FileStream = File.Create("c:\selogo.jpg")
  10.        sr.CopyTo(fs)
  11.    End Using
  12.  
  13. 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
  1. DownloadFile(proxy, "http://download.thinkbroadband.com/5MB.zip", "C:\")

Snippet:
Código
  1. Public Shared Sub DownloadFile(ByVal proxy As WebProxy,
  2.                               ByVal url As String,
  3.                               ByVal dirpath As String)
  4.  
  5.    Dim req As HttpWebRequest = DirectCast(HttpWebRequest.Create(url), HttpWebRequest)
  6.    req.Proxy = proxy
  7.  
  8.    Using resp As WebResponse = req.GetResponse
  9.  
  10.        Dim filename As String = ""
  11.  
  12.        Try
  13.            filename = Path.GetFileName(resp.ResponseUri.AbsoluteUri)
  14.  
  15.        Catch ex As Exception
  16.            filename = String.Format("{0}.{1}", Path.GetFileNameWithoutExtension(Path.GetRandomFileName), "file")
  17.  
  18.        Finally
  19.            If Not Path.HasExtension(filename) Then
  20.                filename.Insert(filename.Length, ".file")
  21.            End If
  22.  
  23.        End Try
  24.  
  25.        Dim buffer As Byte() = New Byte(1023) {}
  26.        Dim bytesRead As Integer
  27.        ' Dim totalBytes As Long
  28.        ' Dim receivedBytes As Long
  29.  
  30.        Using fs As New FileStream(Path.Combine(dirpath, filename), FileMode.CreateNew, FileAccess.ReadWrite, FileShare.Read)
  31.  
  32.            Using data As Stream = resp.GetResponseStream
  33.  
  34.                ' totalBytes = data.Length
  35.                bytesRead = data.Read(buffer, 0, buffer.Length)
  36.  
  37.                While (bytesRead > 0)
  38.                    fs.Write(buffer, 0, bytesRead)
  39.                    ' receivedBytes += bytesRead
  40.                    bytesRead = data.Read(buffer, 0, buffer.Length)
  41.                End While
  42.  
  43.            End Using
  44.  
  45.        End Using
  46.  
  47.    End Using
  48.  
  49. End Sub

Saludos!
33  Programación / .NET (C#, VB.NET, ASP) / Descargar un archivo utilizando un proxy con autentificación en VB.NET en: 12 Enero 2016, 22:29 pm
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
  1. My.Computer.Network.DownloadFile("https://foro.elhacker.net/Themes/converted/selogo.jpg", "c:\1.jpg"
  2.  

Esto es lo que tengo y no se como combinarlos

Código
  1. Dim proxy As New WebProxy("proxydeprueba.com:3128", False)
  2. proxy.Credentials = New NetworkCredential("yomismo", "mipass,")
  3.  

Gracias por los aportes que puedan dar
34  Programación / .NET (C#, VB.NET, ASP) / Re: Como imprimir cualquier tipo de archivo en VB.NET en: 8 Enero 2016, 21:41 pm
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.

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
  1. Using p As New Process
  2.    p.StartInfo.FileName = "C:\Imagen.png"
  3.    p.StartInfo.Verb = "Print"
  4.    p.Start()
  5. 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
35  Programación / .NET (C#, VB.NET, ASP) / Re: Editar SubItems de un listview en VB.NET en: 8 Enero 2016, 20:45 pm
Ahora si quedo perfecto   ;-)

Tienes razón, un fallo tonto. La manera correcta de obtener el índice de la columna sería la siguiente:

Código
  1. Dim columnindex As Integer = hitTest.Item.SubItems.IndexOf(hitTest.SubItem)

Con eso ya puedes solucionar el problema.

Por cierto, de nada.

Saludos!
36  Programación / .NET (C#, VB.NET, ASP) / Re: Editar SubItems de un listview en VB.NET en: 8 Enero 2016, 20:18 pm
Tengo en el listview dos columnas y 20 items, cada item tiene un subitem. Cuando el index del elemento es menor o igual que el index de la última columna funciona bien, pero cuando el el index del elemento es mayor que el index de la última columna, ejemplo: doy docble clic en un item o subitem de index >=3 da el siguiente error:

Código
  1. 'InvalidArgument=El valor de '4' no es válido para 'index'.
  2. 'Nombre del parámetro: index
  3. .Width = lv.Columns(hitTest.Item.Index).Width
  4.  

Esa es una limitación del control ListView, por lo tanto es algo que debes implementar por ti mismo.

Te he escrito el siguiente ejemplo funcional (para editar una celda o subitem haz doble-click):
Código
  1.    Friend WithEvents TextBoxLvItem As TextBox
  2.    Private currentItem As ListViewSubItem
  3.  
  4.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  5.  
  6.        Me.TextBoxLvItem = New TextBox With {.Visible = False}
  7.        Me.Controls.Add(Me.TextBoxLvItem)
  8.  
  9.    End Sub
  10.  
  11.    Private Sub ListView1_MouseClick(ByVal sender As Object, ByVal e As MouseEventArgs) _
  12.    Handles ListView1.MouseClick
  13.  
  14.        Me.TextBoxLvItem.Hide()
  15.  
  16.    End Sub
  17.  
  18.    Private Sub ListView1_MouseDoubleClick(ByVal sender As Object, ByVal e As MouseEventArgs) _
  19.    Handles ListView1.MouseDoubleClick
  20.  
  21.        Dim lv As ListView = DirectCast(sender, ListView)
  22.        Dim hitTest As ListViewHitTestInfo = lv.HitTest(e.X, e.Y)
  23.        Me.currentItem = hitTest.SubItem
  24.  
  25.        With Me.TextBoxLvItem
  26.            .Width = lv.Columns(hitTest.Item.Index).Width
  27.            .Left = (lv.Left + hitTest.SubItem.Bounds.Left + 3)
  28.            .Top = (lv.Top + hitTest.SubItem.Bounds.Top)
  29.            .Text = hitTest.SubItem.Text
  30.            .Show()
  31.            .Focus()
  32.            .SelectAll()
  33.        End With
  34.  
  35.        lv.SendToBack()
  36.  
  37.    End Sub
  38.  
  39.    Private Sub TextBoxLvItem_KeyUp(ByVal sender As Object, ByVal e As KeyEventArgs) _
  40.    Handles TextBoxLvItem.KeyUp
  41.  
  42.        Select Case e.KeyData
  43.  
  44.            Case Keys.Return ' Guardar el texto.
  45.                currentItem.Text = DirectCast(sender, TextBox).Text
  46.                DirectCast(sender, TextBox).Hide()
  47.  
  48.            Case Keys.Escape ' No guardar el texto.
  49.                DirectCast(sender, TextBox).Hide()
  50.  
  51.            Case Else
  52.                '...
  53.  
  54.        End Select
  55.  
  56.    End Sub
  57.  

PD: No actives el LabelEdit, no es necesario con el código que mostré.

Saludos
37  Programación / .NET (C#, VB.NET, ASP) / Editar SubItems de un listview en VB.NET en: 8 Enero 2016, 17:28 pm
Hola a todos, quisiera saber como permitir a los usuarios editar los subitems de un listview, ya que con la propiedad LabelEdit sólo se pueden editar los items, aquí les dejo un ejemplo para que se vea mejor

Código
  1.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2.        Dim C As Integer
  3.  
  4.        ListView1.View = View.Details
  5.        ListView1.Columns.Add("Items")
  6.        ListView1.Columns.Add("SubItems", 70)
  7.        ListView1.FullRowSelect = True
  8.        ListView1.GridLines = True
  9.        'A pesar que permito modificar los items,
  10.        'no me lo permite para los subitems, que es lo que quiero hacer.
  11.        ListView1.LabelEdit = True
  12.  
  13.        For C = 0 To 20
  14.            ListView1.Items.Add("Prueba " & C)
  15.            ListView1.Items(C).SubItems.Add("SubItem " & C)
  16.        Next
  17.    End Sub
  18.  
38  Programación / .NET (C#, VB.NET, ASP) / Re: Problema con función Shell en VB.NET 2010 en: 3 Enero 2016, 02:14 am
Ahora si quedó perfecto.

Muchas gracias por la ayuda y por aguantar tantas molestias

Código
  1. Private ReadOnly title As String = "Espere"
  2. Friend WithEvents TimerEfect As Global.System.Windows.Forms.Timer
  3.  
  4. Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
  5.  
  6.    Me.Text = Me.title
  7.    Me.TimerEfect = New Global.System.Windows.Forms.Timer With {.Enabled = True, .Interval = 1000}
  8.  
  9. End Sub
  10.  
  11. Private Sub TimerEfect_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles TimerEfect.Tick
  12.  
  13.    If Me.Text.EndsWith("...") Then
  14.        Me.Text = Me.title
  15.  
  16.    Else
  17.        Me.Text &= "."
  18.  
  19.    End If
  20.  
  21. End Sub
  22.  
  23. Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
  24.  
  25.    Task.Factory.StartNew(
  26.        Sub()
  27.            Dim t As Task = RunWait("calc.exe", ProcessWindowStyle.Normal)
  28.            t.Start()
  29.            t.Wait()
  30.            MessageBox.Show("calc.exe has exited.")
  31.  
  32.            t = RunWait("mspaint.exe", ProcessWindowStyle.Normal)
  33.            t.Start()
  34.            t.Wait()
  35.            MessageBox.Show("mspaint.exe has exited.")
  36.        End Sub)
  37.  
  38. End Sub
  39.  
  40. Private Function RunWait(ByVal fullPathFile As String, ByVal windowStyle As ProcessWindowStyle) As Task
  41.  
  42.    Dim processTask As Action =
  43.        Sub()
  44.            Using p As New Process
  45.                p.StartInfo.FileName = fullPathFile
  46.                p.StartInfo.WindowStyle = windowStyle
  47.                p.Start()
  48.                p.WaitForExit()
  49.            End Using
  50.        End Sub
  51.  
  52.    Return New Task(processTask)
  53.  
  54. End Function

Saludos
39  Programación / .NET (C#, VB.NET, ASP) / Re: Problema con función Shell en VB.NET 2010 en: 2 Enero 2016, 20:30 pm
Eso es exactamente lo que necesito, sólo queda un pequeño detalle, que para mi es el más problemático y para que puedan ayudarme, voy a tratar de explicar mejor lo que quiero hacer.

El programa ejecuta varias aplicaciones a lo largo de un procedimiento y es espera a que terminen cada una de ellas para poder continuar con el resto del código. Hasta aquí vamos bien con lo logrado hasta ahora, el problema es que mientras se espera a que las aplicaciones terminen un timer tiene que ir haciendo cambios en el formulario, como uso en el ejemplo cambiar el texto del titulo del form, pero puede ser cualquier otra cosa para indicar que el programa está funcionando, como pudiera ser también cambiar la imagen de un picturebox para mostrar una secuencia de imágenes de un reloj de arena.

Por ejemplo:

Código
  1. Imports System.Threading.Tasks
  2.  
  3. Public Class Form1
  4.    Dim WithEvents tmrEfect As New Timer With {.Enabled = True, .Interval = 1000}
  5.  
  6.    Private Function RunWait(ByVal fullPathFile As String, ByVal windowStyle As ProcessWindowStyle) As Task
  7.  
  8.        Dim processTask As Action =
  9.            Sub()
  10.                Using p As New Process
  11.                    p.StartInfo.FileName = fullPathFile
  12.                    p.StartInfo.WindowStyle = windowStyle
  13.                    p.Start()
  14.                    p.WaitForExit()
  15.                End Using
  16.            End Sub
  17.  
  18.        Return New Task(processTask)
  19.  
  20.    End Function
  21.  
  22.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  23.        Dim t As Task = RunWait("calc.exe", ProcessWindowStyle.Normal)
  24.        t.Start()
  25.        t.Wait()
  26.        MessageBox.Show("calc.exe has exited.")
  27.  
  28.        t = RunWait("mspaint.exe", ProcessWindowStyle.Normal)
  29.        t.Start()
  30.        t.Wait()
  31.        MessageBox.Show("mspaint.exe has exited.")
  32.    End Sub
  33.  
  34.    Private Sub tmrEfect_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmrEfect.Tick
  35.        Me.Text &= "."
  36.        If Len(Me.Text) = 10 Then Me.Text = "Espere"
  37.    End Sub
  38.  
  39.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  40.        Me.Text = "Espere"
  41.    End Sub
  42. End Class
  43.  

PD: Disculpen por la demora en responder.
40  Programación / .NET (C#, VB.NET, ASP) / Re: Problema con función Shell en VB.NET 2010 en: 26 Diciembre 2015, 02:19 am
Siento tener que revivir este tema, pero la verdad es que a pesar de que el código funciona perfectamente, no he podido adaptarlo a lo que necesito, discúlpenme.

Anteriormente en VB6 yo usaba una función para ejecutar aplicaciones y esperar a que estas se cerrasen para continuar ejecutando el código de mi programa, sin que esto detuviera los timers que yo usaba en mi proyecto.

Ahora en VB.NET como adapto este código para poder usarlo varías veces seguidas dentro de un mismo evento.

Ejemplo:

Código
  1. Imports System.Threading.Tasks
  2.  
  3. Public Class Form1
  4.  
  5.    Dim WithEvents tmrEfect As New Timer With {.Enabled = True, .Interval = 1000}
  6.  
  7.    Private Sub tmrEfect_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmrEfect.Tick
  8.        Me.Text = Now
  9.    End Sub
  10.  
  11.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  12.        RunWait("calc.exe", ProcessWindowStyle.Normal)
  13.        'Aquí necesito poner varias líneas de código de tienen que ejecutarse al cerrarce la calculadora
  14.        MsgBox("aplicación calc.exe cerrada")
  15.  
  16.        RunWait("mspaint.exe", ProcessWindowStyle.Normal)
  17.        'Aquí necesito poner varias líneas de código de tienen que ejecutarse al cerrarce el paint
  18.        MsgBox("aplicación mspaint.exe cerrada")
  19.    End Sub
  20.  
  21.    Private Sub RunWait(ByVal FullPathFile As String, ByVal WindowStyle As ProcessWindowStyle)
  22.        Threading.Tasks.Task.Factory.StartNew(
  23.            Sub()
  24.                Using p As New Process
  25.                    p.StartInfo.FileName = FullPathFile
  26.                    p.StartInfo.WindowStyle = WindowStyle
  27.                    p.Start()
  28.                    p.WaitForExit()
  29.                End Using
  30.            End Sub, TaskCreationOptions.None)
  31.    End Sub
  32. End Class
Páginas: 1 2 3 [4] 5 6
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines