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

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 28
11  Programación / .NET (C#, VB.NET, ASP) / Re: ¿Hacer una pausa a un BackgrounWorker en VB.NET? en: 20 Diciembre 2013, 21:09 pm
Personálmente por cosas como esta nunca me gustó el BackGroundWorker.

La forma correcta de pausar/reusmir un BackgroundWorker es usando un ManualResetEvent:

EDITO: Fíjate que debes especificar manuálmente los lugares en donde el procedimiento se puede pausar (_busy.WaitOne), y esto debes especificarlo sólamente en el eventhandler DoWork.

Imports System.ComponentModel

Public Class BackgroundWork

    Private _busy As New Threading.ManualResetEvent(True)

    Private WithEvents MyWorker As New BackgroundWorker

    Public Sub StartBackgroundTask()
        MsgBox("Starting the Thread...")
        MyWorker.WorkerSupportsCancellation = True
        MyWorker.WorkerReportsProgress = True
        MyWorker.RunWorkerAsync()
    End Sub

    Private Sub MyWorker_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) _
    Handles MyWorker.DoWork

        For i = 1 To 5
            _busy.WaitOne(Threading.Timeout.Infinite)
            MyWorker.ReportProgress(MsgBox("Thread is working... " & CStr(i)))
        Next i

    End Sub

    Private Sub MyWorker_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) _
    Handles MyWorker.RunWorkerCompleted

        MsgBox("Thread Done!")

    End Sub

    Public Sub PauseWorker()

        If MyWorker.IsBusy Then
            _busy.Reset()
            MsgBox("Thread Paused!")
        End If

    End Sub

    Public Sub ContinueWorker()
        _busy.[Set]()
        MsgBox("Thread Resumed!")
    End Sub

End Class


EDITO 2: Un ejemplo mejor elaborado:

Código
  1. ' BackgroundWorker Example
  2. '
  3. ' // By Elektro H@cker
  4.  
  5. #Region " Usage Examples "
  6.  
  7. 'Public Class Form1
  8.  
  9. '    Private MyWorker As New BackgroundWork
  10.  
  11. '    Private Shadows Sub Load() Handles MyBase.Load
  12. '        MyWorker.StartBackgroundTask()
  13. '    End Sub
  14.  
  15. '    Private Sub Button_Pause_Click() Handles Button_Pause.Click
  16. '        MyWorker.Pause()
  17. '    End Sub
  18.  
  19. '    Private Sub Button_Resume_Click() Handles Button_Resume.Click
  20. '        MyWorker.Resume()
  21. '    End Sub
  22.  
  23. '    Private Sub Button_Cancel_Click() Handles Button_Cancel.Click
  24. '        MyWorker.Cancel()
  25. '    End Sub
  26.  
  27. 'End Class
  28.  
  29. #End Region
  30.  
  31. #Region " BackgroundWorker "
  32.  
  33. Public Class BackgroundWork
  34.  
  35.    ''' <summary>
  36.    ''' The BackgroundWorker object.
  37.    ''' </summary>
  38.    Private WithEvents MyWorker As New System.ComponentModel.BackgroundWorker
  39.  
  40.    ''' <summary>
  41.    ''' ManualResetEvent object to pause/resume the BackgroundWorker.
  42.    ''' </summary>
  43.    Private _busy As New Threading.ManualResetEvent(True)
  44.  
  45.  
  46.    ''' <summary>
  47.    ''' This will start the BackgroundWorker.
  48.    ''' </summary>
  49.    Public Sub StartBackgroundTask()
  50.  
  51.        MsgBox("Starting the Thread...")
  52.        MyWorker.WorkerSupportsCancellation = True
  53.        MyWorker.WorkerReportsProgress = True
  54.        MyWorker.RunWorkerAsync()
  55.  
  56.    End Sub
  57.  
  58.    ''' <summary>
  59.    ''' This is the work to do on background.
  60.    ''' </summary>
  61.    Private Sub MyWorker_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) _
  62.    Handles MyWorker.DoWork
  63.  
  64.        For i = 1 To 5
  65.  
  66.            If MyWorker.CancellationPending = True Then
  67.                e.Cancel = True
  68.                Exit For
  69.            Else
  70.                _busy.WaitOne(Threading.Timeout.Infinite) ' Indicate that here can be paused the Worker.
  71.                MyWorker.ReportProgress(
  72.                    MsgBox("Thread is working... " & i)
  73.                    )
  74.            End If
  75.  
  76.        Next i
  77.  
  78.    End Sub
  79.  
  80.    ''' <summary>
  81.    ''' This happens when the BackgroundWorker is completed.
  82.    ''' </summary>
  83.    Private Sub MyWorker_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) _
  84.    Handles MyWorker.RunWorkerCompleted
  85.  
  86.        If e.Cancelled = True Then
  87.            MsgBox("Thread cancelled")
  88.  
  89.        ElseIf e.Error IsNot Nothing Then
  90.            MsgBox("Thread error")
  91.  
  92.        Else
  93.            MsgBox("Thread Done!")
  94.  
  95.        End If
  96.  
  97.    End Sub
  98.  
  99.    ''' <summary>
  100.    ''' This will pause the BackgroundWorker.
  101.    ''' </summary>
  102.    Public Sub Pause()
  103.  
  104.        If MyWorker.IsBusy Then
  105.            _busy.Reset()
  106.            MsgBox("Thread Paused!")
  107.        End If
  108.  
  109.    End Sub
  110.  
  111.    ''' <summary>
  112.    ''' This will resume the BackgroundWorker.
  113.    ''' </summary>
  114.    Public Sub [Resume]()
  115.        _busy.[Set]()
  116.        MsgBox("Thread Resumed!")
  117.    End Sub
  118.  
  119.    ''' <summary>
  120.    ''' This will cancel the BackgroundWorker.
  121.    ''' </summary>
  122.    Public Sub Cancel()
  123.        _busy.[Set]() ' Resume worker if it is paused.
  124.        MyWorker.CancelAsync() ' Cancel it.
  125.    End Sub
  126.  
  127. End Class
  128.  
  129. #End Region

