|
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: 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: 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: 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: DownloadFile(proxy, "http://download.thinkbroadband.com/5MB.zip", "C:\")
Snippet: 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!
|
|
|
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 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 Dim proxy As New WebProxy("proxydeprueba.com:3128", False) proxy.Credentials = New NetworkCredential("yomismo", "mipass,")
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: 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
|
|
|
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: 'InvalidArgument=El valor de '4' no es válido para 'index'. 'Nombre del parámetro: index .Width = lv.Columns(hitTest.Item.Index).Width
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): Friend WithEvents TextBoxLvItem As TextBox Private currentItem As ListViewSubItem Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.TextBoxLvItem = New TextBox With {.Visible = False} Me.Controls.Add(Me.TextBoxLvItem) End Sub Private Sub ListView1_MouseClick(ByVal sender As Object, ByVal e As MouseEventArgs) _ Handles ListView1.MouseClick Me.TextBoxLvItem.Hide() End Sub Private Sub ListView1_MouseDoubleClick(ByVal sender As Object, ByVal e As MouseEventArgs) _ Handles ListView1.MouseDoubleClick Dim lv As ListView = DirectCast(sender, ListView) Dim hitTest As ListViewHitTestInfo = lv.HitTest(e.X, e.Y) Me.currentItem = hitTest.SubItem With Me.TextBoxLvItem .Width = lv.Columns(hitTest.Item.Index).Width .Left = (lv.Left + hitTest.SubItem.Bounds.Left + 3) .Top = (lv.Top + hitTest.SubItem.Bounds.Top) .Text = hitTest.SubItem.Text .Show() .Focus() .SelectAll() End With lv.SendToBack() End Sub Private Sub TextBoxLvItem_KeyUp(ByVal sender As Object, ByVal e As KeyEventArgs) _ Handles TextBoxLvItem.KeyUp Select Case e.KeyData Case Keys.Return ' Guardar el texto. currentItem.Text = DirectCast(sender, TextBox).Text DirectCast(sender, TextBox).Hide() Case Keys.Escape ' No guardar el texto. DirectCast(sender, TextBox).Hide() Case Else '... End Select End Sub
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 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim C As Integer ListView1.View = View.Details ListView1.Columns.Add("Items") ListView1.Columns.Add("SubItems", 70) ListView1.FullRowSelect = True ListView1.GridLines = True 'A pesar que permito modificar los items, 'no me lo permite para los subitems, que es lo que quiero hacer. ListView1.LabelEdit = True For C = 0 To 20 ListView1.Items.Add("Prueba " & C) ListView1.Items(C).SubItems.Add("SubItem " & C) Next End Sub
|
|
|
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 Private ReadOnly title As String = "Espere" Friend WithEvents TimerEfect As Global.System.Windows.Forms.Timer Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load Me.Text = Me.title Me.TimerEfect = New Global.System.Windows.Forms.Timer With {.Enabled = True, .Interval = 1000} End Sub Private Sub TimerEfect_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles TimerEfect.Tick If Me.Text.EndsWith("...") Then Me.Text = Me.title Else Me.Text &= "." End If End Sub Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click Task.Factory.StartNew( Sub() Dim t As Task = RunWait("calc.exe", ProcessWindowStyle.Normal) t.Start() t.Wait() MessageBox.Show("calc.exe has exited.") t = RunWait("mspaint.exe", ProcessWindowStyle.Normal) t.Start() t.Wait() MessageBox.Show("mspaint.exe has exited.") End Sub) End Sub Private Function RunWait(ByVal fullPathFile As String, ByVal windowStyle As ProcessWindowStyle) As Task Dim processTask As Action = Sub() Using p As New Process p.StartInfo.FileName = fullPathFile p.StartInfo.WindowStyle = windowStyle p.Start() p.WaitForExit() End Using End Sub Return New Task(processTask) 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: Imports System.Threading.Tasks Public Class Form1 Dim WithEvents tmrEfect As New Timer With {.Enabled = True, .Interval = 1000} Private Function RunWait(ByVal fullPathFile As String, ByVal windowStyle As ProcessWindowStyle) As Task Dim processTask As Action = Sub() Using p As New Process p.StartInfo.FileName = fullPathFile p.StartInfo.WindowStyle = windowStyle p.Start() p.WaitForExit() End Using End Sub Return New Task(processTask) End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim t As Task = RunWait("calc.exe", ProcessWindowStyle.Normal) t.Start() t.Wait() MessageBox.Show("calc.exe has exited.") t = RunWait("mspaint.exe", ProcessWindowStyle.Normal) t.Start() t.Wait() MessageBox.Show("mspaint.exe has exited.") End Sub Private Sub tmrEfect_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmrEfect.Tick Me.Text &= "." If Len(Me.Text) = 10 Then Me.Text = "Espere" End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Text = "Espere" End Sub End Class
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: Imports System.Threading.Tasks Public Class Form1 Dim WithEvents tmrEfect As New Timer With {.Enabled = True, .Interval = 1000} Private Sub tmrEfect_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmrEfect.Tick Me.Text = Now End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click RunWait("calc.exe", ProcessWindowStyle.Normal) 'Aquí necesito poner varias líneas de código de tienen que ejecutarse al cerrarce la calculadora MsgBox("aplicación calc.exe cerrada") RunWait("mspaint.exe", ProcessWindowStyle.Normal) 'Aquí necesito poner varias líneas de código de tienen que ejecutarse al cerrarce el paint MsgBox("aplicación mspaint.exe cerrada") End Sub Private Sub RunWait(ByVal FullPathFile As String, ByVal WindowStyle As ProcessWindowStyle) Threading.Tasks.Task.Factory.StartNew( Sub() Using p As New Process p.StartInfo.FileName = FullPathFile p.StartInfo.WindowStyle = WindowStyle p.Start() p.WaitForExit() End Using End Sub, TaskCreationOptions.None) End Sub End Class
|
|
|
|
|
|
|