Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: milenio204 en 25 Enero 2014, 20:00 pm



Título: ¿Como le pongo a un autoclick una velocidad de picosegundos?
Publicado por: milenio204 en 25 Enero 2014, 20:00 pm
Teniendo este código :  

Código
  1. Public Class Form1
  2.    Private Declare Sub mouse_event Lib "user32" (ByVal dwflags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cbuttons As Long, ByVal dwExtraInfo As Long)
  3.    Private Const mouseclickup = 4
  4.    Private Const mouseclickdown = 2
  5.    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Long) As Integer

 
'En el Timer1 ponemos:
 
Código
  1.    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  2.        Windows.Forms.Cursor.Position = New Point(Windows.Forms.Cursor.Position.X, Windows.Forms.Cursor.Position.Y)
  3.        Timer1.Interval = NumericUpDown1.Value
  4.        Label1.Text = Windows.Forms.Cursor.Position.X
  5.        Label2.Text = Windows.Forms.Cursor.Position.Y
  6.  
  7.        Windows.Forms.Cursor.Position = New Point(TextBox1.Text, TextBox2.Text)
  8.  
  9.        mouse_event(mouseclickdown, 0, 0, 0, 0)
  10.        mouse_event(mouseclickup, 0, 0, 0, 0)
  11.  
  12.        Windows.Forms.Cursor.Position = New Point(Label1.Text, Label2.Text)
  13.    End Sub
  14.  

'En el Timer2 ponemos:
 
Código
  1. Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
  2.        Dim hotkey As Boolean
  3.        hotkey = GetAsyncKeyState(Keys.F9)
  4.        If hotkey = True Then timer1.start()
  5.        Dim hotkey1 As Boolean
  6.        hotkey1 = GetAsyncKeyState(Keys.F10)
  7.        If hotkey1 = True Then Timer1.Stop()
  8.    End Sub

 
'En el Timer3 ponemos:
 
Código
  1.    Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
  2. Dim Posicion As Boolean
  3.        Posicion = GetAsyncKeyState(Keys.F7)
  4.        If Posicion = True Then
  5.            TextBox1.Text = MousePosition.X : TextBox2.Text = MousePosition.Y
  6.        End If
  7.        If Posicion = False Then
  8.        End if
  9.    End Sub
  10. End Class




En este código para transformarlo en picosegundos es poniendo este codigo (segun me han dicho) :
Código
  1. Imports System.Timers
  2. Dim nPicoSeg As Integer = 5
  3. Dim tim1 As Timer = New Timer(nPicoSeg * 10 ^ (-9))


El problema de todo esto es que no sé en que lugar del codigo se coloca .
(Tengo un pc en terahercios)


Título: Re: ¿Como le pongo a un autoclick una velocidad de picosegundos?
Publicado por: engel lex en 25 Enero 2014, 20:12 pm
usa etquetas GeSHi para que el codigo se vea bien, están arriba de los emoticonos a la derecha...

por otro lado...
1seg = 1.000 miliSec = 1.000.000 microSeg = 1.000.000.000 picoSeg
ya microsegundos es difícil de manejar porque son poco precisos debido a los procesos del SO, dudo que el SO te devuelva pico, ya que literalmente con un procesador de 2Ghz seria 1 de cada 2 procesos y la comprobación de si el contador terminó, si hubo ingreso de datos (teclado, mouse, red, etc), generación de eventos, renderizacion de pantalla, otros programas en el SO, etc... debe estar por el orden de las miles de operaciones seguidas cada vez, a demás tu le ingresas al pc clicks en orden de microsegundos (millones por segundo) y se pega el pc o el programa...




Título: Re: ¿Como le pongo a un autoclick una velocidad de picosegundos?
Publicado por: milenio204 en 25 Enero 2014, 20:33 pm
En ese caso le pondré milisegundos pero dime una cosa . ¿En que parte del código lo pongo? , ¿Cuál sería el código en milisegundo?


Título: Re: ¿Como le pongo a un autoclick una velocidad de picosegundos?
Publicado por: engel lex en 25 Enero 2014, 20:44 pm
para milisegundos en la cabecera colocas el api de getTickCount (te lo explicaré para vb6 como lo conozco XD corrigelo tu para .net porque no estoy seguro)

Código
  1. Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long

la cosa es que esa funcion te devuelve un tiempo en milisegundos... tu vas a hacer una espera con eso y seria un

Código
  1. Private Sub esperar(espera as long)
  2. Dim inicio as long
  3. Dim fin as long
  4. inicio = GetTickCount()
  5. fin = inicio + espera 'espera es el tiempo del contador en milisec
  6. While fin > GetTickCount
  7.    DoEvents  
  8. Wend  
  9. end sub
  10.  
el lo que hará es que tu lo llamas con una cantidad de tiempo en milisegundos... y el literalmente dejará el programa "pegado" en ese ciclo ese tiempo...


