Results 1 to 7 of 7

Thread: Sending a click to exact coordinates in an inactive program

Threaded View

  1. #1

    Thread Starter
    Member
    Join Date
    May 2011
    Posts
    52

    Question Sending a click to exact coordinates in an inactive program

    So I'm trying to send a click of exact coordinates to an inactive program. I've used this code send clicks before and it's worked fine but the coordinates don't seem to be correct because when I enter them in the textboxes for the ovalshape the messagebox won't popup. So my question is, how can I grab the coordinates that work with the click and set them to label1.text?

    Here's the form:


    And here's the complete code:
    Code:
    Imports System.Runtime.InteropServices
    
    Public Class Form1
    
        <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
        Public Shared Function PostMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer
        End Function
    
        <DllImport("user32.dll")> _
        Shared Function WindowFromPoint(ByVal pnt As Point) As IntPtr
        End Function
    
        Private point As New Point
        Private lButtonUp As UInteger = &H202
        Private lButtonDown As UInteger = &H201
    
        Private Function returnlParam(ByVal Lo As Short, ByVal Hi As Short) As IntPtr
            Return CInt(Hi) << 16 Or Lo
        End Function
    
        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            Label1.Text = (Cursor.Position.X - Me.Location.X) & ", " & (Cursor.Position.Y - Me.Location.Y)
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            point = New Point(textbox1.text, textbox2.text)
            Timer2.Enabled = True
        End Sub
    
        Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
            Dim hWnd As IntPtr
            Dim wParam As IntPtr
            Dim lParam As IntPtr
    
            hWnd = WindowFromPoint(point)
            wParam = CUInt(Keys.LButton)
            lParam = returnlParam(point.X, point.Y)
    
            PostMessage(hWnd, lButtonDown, wParam, lParam)
            PostMessage(hWnd, lButtonUp, wParam, lParam)
    
            MsgBox("clicked")
    
            Timer2.Enabled = False
        End Sub
    
        Private Sub OvalShape1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OvalShape1.Click
            MsgBox("clicked me!")
        End Sub
    End Class
    This is the code I'm using to get the coordinates currently:
    Code:
    Label1.Text = (Cursor.Position.X - Me.Location.X) & ", " & (Cursor.Position.Y - Me.Location.Y)
    Last edited by code; May 10th, 2013 at 11:28 PM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width