Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Can I simluate real mouse click and keyin Out of VFP?
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
Fonctions Windows API
Divers
Thread ID:
00386249
Message ID:
00387668
Vues:
20
>>Thanks a lot, I got the thread# 386463
>>
>>Other than MoveMouse absolute positions, what is the CLICK, RIGHTCLICK with CTRL, SHIFT key is press or not?
>>
>>How to get more information about the SPECIAL after I know the API function!?
>>Thanks!!
>
>Terrence, the following is from Winuser.h which is fould in the include directory beneath VC98 in the MS Visual Studio
> ... snap..
>hth,



Thanks All of you, here is my version for MouseAct function which can simulate click, dblclick, rightclick and drag action!
(^-^) but I still donno the Constant for CTRL, ALT, SHIFT for them..
so this version can't simulate CTRL+CLICK..

would anyone can fill up the API dictionary for mouse_event...
Um... I wonder there is a similar Function keybd_event in Win32.hlp...

I think this function will be the one I pant for!!
because there is not Code to Simulate {Win} Key.. (the start menu key beside {Ctrl} key)

Here is some useful shortcut key with the combination of the {Win} key, that's why I pant for it!! ;D===

Find File(s) F3 in Desktop/Explorer, {Win}+F in any application
Find Computer {CTRL}+{WIN}+F
Explorer {Win}+E
Run-Command {Win}+R
Minimize All {Win}+D or {Win}+M
Undo Minimize {SHIFT}+{WIN}+M
System Properties RightClick [My Computer]->Properties, {Win}+{Pause}

Surely, it is fast key on help, especially for Minimize All, and System properties when installing OS..

but... for my poor english, I donno how to use the keybd_event..
May you teach me again on this function? Thanks a lot!!


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
The weak wait for chance, The strong bid for chance,
The clever notch up chance, but The merciful give you chance.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform