Const KEYEVENTF_KEYUP = &H2
Const INPUT_MOUSE = 0
Const INPUT_KEYBOARD = 1
Const INPUT_HARDWARE = 2
Private Const MOUSEEVENTF_ABSOLUTE = &H8000 ' absolute move 32768
Private Const MOUSEEVENTF_LEFTDOWN = &H2 ' left button down 2
Private Const MOUSEEVENTF_LEFTUP = &H4 ' left button up 4
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20 ' middle button down 32
Private Const MOUSEEVENTF_MIDDLEUP = &H40 ' middle button up 64
Private Const MOUSEEVENTF_MOVE = &H1 ' mouse move 1
Private Const MOUSEEVENTF_RIGHTDOWN = &H8 ' right button down 8
Private Const MOUSEEVENTF_RIGHTUP = &H10 ' right button up 16
Private Structure MOUSEINPUT
Public dx As Long
Public dy As Long
Public mouseData As Long
Public dwFlags As Long
Public time As Long
Public dwExtraInfo As Long
End Structure
Private Structure KEYBDINPUT
Public wVk As Integer
Public wScan As Integer
Public dwFlags As Long
Public time As Long
Public dwExtraInfo As Long
End Structure
Private Structure HARDWAREINPUT
Public uMsg As Long
Public wParamL As Integer
Public wParamH As Integer
End Structure
Private Structure GENERALINPUT
Public dwType As Long
Public xi() As Byte
End Structure
Private Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, ByVal pInputs As GENERALINPUT, ByVal cbSize As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal pDst, ByVal pSrc, ByVal ByteLen) 'I cant type these as Visul Studio doesn't support the Any type
Sub ClickMouse(ByVal x As Long, ByVal y As Long)
Dim GInput(0 To 1) As GENERALINPUT
Dim MINPUT As New MOUSEINPUT
MINPUT.dx = x
MINPUT.dy = y
'* 65535 / My.Computer.Screen.WorkingArea.Height * My.Computer.Screen.BitsPerPixel
MINPUT.mouseData = 0
MINPUT.dwFlags = MOUSEEVENTF_MOVE + MOUSEEVENTF_LEFTDOWN
MINPUT.time = 0
MINPUT.dwExtraInfo = 0
GInput(0).dwType = INPUT_MOUSE
CopyMemory(GInput(0).xi(0), MINPUT, Len(MINPUT)) ' errors here *********************************
MINPUT.dx = x
MINPUT.dy = y
'* 65535 / My.Computer.Screen.WorkingArea.Height * My.Computer.Screen.BitsPerPixel
MINPUT.mouseData = 0
MINPUT.dwFlags = MOUSEEVENTF_LEFTUP + MOUSEEVENTF_MOVE
MINPUT.time = 0
MINPUT.dwExtraInfo = 0
GInput(1).dwType = INPUT_MOUSE ' keyboard input
CopyMemory(GInput(1).xi(0), MINPUT, Len(MINPUT))
Call SendInput(2, GInput(0), Len(GInput(0)))
End Sub
Redim Ginput(0).xi(len(MINPUT))

Public Class Form1
Const KEYEVENTF_KEYUP = &H2
Const INPUT_MOUSE = 0
Const INPUT_KEYBOARD = 1
Const INPUT_HARDWARE = 2
Private Const MOUSEEVENTF_ABSOLUTE = &H8000 ' absolute move 32768
Private Const MOUSEEVENTF_LEFTDOWN = &H2 ' left button down 2
Private Const MOUSEEVENTF_LEFTUP = &H4 ' left button up 4
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20 ' middle button down 32
Private Const MOUSEEVENTF_MIDDLEUP = &H40 ' middle button up 64
Private Const MOUSEEVENTF_MOVE = &H1 ' mouse move 1
Private Const MOUSEEVENTF_RIGHTDOWN = &H8 ' right button down 8
Private Const MOUSEEVENTF_RIGHTUP = &H10 ' right button up 16
Private Structure MOUSEINPUT
Public dx As Long
Public dy As Long
Public mouseData As Long
Public dwFlags As Long
Public time As Long
Public dwExtraInfo As Long
End Structure
Private Structure KEYBDINPUT
Public wVk As Integer
Public wScan As Integer
Public dwFlags As Long
Public time As Long
Public dwExtraInfo As Long
End Structure
Private Structure HARDWAREINPUT
Public uMsg As Long
Public wParamL As Integer
Public wParamH As Integer
End Structure
Private Structure GENERALINPUT
Public dwType As Long
Public xi() As Byte
End Structure
Private Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, ByVal pInputs As GENERALINPUT, ByVal cbSize As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal pDst, ByVal pSrc, ByVal ByteLen) 'I cant type these as Visul Studio doesn't support the Any type
Sub ClickMouse(ByVal x As Long, ByVal y As Long)
Dim GInput(0 To 1) As GENERALINPUT
Dim MINPUT As New MOUSEINPUT
MINPUT.dx = x
MINPUT.dy = y
'* 65535 / My.Computer.Screen.WorkingArea.Height * My.Computer.Screen.BitsPerPixel
MINPUT.mouseData = 0
MINPUT.dwFlags = MOUSEEVENTF_MOVE + MOUSEEVENTF_LEFTDOWN
MINPUT.time = 0
MINPUT.dwExtraInfo = 0
GInput(0).dwType = INPUT_MOUSE
CopyMemory(GInput(0).xi(0), MINPUT, Len(MINPUT)) ' errors here *********************************
MINPUT.dx = x
MINPUT.dy = y
'* 65535 / My.Computer.Screen.WorkingArea.Height * My.Computer.Screen.BitsPerPixel
MINPUT.mouseData = 0
MINPUT.dwFlags = MOUSEEVENTF_LEFTUP + MOUSEEVENTF_MOVE
MINPUT.time = 0
MINPUT.dwExtraInfo = 0
GInput(1).dwType = INPUT_MOUSE ' keyboard input
CopyMemory(GInput(1).xi(0), MINPUT, Len(MINPUT))
Call SendInput(2, GInput(0), Len(GInput(0)))
End Sub
End Class




Public Structure MOUSEINPUT
Public dx As Integer
Public dy As Integer
Public mouseData As Integer
Public dwFlags As Integer
Public dwtime As Integer
Public dwExtraInfo As Integer
End Structure
Public Structure INPUT_TYPE
Public dwType As Integer
Public xi As MOUSEINPUT
End Structure
Private Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Integer, ByRef pInputs As INPUT_TYPE, ByVal cbSize As Integer) As Integer
Sub ClickMouse(ByVal x As Long, ByVal y As Long)
Dim inputEvents As INPUT_TYPE
inputEvents.xi.dx = x
inputEvents.xi.dy = y
inputEvents.xi.mouseData = 0
inputEvents.xi.dwFlags = MOUSEEVENTF_MOVE
inputEvents.xi.dwtime = 0
inputEvents.xi.dwExtraInfo = 0
inputEvents.dwType = INPUT_MOUSE
Dim s = System.Runtime.InteropServices.Marshal.SizeOf(GetType(INPUT_TYPE))
If SendInput(1, inputEvents, s) = 0 Then MsgBox(System.Runtime.InteropServices.Marshal.GetLastWin32Error.ToString)
End Sub