Entonces, desde el thread principal puedes hacer esto:

Código
  1. Public Class Form1
  2.  
  3.    Private MyWorker As New BackgroundWork
  4.  
  5.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  6.        MyWorker.StartBackgroundTask()
  7.    End Sub
  8.  
  9.    Private Sub Button_Pause_Click() Handles Button_Pause.Click
  10.        MyWorker.PauseWorker()
  11.    End Sub
  12.  
  13.    Private Sub Button_Resume_Click() Handles Button_Resume.Click
  14.        MyWorker.ContinueWorker()
  15.    End Sub
  16.  
  17. End Class

Saludos

Mmm... creo que seguiré usando la forma tradicional de usar hilos en background. Jeje.
Muchísimas gracias.
12  Programación / .NET (C#, VB.NET, ASP) / ¿Hacer una pausa a un BackgrounWorker en VB.NET? en: 17 Diciembre 2013, 21:34 pm
Tengo una duda, estoy usando backgroundworker y ahora se me ocurre hacer una pausa al presionar un botón. No quiero cancelar la ejecución de este backgrounworker  sino todo lo contrario, pero la verdad es que no se cómo hacerlo.

Pesaba que este control podría existir algo como:

Citar
BackgroundWorker1.state

:P   :¬¬

Espero que me puedan ayudar u orientarme mejor. Gracias.
13  Seguridad Informática / Seguridad / Re: Cual es el mejor antivirus para vos???... en: 16 Diciembre 2013, 02:42 am
Uso Avast, pero me han dicho varios que Avira está siendo muy bueno... Quizas arranque 2014 con ese AV. Jeje
14  Programación / Programación General / ¿Qué hacer si mi aplicación consume mucha memoria? en: 19 Noviembre 2013, 03:18 am
Mi aplicación está creada en VB.NET, pero como estoy empezando a hacer cosas un poco más complejas, he visto que en el "Administrador de tareas de Windows" veo al proceso que corresponde a mi programa que tiene un elevado consumo de memoria con respecto a los demás. (alrededor de 155000 kb, mucho). En sí, bueno. El programa está activo siempre y tiene 3 timers ¿es por eso?

Bueno, creo que me estaba yendo un poco del tema, pero mi pregunta es esa, qué hacer en estos casos. Me dijeron que una posible solución sería crear DLL para algunas de la funciones. ¿Esto es así?

Muchas gracias, y espero que me puedan orientar.

Saludos.  ;)

