inputEvents(0).xi.dx = xyC.X 'xyC.X the X cordinate we want to click
inputEvents(0).xi.dy = xyC.Y 'xyC.Y the Y cordinate
inputEvents(0).xi.mouseData = 0 'Not used for basic clicking
inputEvents(0).xi.dwFlags = iMF 'This is LeftDown LeftUp MouseMove or anythign else you wanna do, add everything together
inputEvents(0).xi.dwtime = 0 'DO NOT make this bigger than 0
inputEvents(0).xi.dwExtraInfo = 0 'Not used for basic clicking
inputEvents(0).dwType = INPUT_MOUSE 'We are doing a mouse event not keyboard or other device
ok SendInput takes an array of input events...you can use a bigger array of stuff if you want but its not needed for anything we are doing because LeftDown and LeftUp can be added together and stuck in the same call to SendInput, this is because they are BitFlags, binary we are writing in normal decimal form but you can see the bits if you know what you are looking for, MouseMove is 1 (1) LeftDown is 10 (2) LeftUp is 100 (4), you can add them all together and get 111 for a full mouse click...i dont use MouseMove because its kinda screwy i instead use MouseAbsolute 10000000 (128) (i think that was MouseAbsolute)
go to

for more info
You notice i do NOT set dwtime because it turns off the monitor for x seconds...extrainfo and mousedata i think are for mousewheel stuff.
My variables xyC and iMF are stuff i pass into my sub to decide where on the screen to click the mouse and what mouse flags i want to use. You will have to DL WinUser.H and Windows.H to find the values for constants if you wanna use the API's
You may also notice i often call SetCursorPos after i actaully make my click...i dont get it either but the game seems to prefer this