fake mouse click

Hi,

I am trying to write a C++ program for Win95/NT that can fool any other application into thinking that the left mouse button has been pressed. Any ideas about how this can be done will be greatly appreciated.
bjovanovicAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

jkrCommented:
You can do this by using the 'mouse_event()' API, it's designed for this purpose - here's the description from the VC++ docs:

mouse_event  
The mouse_event function synthesizes mouse motion and button clicks.

Windows NT only: This function has been superseded. Use MouseEventEx instead.

VOID mouse_event( DWORD dwFlags,
 // flags specifying various motion/click variants
 
DWORD dx,
 // horizontal mouse position or position change
 
DWORD dy,
 // vertical mouse position or position change
 
DWORD dwData,
 // amount of wheel movement
 
DWORD dwExtraInfo
 // 32 bits of application-defined information
 
);
 


Parameters
dwFlags

A set of flag bits that specify various aspects of mouse motion and button clicking. The bits in this parameter can be any reasonable combination of the following values: Value
 Meaning
 
MOUSEEVENTF_ABSOLUTE
 Specifies that the dx and dy parameters contain normalized absolute coordinates. If not set, those parameters contain relative data: the change in position since the last reported position. This flag can be set, or not set, regardless of what kind of mouse or mouse-like device, if any, is connected to the system. For further information about relative mouse motion, see the following Remarks section.
 
MOUSEEVENTF_MOVE
 Specifies that movement occurred.
 
MOUSEEVENTF_LEFTDOWN
 Specifies that the left button changed to down.
 
MOUSEEVENTF_LEFTUP
 Specifies that the left button changed to up.
 
MOUSEEVENTF_RIGHTDOWN
 Specifies that the right button changed to down.
 
MOUSEEVENTF_RIGHTUP
 Specifies that the right button changed to up.
 
MOUSEEVENTF_MIDDLEDOWN
 Specifies that the middle button changed to down.
 
MOUSEEVENTF_MIDDLEUP
 Specifies that the middle button changed to up.
 
MOUSEEVENTF_WHEEL
 Windows NT only: Specifies that the wheel has been moved, if the mouse has a wheel. The amount of movement is given in dwData
 


The flag bits that specify mouse button status are set to indicate changes in status, not ongoing conditions. For example, if the left mouse button is pressed and held down, MOUSEEVENTF_LEFTDOWN is set when the left button is first pressed, but not for subsequent motions. Similarly, MOUSEEVENTF_LEFTUP is set only when the button is first released.

dx

Specifies the mouse’s absolute position along the x-axis or its amount of motion since the last mouse event was generated, depending on the setting of MOUSEEVENTF_ABSOLUTE. Absolute data is given as the mouse’s actual x-coordinate; relative data is given as the number of mickeys moved. A mickey is the amount that a mouse has to move for it to report that it has moved.

dy

Specifies the mouse’s absolute position along the y-axis or its amount of motion since the last mouse event was generated, depending on the setting of MOUSEEVENTF_ABSOLUTE. Absolute data is given as the mouse’s actual y-coordinate; relative data is given as the number of mickeys moved.

dwData

If dwFlags is MOUSEEVENTF_WHEEL, then dwData specifies the amount of wheel movement. A positive value indicates that the wheel was rotated forward, away from the user; a negative value indicates that the wheel was rotated backward, toward the user. One wheel click is defined as WHEEL_DELTA, which is 120.

If dwFlags is not MOUSEEVENTF_WHEEL, then dwData should be zero.

dwExtraInfo

Specifies an additional 32-bit value associated with the mouse event. An application calls GetMessageExtraInfo to obtain this extra information.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
bjovanovicAuthor Commented:
I am impressed. This person answered the question in 30 sec.

Thanks!
0
jkrCommented:
<s>
30s?

From: bjovanovic  Title: "fake mouse click"  
Points: 20  Date: Monday, February 07 2000 - 09:31PM CET  

From: jkr
 Date: Monday, February 07 2000 - 08:41PM CET  

50min before you asked ;-)

(no, to be honest, this is a bug with the EE clock <g>)
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft Development

From novice to tech pro — start learning today.