PROCEDURE MouseAct LPARAMETERS tcAction, tnHorz, tnVert, tnHorz2, tnVert2 LPCOUNT = PCOUNT() IF LPCOUNT <> 3 IF LPCOUNT = 5 .AND. [DRAG] $ ALLTRIM(UPPER(tcAction)) * PASS.. ELSE MESSAGEBOX([Usage of MouseAct:] + CHR(13) + ; [MouseAct(Action, Horz, Vert)], 16, [Wrong Use!!]) RETURN ENDIF ENDIF #DEFINE MOUSEEVENTF_MOVE 0x0001 && MOUSEMOVE #DEFINE MOUSEEVENTF_LEFTDOWN 0x0002 && LEFT BUTTON DOWN #DEFINE MOUSEEVENTF_LEFTUP 0x0004 && LEFT BUTTON UP #DEFINE MOUSEEVENTF_RIGHTDOWN 0x0008 && RIGHT BUTTON DOWN #DEFINE MOUSEEVENTF_RIGHTUP 0x0010 && RIGHT BUTTON UP #DEFINE MOUSEEVENTF_MIDDLEDOWN 0x0002 && MIDDLE BUTTON DOWN #DEFINE MOUSEEVENTF_MIDDLEUP 0x0004 && MIDDLE BUTTON UP #DEFINE MOUSEEVENTF_WHEEL 0x0800 && WHEEL BUTTON ROLL #DEFINE MOUSEEVENTF_ABSOLUTE 0x8000 && ABSOLUTE MOVE LOCAL lnHorz, lnVer, lnwidth, lnheight, lnhorzmult, lnvertmult * Get the horizontal resolution of the screen lnwidth = SYSMETRIC(1) * Get the vertical resolution lnheight = SYSMETRIC(2) * Get the multipliers to convert to the Absolute positions * 0, 0 is upper left; 65535, 65535 is lower right lnhorzmult = ROUND(65535 / lnwidth, 0) lnvertmult = ROUND(65535 / lnheight, 0) DECLARE mouse_event IN WIN32API ; INTEGER uFlags, INTEGER dx, INTEGER dy, ; INTEGER dwdata, INTEGER dwextra DO CASE CASE ALLTRIM(UPPER(tcAction)) = [MOVE] && MOVE =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) CASE ALLTRIM(UPPER(tcAction)) = [LCLICK] && LEFTCLICK =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_LEFTDOWN, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_LEFTUP, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) CASE ALLTRIM(UPPER(tcAction)) = [RCLICK] && RIGHTCLICK =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_RIGHTDOWN, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_RIGHTUP, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) CASE ALLTRIM(UPPER(tcAction)) = [MCLICK] && MIDDLECLICK =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MIDDLEDOWN, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MIDDLEUP, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) CASE ALLTRIM(UPPER(tcAction)) = [WHEEL] && WHEEL =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_WHEEL, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) CASE ALLTRIM(UPPER(tcAction)) = [LDBLCLICK] && LEFTDBLCLICK =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_LEFTDOWN, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_LEFTDOWN, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_LEFTUP, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) CASE ALLTRIM(UPPER(tcAction)) = [RDBLCLICK] && RIGHTDBLCLICK =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_RIGHTDOWN, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_RIGHTDOWN, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_RIGHTUP, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) CASE ALLTRIM(UPPER(tcAction)) = [MDBLCLICK] && MIDDLEDBLCLICK =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MIDDLEDOWN, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MIDDLEDOWN, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MIDDLEUP, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) CASE ALLTRIM(UPPER(tcAction)) = [LDRAG] && LEFTDRAG =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_LEFTDOWN, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, ; tnHorz2 * lnhorzmult, tnVert2 * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_LEFTDOWN, ; tnHorz2 * lnhorzmult, tnVert2 * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_LEFTUP, ; tnHorz2 * lnhorzmult, tnVert2 * lnvertmult, 0, 0) CASE ALLTRIM(UPPER(tcAction)) = [RDRAG] && RIGHTDRAG =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_RIGHTDOWN, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, ; tnHorz2 * lnhorzmult, tnVert2 * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_RIGHTDOWN, ; tnHorz2 * lnhorzmult, tnVert2 * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_RIGHTUP, ; tnHorz2 * lnhorzmult, tnVert2 * lnvertmult, 0, 0) CASE ALLTRIM(UPPER(tcAction)) = [MDRAG] && MIDDLEDRAG =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MIDDLEDOWN, ; tnHorz * lnhorzmult, tnVert * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, ; tnHorz2 * lnhorzmult, tnVert2 * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MIDDLEDOWN, ; tnHorz2 * lnhorzmult, tnVert2 * lnvertmult, 0, 0) =mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MIDDLEUP, ; tnHorz2 * lnhorzmult, tnVert2 * lnvertmult, 0, 0) ENDCASE RETURN ENDPROC