Título: Re: ¿Como le pongo a un autoclick una velocidad de picosegundos?
Publicado por: milenio204 en 25 Enero 2014, 21:15 pm
Compañero ,todo eso donde lo pongo . ¿En Form1 , timer1 ?


Título: Re: ¿Como le pongo a un autoclick una velocidad de picosegundos?
Publicado por: engel lex en 25 Enero 2014, 21:25 pm
Si vas a a programar algo por lo menos aprende lo minimo del lenguaje -.- es una funcion independiente


Título: Re: ¿Como le pongo a un autoclick una velocidad de picosegundos?
Publicado por: milenio204 en 25 Enero 2014, 21:44 pm
Estoy empezando y esto no lo manejo lo suficiente bien ¿Sabrias decirmelo?


Título: Re: ¿Como le pongo a un autoclick una velocidad de picosegundos?
Publicado por: engel lex en 25 Enero 2014, 21:49 pm
Es una funcion independiente va afuera... no va dentro de nadie


Título: Re: ¿Como le pongo a un autoclick una velocidad de picosegundos?
Publicado por: milenio204 en 25 Enero 2014, 23:12 pm
Ok , yo al poner ese código me sale un error que dice : Error   1   La instrucción no es válida en un espacio de nombres.  

Y me subraya Private Sub esperar(ByVal espera As Long)


El codigo quedaria así :


Código
  1. Public Class Form1
  2.    Private Declare Sub mouse_event Lib "user32" (ByVal dwflags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cbuttons As Long, ByVal dwExtraInfo As Long)
  3.    Private Const mouseclickup = 4
  4.    Private Const mouseclickdown = 2
  5.    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Long) As Integer
  6.    Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
  7.  
  8.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  9.        Timer1.Start()
  10.    End Sub
  11.  
  12.    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  13.        Timer1.Stop()
  14.    End Sub
  15.  
  16.    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  17.        Windows.Forms.Cursor.Position = New Point(TextBox1.Text, TextBox2.Text)
  18.        mouse_event(mouseclickdown, 3, 7, 1, 2)
  19.        mouse_event(mouseclickup, 2, 5, 9, 3)
  20.  
  21.    End Sub
  22.    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
  23.        Dim hotkey As Boolean
  24.        hotkey = GetAsyncKeyState(Keys.F3)
  25.        If hotkey = True Then Timer1.Start()
  26.        Dim hotkey1 As Boolean
  27.        hotkey1 = GetAsyncKeyState(Keys.F4)
  28.        If hotkey1 = True Then Timer1.Stop()
  29.    End Sub
  30.  
  31.    Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick, Timer4.Tick
  32.        Label1.Text = Cursor.Position.X
  33.        Label2.Text = Cursor.Position.Y
  34.    End Sub
  35.  
  36.    Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
  37.        Timer1.Interval = (1)
  38.    End Sub
  39.  
  40.    Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged
  41.        Timer1.Interval = NumericUpDown1.Value
  42.    End Sub
  43.  
  44.    Private Sub NumericUpDown2_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown2.ValueChanged
  45.        Timer1.Interval = NumericUpDown2.Value
  46.    End Sub
  47. End Class
  48. Private Sub esperar(ByVal espera As Long)
  49.    Dim inicio As Long
  50.    Dim fin As Long
  51.    inicio = GetTickCount()
  52.    fin = inicio + espera 'espera es el tiempo del contador en milisec
  53.    While fin > GetTickCount
  54.        DoEvents()
  55.    End While
  56. End Sub


Título: Re: ¿Como le pongo a un autoclick una velocidad de picosegundos?
Publicado por: TomaSs en 26 Enero 2014, 07:58 am
Se ve perfectamente que no entiendes para nada en lenguaje, ya que no sabes donde se coloca nada, como donde colocar la importación de librerías, la declaración de las clases, la declaración de variables, etc. Así es que lo que te recomendaría, si necesitas un autoclick, que te descargues uno hecho ya (el ejecutable) y lo uses, y si lo que quieres es aprender el lenguaje, creo que esto no es un buen comienzo, sino que empieces por aprender las bases del lenguaje en si.

Un saludo! ;)



Por cierto, con respecto a lo último que preguntas, como puedes ver no has colocado el método esperar dentro de ninguna clase, ya que justamente una linea antes de la declaración de ese método estás cerrando tu clase Form1 (con End Class), por lo que ese método tendrás que colocarlo justo antes de "End Class". Pero vamos, el método esperar tampoco lo usas en ningún sitio xdd

Y por cierto, engelx, en cuanto a la velocidad del autoclick, supongo que le bastará con cambiarle el interval al propio timer, no? puesto que en su código está utilizando un Timer :)



[MOD]: No hagas doble post.


Título: Re: ¿Como le pongo a un autoclick una velocidad de picosegundos?
Publicado por: Eleкtro en 27 Enero 2014, 15:44 pm
Respondiendo a tu pregunta del timer ...no es posible usar picosegundos, lee y comprenderás la razón ~> http://msdn.microsoft.com/en-us/library/system.timers.timer.interval%28v=vs.110%29.aspx

Saludos!