PD: Creo que es irrelevante, pero el básicamente chequea el estado de un sitio web en un servidor personal y actualiza su contenido.
15  Seguridad Informática / Nivel Web / Re: ¿Cómo redactar un reporte de una vulnerabilidad web? en: 4 Noviembre 2013, 00:56 am
Lo primero que deberías hacer es reportar dicha vulnerabilidad al administrador del sitio web expuesto. No publiques la vulnerabilidad antes de que sea corregida.

Lo más normal (porque hay de todo) es que el administrador corrija la fallo, te de las gracias y que luego publiques el error en este foro, pero no antes.

Solo es mi opinión...

Claro, no lo hice público todavía hasta que sepa que el fallo está corregido.

Al final, puse el tipo de vulnerabilidad y las URL con los php en donde están los errores y avisar que en algunos sitios, los datos de usuarios, no estaban cifrados. No se si debía escribir algo más.

Ahora estoy aprendiendo a cómo corregir estos problemas para así poder dar una sugerencia más si es necesario, pero hasta el momento me limito a avisar.

Bueno, a esperar a ver si responden, de lo contrario... no pasa nada jeje, todo bien.

Muchas gracias por tu respuesta.

Saludos.

16  Seguridad Informática / Nivel Web / ¿Cómo redactar un reporte de una vulnerabilidad web? en: 2 Noviembre 2013, 23:45 pm
Bueno, he encontrado varios errores en algunos sitios web utilizando un escaner de vulnerabilidades, y los he testeado y puedo acceder al panel de control sin problemas (Vulnerabilidad Inyeccion SQL); y algunos de XSS y quisiera reportarlos.

Mi pregunta es: ¿cómo comunico estos errores? ¿Qué cosas debo decir en el reporte?

He estado viendo en http://foro.elhacker.net/nivel_web/recopilatorio_de_vulnerabilidades_de_xsssqlinjection-t220843.0.html que se han hecho reportes pero de forma pública, pero ¿algo así debería hacerlo?

Si me pudieran poner algun ejemplo u orientarme me vendría bárbaro. Tal vez, no solo a mí me sirva  :P

Saludos y gracias.
17  Programación / .NET (C#, VB.NET, ASP) / Re: ¿Cómo usar Postmessage y Sendmessage? en: 14 Septiembre 2013, 08:52 am
Impresionante EleKtro H@cker. Muchas gracias, sobre todo por el tiempo que te tomaste en contestar muy pronto.

Se puede apreciar con claridad que no son para VB.NET, sinó para VB6, no copies todo lo que veas en internet a la ligera, fíjate mejor en las cosas importantes, el tipo "Any" es obsoleto, no existe en VB.NET y te daría un error de compilación (eso demuestra que no los has probado xD), además los Integers también se podrían decir que son obsoletos para esa función en particular ya que si usas un entero en wParam o lParam no te va a funcionar en equipos con arquitectura de 64 Bit.
Es verdad, no lo había probado jamás, solo que hice una declaración según lo que estaba leyendo sin percatarme que se trataba de una declaración para VB6. Ahora se como se declaran estas API o al menos una idea a grandes rasgos en .NET

Hasta donde yo sé si devuelves el valor de tipo Integer (Int32) el handle funciona en los casos en los que he testeado, yo también empecé usando Integer para casi todo xD, pero una insignificancia o un descuido tán pequeño podría repercutir en equipos de 64 Bit como es en el caso de los tipos incorrectos de las funciones PostMessage y SendMessage, y vete a saber los otros posibles problemas técnicos que puede ocasionar por usar un integer en lugar del tipo específico para el valor.
Gracias por el detalle. Tengo idea de las consecuencias que se pueden tener al no manejar correctamente las variables y su tipo.

Son muchísimas las constantes que hay  :o No digo que las voy a estudiar a todas pero al menos ya se donde vendré a consultarlas para cuando por fin sepa como manejar esta API. Me estas dando una mano enorme para un aprendiz como yo.  ;)


En fín, el tema de SendMessage es MUUUUY extenso (y yo no se tanto si es lo que puede parecer), ya has visto la inmensa cantidad de constantes que puse arriba, y cada una de ellas contiene una buena cantidad de posibles valores para wParam y lParam,
no esperes conseguir mucha ayuda acerca de este tema, en ningún sitio (te lo digo por experiencia), porque es muy cansado de aprender, de contestar, y de almacenar toda esa información en la memoria, así que yo te aconsejo que te intereses sólamente en la información para el tipo de evento que quieres enviar, no más, porque como ya digo es muy extenso.

Aunque por otro lado todo eso está documentado tanto de forma oficial como no oficial, para serte sincero en el MSDN tienes todo lo que necesitas, desde los valores que debes especificar como lParam y wParam para simular cada tipo de evento, como códigos de ejemplo en C# y VB.NET que postea la gente al final de la página, lo que pasa es que muchos no leen hasta abajo del todo... pero abajo del todo siempre suele estar ese código que nos salva la vida cuando no entendemos del todo como codearlo nosotros mismos xD :P

Y para cuando te aburras del MSDN, siempre puedes mirar pinvoke.net, es otra página excelente donde encontrarás mucha información acerca de todos los parámetros relacionados con PostMessage y SendMessage y en general toda la ayuda necesaria para todas las funciones de la API de Windows.
Seguiré ese consejo que me das y ya comprendí que no es un tema sencillo, pero quizás lo pueda leer mejor a la documentación de las MSDN y las que hay en pinvoke.net.

Y voy a buscar los códigos con los que pretendía guiarme para hacer lo que yo quería. Creo que no está demás decir que me apoyaba en una aplicación llamada Winspector Spy para ver algunos handles y otras cosas, pero como parte de mi travesura porque, como te decía, nunca usé este tipo de cosas.

Voy a leer mejor todo lo que me pusiste porque seguro me has sido de muy buena ayuda.

De nuevo che, muchas gracias por la buena onda y tu tiempo, un abrazo.

Saludos.

18  Programación / .NET (C#, VB.NET, ASP) / ¿Cómo usar Postmessage y Sendmessage? en: 14 Septiembre 2013, 05:01 am
Estoy viendo las formas de comunicar dos aplicaciones en VB.NET y espero que me sepan disculpar las molestias pero tengo muchas dudas en este tema.

No sabía como consultarles así que lo armé así:

Teniendo dos aplicaciones simples como estas:

Aplicacion A) 1 botón "Cliquear Hola", 1 botón "Cliquear Chau", 1 botón "Cambiar nombre ventana"
Aplicación B) 1 botón "Hola" y 1 botón "Chau"

Como verán la aplicación A es la que envía ciertos comandos a B. Ya pude hacer que funcionen correctamente utilizando sockets de forma local, muy sencillo, pero ahora, lo que quiero aprender es a utilizar las APIs Postmessage y Sendmessage para hacer lo mismo, nunca las usé así que son varias las preguntas que me surgen por ahora:

Partiendo de sus declaraciones:
Código
  1. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA"(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
  2.  
  3. Private Declare Function PostMessage Lib "user32" Alias "PostMessageA"(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

1) ¿Cuándo se usan cada una de ellas? ¿En qué casos?
2) En cuanto a los parámetros:
    a) wMsg: ¿dónde consulto todas las constantes que pudieran existir?;
    b) ¿Cuál correspondería para el caso de enviar los clic a la otra aplicación?
    c) ¿Cómo se a qué botón a qué le envío el mensaje?
    d) wParam y lParam: ¿qué son exactamente y de dónde saco estos valores?

Creo saber cómo sacar el handle de una ventana usando FindWindow por eso no pregunté por el parámetro hwnd:
Código
  1. Dim hWnd1 As Int32 = FindWindow(vbNullString, "Nombre_de_la_ventana")

Leí bastantes códigos hechos en otros lugares, hasta en la MSDN pero no logro comprenderlos así que de última recurrí aquí. Lo peor es que me van a seguir saliendo dudas sobre esto y no quisiera abusar así que solo les pido un poco de orientación para ver si los puedo hacer yo.

Muchas gracias, un saludo.

PD: Leí que hoy es el día del programador así que ¡Feliz día!
19  Foros Generales / Foro Libre / Re: Los creyentes son menos inteligentes que los ateos, según un estudio en: 8 Septiembre 2013, 06:51 am
Es como que yo analfabestia venga y diga: "Che, vos pibe de anteojos que no te conozco, resolvé este problema que no entiendo... sos re intelectual."  :¬¬ :¬¬

Andaaa, cualquiera esto...
20  Foros Generales / Noticias / Re: Haz que la NSA o el FBI llame a tu puerta con este simple botón en: 7 Septiembre 2013, 03:17 am
Pondría gotitas de petroleo y los guiaría hasta el inodoro... Sutil manera de mandarlos a la mier**
 :rolleyes: :rolleyes:
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 28
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines