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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 [503] 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 ... 1236
5021  Programación / Programación General / Re: ¿Chica programadora? en: 3 Julio 2015, 18:50 pm
¿por qué no?, hay muchas, muchas féminas programadoras... aquí, allá, y con certificaciones profesionales de Microsoft u otra compañia.

Un ejemplo:
https://en.wikipedia.org/wiki/Adele_Goldberg_%28computer_scientist%29

y varios ejemplos más en la wikipedia:
https://en.wikipedia.org/wiki/Women_in_computing
(abajo del todo de la página)

Aparte de lo que ha comentado @Drvy, tampoco es solo que haya mayor interés por los hombres, es que las mujeres pueden encontrarse muchas más barreras que los hombres para desarrollarse y avanzar en el sentido laboral, es igual que la mala costumbre que algunos conservan de pensar que las mujeres son malas conductoras, por que si, sin razón, pues algo parecido pasa también con las mujeres programadores ...¿por qué?, suongo que son simples prejuicios por que sois minoria en la programación.

Y aquí tienes esto que me h a resultado curioso, es la historia de una chica normal que cuenta algunas de sus experiencias vividas cómo programadora a lo largo de 20 años, algunas partes puede que te resulten deprimentes (y machistas xD), pero otras puede que te motiven ;):
https://medium.com/@sailorhg/coding-like-a-girl-595b90791cce

Saludos
5022  Programación / Programación General / Re: Duda Brainfuck en: 3 Julio 2015, 18:34 pm
Pero... entonces ¿sólo se puede mostrar carácteres por pantalla con ese lenguaje? ¿No sirve para nada más?

Mostrar caracteres es solo una manera de interpretar los bytes, los valores asignados a cada celda.

Es un lenguaje muy extravagante, ¿para que más esperas que se utilice comunmente si no es para saciar la curiosidad de representar un texto? xD.


no entiendo como se puede hacer un while

El loop de tipo while se hace con los símbolos [, y ], cómo ya he comentado.

Aquí tienes una IDE que incluye un generador automático de código brainfuck para cualquier cadena de texto:
http://4mhz.de/bfdev.html

