Hola, estoy en la creacion de un auto mouse que de click en especificas coordenadas...
algo como esto
(http://i.imm.io/17i42.png)
y para ver la coordenada especifica
(http://i.imm.io/17iWq.png)
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.KeyPreview = True
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode.ToString = "F1" Then
Me.KeyPreview = True
System.Threading.Thread.Sleep(1000)
TextBox1.Text = System.Windows.Forms.Cursor.Position.X
TextBox2.Text = System.Windows.Forms.Cursor.Position.Y
End If
If e.KeyCode.ToString = "F2" Then
Clipboard.SetText(TextBox1.Text & " - " & TextBox2.Text)
TextBox3.Text = Clipboard.GetText
End If
End Sub
End Class
Vaya, me has recordado la primera aplicación que hice en vbnet.
Cita de: SyntaxError404 en 25 Mayo 2013, 22:32 PMque al pulsar la tecla "F1" se copie la coordenada al portapapeles
EDITO: Puedes usar el evento KeyPress en el form para capturar las teclas presionadas, y luego comparas si la tecla presionada es "F1".
De mi proyecto puedes sacar lo que necesitas para lo de "F1" (pero intenta comprenderlo y no solo copiarlo):
[Aporte] [VS2012] Mouse XY (Devuelve las coordenadas del mouse) (http://foro.elhacker.net/buscador-t375469.0.html)
(http://img846.imageshack.us/img846/2276/prtscrcapturenm.jpg)
Saludos!
No sirve ninguno de los links
EDITO:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.KeyPreview = True
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode.ToString = "F1" Then
Me.KeyPreview = True
System.Threading.Thread.Sleep(2000)
TextBox1.Text = System.Windows.Forms.Cursor.Position.X
TextBox2.Text = System.Windows.Forms.Cursor.Position.Y
End If
End Sub
Tecla F1 Captura la posicion actual del mouse y las anota en los Textbox
Cita de: SyntaxError404 en 26 Mayo 2013, 00:14 AM
No sirve ninguno de los links
assshhhh es cierto creí que lo subí a mi server, perdón, ya está arreglado, vuelve a mirar el post :)
Saludos
Cita de: EleKtro H@cker en 26 Mayo 2013, 00:19 AM
assshhhh es cierto creí que lo subí a mi server, perdón, ya está arreglado, vuelve a mirar el post :)
Saludos
Ya logre la funcion del keypress
ahora me basare en tu ejemplo para usar el Clipboard
Edito: no se puede ver el codigo ajajja pide contraseña :laugh: :laugh:
Nuevamente "Edito" xD
Clipboard.SetText(TextBox1.Text & "." & TextBox2.Text)
Cita de: SyntaxError404 en 26 Mayo 2013, 00:26 AMEdito: no se puede ver el codigo ajajja pide contraseña :laugh: :laugh:
Vete a las propiedades del proyecto, en la pestaña "signing" y desactiva las casillas, elimina el archivo "ElektroSoft.pfx" en el proyecto si es necesario. Así ya podrás usarlo.
PD: Mis proyectos no los subo con firma, pero este se habia caido y lo he tenido que resubir como lo tengo (con la firma digital).
un saludo!
EDITO: De todas formas lo del bloc de notas solo requiere una línea de esfuerzo:
Clipboard.SetText("Coordenadas")
Public Class Form1
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal cButtons As Integer, ByVal dwExtraInfo As Integer)
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_RIGHTDOWN = &H8
Private Const MOUSEEVENTF_RIGHTUP = &H10
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.KeyPreview = True
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode.ToString = "F1" Then
Me.KeyPreview = True
TextBoxX.Text = System.Windows.Forms.Cursor.Position.X
TextBoxY.Text = System.Windows.Forms.Cursor.Position.Y
ListBoxX.Items.Add(TextBoxX.Text)
ListBoxY.Items.Add(TextBoxY.Text)
End If
If e.KeyCode.ToString = "F2" Then
ListBoxX.SelectedIndex = 0
ListBoxY.SelectedIndex = 0
Timer1.Start()
End If
If e.KeyCode.ToString = "F3" Then
ListBoxX.Items.Clear()
ListBoxY.Items.Clear()
Timer1.Stop()
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If ListBoxX.SelectedIndex = ListBoxY.Items.Count - 1 = True Then
Timer1.Enabled = False
Else
ListBoxX.SelectedIndex = ListBoxX.SelectedIndex + 1
ListBoxY.SelectedIndex = ListBoxY.SelectedIndex + 1
Cursor.Position = New Point(ListBoxX.SelectedItem, ListBoxY.SelectedItem)
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
End If
End Sub
End Class
Como asigno la funcion de cliks "izquierdo y derecho"
para que cuando este grabando los movimientos este los detecte y al reproducir precione los clicks
Puedes hacerlo de la siguiente manera:
Captura/Guarda cada coordenada en una lista de punteros.
Captura/Guarda cada click en un tipo de diccionario.
Luego, reproduce el contenido de la lista y del diccionario.
Ejemplo:
[youtube=640,360]http://www.youtube.com/watch?v=T06XECj_FvE&feature=youtu.be[/youtube]
Public Class Form1
' BY ELEKTRO H@CKER
' Copia este Form en un nuevo proyecto y ejecútalo.
Dim Coordenates_List As New List(Of Point)
Dim Clicks_Dictionary As New Dictionary(Of Int64, MouseButton)
Dim Click_Count As Int32 = 0
Dim Last_ClickState_Left As Int64 = 999
Dim Last_ClickState_Right As Int64 = 999
Dim WithEvents Record_Timer As New Timer
Dim WithEvents Button_Record As New Button, Button_Stop As New Button, Button_Reproduce As New Button
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public Declare Sub Mouse_Event Lib "User32" Alias "mouse_event" (ByVal dwFlags As MouseButton, ByVal dx As Integer, ByVal dy As Integer, ByVal dwData As Integer, ByVal dwExtraInfo As Integer)
Public Thread_is_completed As Boolean = False
Dim Thread_MousePlay_Var As System.Threading.Thread = New Threading.Thread(AddressOf Thread_MousePlay)
Public Enum MouseButton
Left_Down = &H2 ' Left button (hold)
Left_Up = &H4 ' Left button (release)
Right_Down = &H8 ' Right button (hold)
Right_Up = &H10 ' Right button (release)
Middle_Down = &H20 ' Middle button (hold)
Middle_Up = &H40 ' Middle button (release)
Left ' Left button (press)
Right ' Right button (press)
Middle ' Middle button (press)
End Enum
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Record_Timer.Interval = 15
Button_Record.Text = "Record" : Button_Stop.Text = "Stop" : Button_Reproduce.Text = "Reproduce"
Button_Record.Location = New Point(20, 20) : Button_Stop.Location = New Point(Button_Record.Right + 10, 20) : Button_Reproduce.Location = New Point(Button_Stop.Right + 10, 20)
Me.Controls.Add(Button_Record) : Me.Controls.Add(Button_Stop) : Me.Controls.Add(Button_Reproduce)
Me.Size = New Point(300, 100)
End Sub
Private Sub Button_Record_Click(sender As Object, e As EventArgs) Handles Button_Record.Click
Coordenates_List.Clear() : Clicks_Dictionary.Clear() : Click_Count = 0
Record_Timer.Start()
End Sub
Private Sub Button_Stop_Click(sender As Object, e As EventArgs) Handles Button_Stop.Click
Record_Timer.Stop()
End Sub
Private Sub Button_Reproduce_Click(sender As Object, e As EventArgs) Handles Button_Reproduce.Click
Thread_MousePlay_Var = New Threading.Thread(AddressOf Thread_MousePlay)
Thread_MousePlay_Var.IsBackground = True
Thread_MousePlay_Var.Start()
Thread_is_completed = False
While Not Thread_is_completed = True : Application.DoEvents() : End While
MsgBox("Finished")
End Sub
Private Sub Record_Timer_Tick(sender As Object, e As EventArgs) Handles Record_Timer.Tick
Coordenates_List.Add(MousePosition)
If Not Last_ClickState_Left = GetAsyncKeyState(1) Then
Last_ClickState_Left = GetAsyncKeyState(1)
If GetAsyncKeyState(1) = 32768 Then
Click_Count += 1
Coordenates_List.Add(Nothing)
Clicks_Dictionary.Add(Click_Count, MouseButton.Left_Down)
ElseIf GetAsyncKeyState(1) = 0 Then
Click_Count += 1
Coordenates_List.Add(Nothing)
Clicks_Dictionary.Add(Click_Count, MouseButton.Left_Up)
End If
End If
If Not Last_ClickState_Right = GetAsyncKeyState(2) Then
Last_ClickState_Right = GetAsyncKeyState(2)
If GetAsyncKeyState(2) = 32768 Then
Click_Count += 1
Coordenates_List.Add(Nothing)
Clicks_Dictionary.Add(Click_Count, MouseButton.Right_Down)
ElseIf GetAsyncKeyState(2) = 0 Then
Click_Count += 1
Coordenates_List.Add(Nothing)
Clicks_Dictionary.Add(Click_Count, MouseButton.Right_Up)
End If
End If
End Sub
Private Sub Mouse_Click(ByVal MouseButton As MouseButton)
Select Case MouseButton
Case MouseButton.Left : Mouse_Event(MouseButton.Left_Down, 0, 0, 0, 0) : Mouse_Event(MouseButton.Left_Up, 0, 0, 0, 0)
Case MouseButton.Right : Mouse_Event(MouseButton.Right_Down, 0, 0, 0, 0) : Mouse_Event(MouseButton.Right_Up, 0, 0, 0, 0)
Case MouseButton.Middle : Mouse_Event(MouseButton.Middle_Down, 0, 0, 0, 0) : Mouse_Event(MouseButton.Middle_Up, 0, 0, 0, 0)
Case Else : Mouse_Event(MouseButton, 0, 0, 0, 0)
End Select
End Sub
Sub Thread_MousePlay()
Click_Count = 0
For Each Coordenate In Coordenates_List
Application.DoEvents()
Threading.Thread.Sleep(15)
If Coordenate = Nothing Then
Click_Count += 1
If Click_Count > 1 Then Mouse_Click(Clicks_Dictionary.Item(Click_Count))
Else
System.Windows.Forms.Cursor.Position = Coordenate
End If
Next
Thread_is_completed = True
End Sub
End Class
Probe tu codigo y genial, pero ya tenia los botones integrados asi que examinare a fondo el codigo y sacare las partes que lo componen para los click y lo integro en mi codigo..
Gracias por la ayuda :)