Saludos!
5023  Programación / .NET (C#, VB.NET, ASP) / Re: Obtener porcentaje de descarga desde un módulo en: 3 Julio 2015, 17:00 pm
No trabajo para ninguna empresa ni tengo intención de ello, ni creo que pueda.

No te preocupes, la mayoría de usuarios (y moderadores) tampoco trabajamos para empresas, si lo hicieramos probablemente no tendriamos tiempo para pasarnos a ayudar por aquí a los demás, cómo es el caso de algún que otro moderador que si se dedica a la programación profesional y que ya no se le ve el pelo por el foro...



B. Acabo de empezar con VB.NET hace como un par de meses o tres, más o menos.
Empecé tonteando un poco para adaptarme al entorno, del cual solo he usado seguramente como el 2% de lo que tiene.

Si acabas de empezar hace unos meses entonces no has podido llegar a tocar ni un 0,2% en ese tiempo. No exagero, creeme, la librería de classes de .Net Framework es colosalmente extensa, más de lo que te puedes imaginar, igual que todos los conceptos que se pueden aprender.



Estas cosas:
AddHandler, Task, WithEvents, RaiseEvent ,IsNullOrWhiteSpace, InvokeRequired

todavía no se como van, es nuevo para mí, tendré que mirar uno por uno para poder entender el código y conseguir lo que busco.

La declaración AddHandler asocia un evento a un método.

La declaración RemoveHandler desaasocia un evento de un método.

La declaración RaiseEvent dispara un evento.

El keyword WithEvents indica que el objeto declarado puede disparar eventos, por ende, esto posibilita que se pueda usar directamente el keyword Handles para declarar el evento que controla un método (ej: sub metodo() Handles evento; Esto así mismo evita la necesitad de llenar el código con las sentencias AddHandler y RemoveHandler, queda muy feo cuando no es necesario hacerlo.

La extensión o función String.IsNullOrWhiteSpace determina si un string es nulo, vacío, o solo contiene espacios en blanco.

El método Threading.Tasks.Task.Factory.StartNew invoka un método encapsulado en un delegado o expresión Lambda, en un nuevo hilo (thread).

La propiedad Control.InvokeRequired determina si un control debe ser invocado, esto será así siempre que se intente llamar al control desde un hilo distinto al hilo donde se creó el control, de lo contrario, si no se invoca en dicha condición, se producirá una excepción de tipo Cross-Thread Exception.



Citar
buscando información sobre GDI, que siempre aparecen ejemplo de programas completos y bastante complejos.

Bueno, ese argumento es discutible, por que GDI/GDI+ de por si ya es algo complejo según se mire, hay características muy sencillas pero también otras muchas que se dificultan.



Hace poco modifiqué un programa de Leandro (no se qué) que semitransparenta un Form de modo que se vean nítidamente los controlos y demás pero el fondo del form sea semitransparente.

Pero tengo que decir que no comprendo el código completo. Tuve que modificarlo porque su código degradaba el form en dos colores sin opción o propiedad 'set' para cambiar dichos colores o ponerlo todo a un solo color.

Un consejo:
Olvida todos esos hacks para hacer transparente o semi-transparente un Form, WinForms no fue pensado ni está capacitado (de forma natural) para ese tipo de cosas, la transparencia y WinForms se llevan muy mal.

Todo ese tipo de códigos "transparentes" provocan un efecto muy negativo en la app, ya que ralentizan el form (todo lo que compone el form, sus controles), y mucho más si en dicho código se ua el hack de suplantar la función CreateParams para reducir el flickering. Si hicieses cualquier tipo de test de rendimiento en una app "transparente" (el tiempo que tarda un RichTextBox en mostrar X cantidad de caracteres por ejemplo) te dará resultados nefastos, y, si eres tan meticuloso (o tiquismiquis) cómo yo en ese sentido, entonces no querrás volver a hacer transparente una app utilzando ese tipo de técnicas esotéricas.

Confórmate con la manera natural de hacer transparente las cosas, ajustando la propiedad TransparencyKey.

Si quieres hacer algo más del estilo de ese tipo de códigos que mencionas, entonces olvida WinForms y ponte a programar en tecnología WPF, que está considerablemente más extendido en ese sentido, y en todos los demás sentidos también, ya que WPF es el sucesor de WinForms, y WPF sigue estando en desarrollo/actualización por parte de Microsoft, cosa que WinForms no.



porque en el momento que se me ocurre algo y quiero hacer una modificación, puede resultar o bien que  la modificación produzca un error que me obliga a modificar todo  o empezar casi desde el principio por incompatibilidad o bien haya pasado tanto tiempo desde que revisé el código que ya no recuerdo ni lo que hice y no se lo que hacía esto o aquello, sobre todo con códigos muy grandes.

Y por supuesto mi me memoria es pésima, cuando dejo de usar algo se me olvida, y es muy práctico tener un código de ejemplo para cuando lo necesite.

Existe algo llamado lineas de comentario (o documentación), aplícalo a tus códigos y no deberías tener problemas de memoria en el futuro :P, preferiblemente la documentación XML de .Net + la característica IntelliSense en la IDE o unas llamadas al Object Inspector, con eso es imposible perderte en códios grandes que estén XML-documentados.

En el código de ejemplo que publiqué arriba puedes ver un ejemplo de documentación XML para un método y sus parámetros:

Citar
Código
  1.    ''' ----------------------------------------------------------------------------------------------------
  2.    ''' <summary>
  3.    ''' Releases unmanaged and - optionally - managed resources.
  4.    ''' </summary>
  5.    ''' ----------------------------------------------------------------------------------------------------
  6.    ''' <param name="isDisposing">
  7.    ''' <c>True</c> to release both managed and unmanaged resources;
  8.    ''' <c>False</c> to release only unmanaged resources.
  9.    ''' </param>
  10.    ''' ----------------------------------------------------------------------------------------------------
  11.    Protected Sub Dispose(ByVal isDisposing As Boolean)
  12.       ...
  13.    End Sub

La documentación XML además también te permite añadir ejemplos de código con los tags: <example><code>CÓDIGO AQUÍ</code></example>, y muchas cosas más.

No se si lo he dejado del todo claro, pero por si no lo has pillado lo diré con otras palabras:
Cuando pasas el puntero del mouse por el nombre de un miembro en la IDE y te sale un tooltip con una descripción del miembro y de sus parámetros y tal, pues eso es lo que se consigue con la documentación XML, además la misma documentación también sirve para crear el archivo de referencia de una API, es decir, se documenta con XML los miembros de una librería .dll y se refleja toda esa información al compilar la dll en un archivo de ayuda (.chm, .html, pdf, etc).



Tengo cientos de plantillas de código simple y ejemplos sólo de VB, los cuales hacen lo básico y lo importante. Por supuesto son modificables y ajustables  a la necesidades del programa.

Quizás te pueda interesar este hilo:

Librería de Snippets para VB.Net !! (Compartan aquí sus snippets)



Citar
Tan sólo quiero:

Form1 (o cualquier otro, o módulo)
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-Llama a la función y la URL
-Recibir información de descarga mientras se produce
-Opción cancelar
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
               ▲
                •
                •
                •
               ▼
Bloque de código aparte
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- Función de descarga con la URL  
- Obtener información de descarga
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

Por lo tanto como ejemplo y como base, tan solo necesito un label el cual va a recibir la información del porcentaje, todo lo demás es irrelevante.

Bien, ¿pero hay algún problema con eso?, ¿el código que te mostré no te ha servido?.

Saludos!
5024  Programación / .NET (C#, VB.NET, ASP) / Re: Obtener porcentaje de descarga desde un módulo en: 2 Julio 2015, 21:02 pm
Lo que busco es tan simple como esto

¿Ese es el código completo que estás utilizando?, en ese caso, ¿còmo esperas que no se quede en blanco el label?, jeje, estás devolviendo un objeto una única vez, un objeto vacío/nulo.

En resumidas cuentas, descartando el resto del código esta es la trayectoria que haces, de la linea 5 a la 15, FIN.

Código
  1.    Public Class Form1
  2.  
  3.        Private Sub Button1_Click(...) Handles Button1.Click
  4.            ...
  5.            Label1.Text = ns.getProgress
  6.        End Sub
  7.  
  8.    End Class
  9.  
  10.    Class modDownloadURL
  11.        Public Progress As Object
  12.  
  13.        ReadOnly Property getProgress() As String
  14.            Get
  15.                Return Progress
  16.            End Get
  17.        End Property
  18.  
  19.    End Class

Primero llamas al método que descarga el archivo, y mientras tanto asignas el texto al label, pero solo lo asignas una vez, y el valor seguramente esté en blanco por que al objeto "Progress" no lo inicializaste con un valor inicial y el texto del label se asigna más rápido de lo que la operación asincrona tarda en disparar el evento del WebClient para asignarle un valor inicial a ese objeto "Progress".

Vamos, que despues de la primera vez que le asignas el texto vacío al label, no llegas a actualizar el texto del label nunca más.

Debes controlar cuando los eventos del Webclient se disparan, para actualizar el texto del label cuando eso suceda (cómo en el ejemplo que he publicado arriba).
El control no se va a actualizar por arte de magia.


¿Hay algo que no entiendas de tú código, de lo que estás haciendo?.


Saludos!
5025  Programación / Scripting / Re: contar numero de veces que sale la vocal a en una variable (batch) en: 2 Julio 2015, 20:09 pm
Batch es ridiculamente limitado, no es posible una iteración de caracteres ya que no existe ese tipo de loop, entonces, debes idear técnicas alternativas para llevar a cabo ese tipo de tarea, por ejemplo con un un For range (For /L) substrayendo cada caracter del string y defininendo un terminador de string, es decir, hay que añadirle un caracter especial al final del string para saber cuando salir de la iteración, al encontrar ese caracter especial.

Ejemplo:
Código
  1. @Echo OFF & Setlocal EnableDelayedExpansion
  2.  
  3. Set    "finalizer=Ç"
  4. Set /A "mayusCount=0"
  5. Set /A "minusCount=0"
  6.  
  7. Echo: Type any string...
  8. Set /P "str=>> "
  9.  
  10. Set "str=%str%%finalizer%"
  11.  
  12. For /L %%c In (0, 1, 99998) Do (
  13. Set "char=!str:~%%c,1!"
  14. If "!char!" EQU "A" (Set /A "mayusCount+=1")
  15. If "!char!" EQU "a" (Set /A "minusCount+=1")
  16. If "!char!" EQU "%finalizer%" (Goto :Break)
  17. <Nul set /P "char=!char!"
  18. )
  19.  
  20. :Break
  21. Echo+ | More
  22. Echo: "A" count: %mayusCount%
  23. Echo: "a" count: %minusCount%
  24.  
  25. Pause&Exit /B 0

Saludos
5026  Programación / Programación General / Re: Ayuda SDK PS3 en: 2 Julio 2015, 19:26 pm
no se como se compila

El paquete de la SDK incluye todo lo que necesitas, el compilador es un archivo ejecutable con interfáz commandline (desconozco el nombre del exe y los parametros del compiler), y por supuesto incluye varios archivos de documentación con la referencia de la SDK y de cómo usar el compiler y el resto de herramientas, al menos los paquetes oficiales/filtrados de la SDK, no se lo que te habrás bajado.

Entonces, encuentra esos archivos que he comentado y empieza por leer la documentación punto por punto para aprender su utilización.

Aparte, el paquete de la SDK también incluye un instalador para integrar los compilers a Visual Studio (el archivo, en la SDK 4.00 al menos se llama así: VSI2010_PS3_2.0.1.5.zip), así que puedes programar y compilar desde Visual Studio.

Si te falta algo de eso en la SDK que te hayas descargado, entonces te sugiero descargar esta versión filtrada, que lo tiene todo incluido:
http://kickass.torated.com/ps3-ps3-4-00-sdk-ylod-t8874817.html

PD: La versión 4.50 también la puedes encontrar facilmente, es una release del mismo grupo, pero pesa solamente 63 mb (solo incluye el compiler y lo esencial).

Saludos
5027  Programación / Ingeniería Inversa / Evitar que se minimize esta maldita app... en: 2 Julio 2015, 17:29 pm
Buenas!!

Esta pregunta ya la posteé hace unos cuantos meses, MCKSys Argentina me ayudó a solucioanr uno de los problemas de esta app (gracias de nuevo), pero pasa el tiempo y no consigo solucionar este otro problema.

La app, que fue desarrollada en C/C++, es esta, RegShot 2.0 (x64):
http://www.mediafire.com/download/32wkk7cjlhjal7c/Regshot.zip

Sirve para crear y comparar capturas del registro de Windows, el problema está cuando se le da al botón "Comparar" (o "Compare" teniendo la UI en Inglés), la app se minimiza a la barra de tareas y se ejecuta un archivo de texto en el editor por defecto, bien, yo quiero evitar el minimizado, que me tiene hasta los web..., me tiene muy harto de verdad por que utilizo mucho esta app y es incomodísimo que haga eso siempre!.

En el OllyDBG podría tratar de localizar la instrucción por mis propios medios (y luego preguntarle a ustedes que debo hacer xD), pero cómo es una app de 64 Bits debo usar IDA u otro desamblador que soporte x64, y ahí ya si que me pierdo por completo con el IDA hasta para buscar... más que con OllyDBG quiero decir ...que también me pierdo xD.

¿Alguien me puede echar una mano?.

PD: Tengo el IDA para probar lo que me digan...

Saludos!
5028  Programación / Programación General / Re: Duda Brainfuck en: 2 Julio 2015, 13:51 pm
Lo que no logro entendes es como sólo con 8 instrucciones

Citar
Código:
"[" - Avanza a la instrucción inmediatamente posterior al ] correspondiente si el byte actualmente apuntado es nulo (si es 0).
"]" - Retrocede a la instrucción inmediatamente posterior al [ correspondiente si el byte actualmente apuntado no es nulo (si es distinto de 0).

Esos son los operadores que hacen posible un loop y simplifican (dentro de lo que cabe) el código para que no sea tan... repetitivo (dentro de lo que cabe también, por que vaya tela con este lenguaje...). Peores cosas se pueden ver cómo un loop en el lenguaje 2L: https://esolangs.org/wiki/2L

En fin, este código asigna 7 celdas de memoria a las que le asigna un valor inicial de 0 a cada una, y con el búcle le va asignando distintos valores a cada celda, valores que corresponden a la tabla de caracteres ASCII.
Código:
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.

Cuando termina el búcle aquí:
Código:
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]

Estas son las celdas y el valor de cada celda:
Celdas :   0   1   2   3   4   5   6
Valores:   0   0  72 104  88  32   8


Despues de eso, el resto del código simplemente va moviendo el puntero de una celda a otra, incrementando o disminuyendo su valor.
Código:
>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.

La celda 2 contiene un 72, que equivale a una H.
La celda 3 contiene un 104, al que se le substrae 3, dando 101, que equivale a una e. despues, se le incrementa el valor para obtener l, l, y o.



Y ese tipo de operaciones sucesivamente...

Creo que más o menos es algo así la forma en la que trabaja.



Aquí lo explican detalladamente:

https://esolangs.org/wiki/Brainfuck



Saludos.
5029  Programación / .NET (C#, VB.NET, ASP) / Re: Obtener porcentaje de descarga desde un módulo en: 2 Julio 2015, 08:53 am
Cómo ya te digo, habría que ver el resto del código, por que las modificaciones que comentas en mi caso me funcionan correctamente, el label se actualiza correctamente.

De todas formas que estés utilizando un módulo para operaciones asíncronas, objetos disposables, y eventos, no me convence en absoluto, no debería causarte problemas, pero tampoco hay necesidad de que los miembros definidos en ese modulo sean compartidos con el resto de classes, por ese motivo yo usaría una Class instanciable y liberaría los objetos cuando sea necesario.

Aparte de eso, en otras circunstancias te diría que utilizases un BackgroundWorker, pero en este caso considero que sería practicamente el mismo resultado.

Prueba esto, si no te funciona entonces no sé que decirte a menos que muestres tu código completo para buscar un posible problema que en el código que has mostrado hasta ahora no aparece o no lo puedo detectar.

Así es más o menos cómo yo encapsularía esos datos:

Código
  1. #Region " Imports "
  2.  
  3. Imports System
  4. Imports System.ComponentModel
  5. Imports System.IO
  6. Imports System.Linq
  7. Imports System.Net
  8. Imports System.Windows.Forms
  9. Imports System.Threading.Tasks
  10.  
  11. #End Region
  12.  
  13. Public NotInheritable Class FileDownloader : Implements IDisposable
  14.  
  15. #Region " Disposable Members "
  16.  
  17.    Private WithEvents wc As WebClient
  18.  
  19. #End Region
  20.  
  21. #Region " Properties "
  22.  
  23.    Public ReadOnly Property IsBusy As Boolean
  24.        Get
  25.            If Me.wc IsNot Nothing Then
  26.                Return Me.wc.IsBusy
  27.            Else
  28.                Return False
  29.            End If
  30.        End Get
  31.    End Property
  32.  
  33. #End Region
  34.  
  35. #Region " Events "
  36.  
  37.    Public Event DownloadProgressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
  38.    Public Event DownloadCompleted(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs)
  39.  
  40. #End Region
  41.  
  42. #Region " Event-Handlers "
  43.  
  44.    Private Sub WC_DownloadProgressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs) _
  45.    Handles wc.DownloadProgressChanged
  46.  
  47.        If (Me.DownloadProgressChangedEvent IsNot Nothing) AndAlso (e.ProgressPercentage <> 100) Then
  48.            RaiseEvent DownloadProgressChanged(sender, e)
  49.        End If
  50.  
  51.    End Sub
  52.  
  53.    Private Sub WC_DownloadFileCompleted(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs) _
  54.    Handles wc.DownloadFileCompleted
  55.  
  56.        If (Me.DownloadCompletedEvent IsNot Nothing) Then
  57.            RaiseEvent DownloadCompleted(sender, e)
  58.        End If
  59.  
  60.    End Sub
  61.  
  62. #End Region
  63.  
  64. #Region " Public Methods "
  65.  
  66.    Public Sub DownloadAsync(ByVal url As String,
  67.                             Optional ByVal targetFilepath As String = "")
  68.  
  69.        If String.IsNullOrWhiteSpace(url) Then
  70.            Throw New ArgumentNullException(paramName:="url")
  71.  
  72.        Else
  73.  
  74.            If (Me.wc IsNot Nothing) AndAlso (Me.wc.IsBusy) Then
  75.                Throw New Exception(message:="Another download is in progress.")
  76.  
  77.            Else
  78.                Me.wc = New WebClient With
  79.                 {
  80.                     .UseDefaultCredentials = True
  81.                 }
  82.  
  83.                If String.IsNullOrWhiteSpace(targetFilepath) Then
  84.                    targetFilepath = Path.GetFileName(url)
  85.                End If
  86.  
  87.                Task.Factory.StartNew(Sub() wc.DownloadFileAsync(New Uri(url), targetFilepath))
  88.  
  89.            End If
  90.  
  91.        End If
  92.  
  93.    End Sub
  94.  
  95.    ''' <summary>
  96.    ''' Cancels the current asynchronous download.
  97.    ''' </summary>
  98.    Public Sub Cancel()
  99.  
  100.        If Me.wc Is Nothing Then
  101.            Throw New NullReferenceException(message:="", innerException:=New ObjectDisposedException(objectName:="wc"))
  102.  
  103.        ElseIf Me.wc.IsBusy Then
  104.            Me.wc.CancelAsync()
  105.  
  106.        End If
  107.  
  108.    End Sub
  109.  
  110. #End Region
  111.  
  112. #Region "IDisposable Support"
  113.  
  114.    ''' ----------------------------------------------------------------------------------------------------
  115.    ''' <summary>
  116.    ''' To detect redundant calls when disposing.
  117.    ''' </summary>
  118.    ''' ----------------------------------------------------------------------------------------------------
  119.    Private isDisposed As Boolean = False
  120.  
  121.    ''' ----------------------------------------------------------------------------------------------------
  122.    ''' <summary>
  123.    ''' Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
  124.    ''' </summary>
  125.    ''' ----------------------------------------------------------------------------------------------------
  126.    Public Sub Dispose() Implements IDisposable.Dispose
  127.        Me.Dispose(isDisposing:=True)
  128.        GC.SuppressFinalize(obj:=Me)
  129.    End Sub
  130.  
  131.    ''' ----------------------------------------------------------------------------------------------------
  132.    ''' <summary>
  133.    ''' Releases unmanaged and - optionally - managed resources.
  134.    ''' </summary>
  135.    ''' ----------------------------------------------------------------------------------------------------
  136.    ''' <param name="isDisposing">
  137.    ''' <c>True</c> to release both managed and unmanaged resources;
  138.    ''' <c>False</c> to release only unmanaged resources.
  139.    ''' </param>
  140.    ''' ----------------------------------------------------------------------------------------------------
  141.    Protected Sub Dispose(ByVal isDisposing As Boolean)
  142.  
  143.        If Not Me.isDisposed Then
  144.  
  145.            If isDisposing Then
  146.  
  147.                If Me.wc IsNot Nothing Then
  148.                    Me.wc.Dispose()
  149.                End If
  150.  
  151.            End If
  152.  
  153.        End If
  154.  
  155.        Me.isDisposed = True
  156.  
  157.    End Sub
  158.  
  159. #End Region
  160.  
  161. End Class

Y el uso que le daría ...más o menos también:

Código
  1. Imports System.ComponentModel
  2. Imports System.Threading.Tasks
  3.  
  4. Public NotInheritable Class Form1 : Inherits Form
  5.  
  6.    Dim WithEvents downloader As New FileDownloader
  7.  
  8.    Private Sub Test() Handles MyBase.Shown
  9.  
  10.        Me.downloader.DownloadAsync("http://download.thinkbroadband.com/10MB.zip")
  11.  
  12.    End Sub
  13.  
  14.    Private Sub Button1_Click(sender As Object, e As EventArgs) _
  15.    Handles Button1.Click
  16.  
  17.        If Me.downloader.IsBusy Then
  18.            Me.downloader.Cancel()
  19.        End If
  20.  
  21.    End Sub
  22.  
  23.    Private Sub Downloader_DownloadProgressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs) _
  24.    Handles downloader.DownloadProgressChanged
  25.  
  26.        Dim progress As Double = (e.BytesReceived / e.TotalBytesToReceive) * 100.0R
  27.  
  28.        If Me.Label1.InvokeRequired Then
  29.            Me.Label1.Invoke(Sub() Me.Label1.Text = progress.ToString(format:="00.00 \%"))
  30.  
  31.        Else
  32.            Me.Label1.Text = progress.ToString(format:="00.00 \%")
  33.  
  34.        End If
  35.  
  36.    End Sub
  37.  
  38.    Private Sub Downloader_DownloadCompleted(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs) _
  39.    Handles downloader.DownloadCompleted
  40.  
  41.        If e.Cancelled Then
  42.            Exit Sub
  43.        End If
  44.  
  45.        If Me.Label1.InvokeRequired Then
  46.            Me.Label1.Invoke(Sub() Me.Label1.Text = 100.0R.ToString(format:="00.00 \%"))
  47.  
  48.        Else
  49.            Me.Label1.Text = 100.0R.ToString(format:="00.00 \%")
  50.  
  51.        End If
  52.  
  53.    End Sub
  54.  
  55. End Class

Saludos.
5030  Programación / .NET (C#, VB.NET, ASP) / Re: Obtener tipo de red con vb.net en: 2 Julio 2015, 07:06 am
Tal vez puedas utilizar los miembros del namespace System.Net.NetworkInformation para ese propósito.

Con el método NetworkInterface.GetAllNetworkInterfaces enumeras los adaptadores de red, y con la propiedad NetworkInterface.NetworkInterfaceType determinas el tipo de red, cuyo valor será uno de la siguiente enumeración:
NetworkInterfaceType Enumeration - MSDN

Con otros miembros puedes determinar si la red está operativa, y muchas cosas más.

Saludos
Páginas: 1 ... 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 [503] 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 ... 1236
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines