# CodeGuru Technical FAQs > CodeGuru Individual FAQs >  Windows SDK User Interface: How can I emulate mouse events in an application?

## golanshahar

*Q:* How can I emulate mouse events in an application?

*A:*
 There are two API fucntions that you can use:

'mouse_event()'.'SendInput()'.
 Which of the two API functions should I use?

The 'mouse_event()' function has been superseded by 'SendInput()' on Window NT/2000/XP. Thus, on these operating systems you should use 'SendInput()' (unless you need to provide backward compatibility with Windows 98 etc.). This FAQ is based on 'SendInput()'.
 Can I see some example on how to use 'SendInput()' to emulate a click with the left mouse button?



```
void LeftClick ( )
{  
  INPUT    Input={0};
  // left down 
  Input.type      = INPUT_MOUSE;
  Input.mi.dwFlags  = MOUSEEVENTF_LEFTDOWN;
  ::SendInput(1,&Input,sizeof(INPUT));

  // left up
  ::ZeroMemory(&Input,sizeof(INPUT));
  Input.type      = INPUT_MOUSE;
  Input.mi.dwFlags  = MOUSEEVENTF_LEFTUP;
  ::SendInput(1,&Input,sizeof(INPUT));
}
```

 How to use the function? 



```
LeftClick();
```

The left click will be performed on the current position of the mouse cursor.
 Can I see some example on how to use 'SendInput()'
to emulate a click with the right mouse button?



```
void RightClick ( )
{  
  INPUT    Input={0};
  // right down 
  Input.type      = INPUT_MOUSE;
  Input.mi.dwFlags  = MOUSEEVENTF_RIGHTDOWN;
  ::SendInput(1,&Input,sizeof(INPUT));

  // right up
  ::ZeroMemory(&Input,sizeof(INPUT));
  Input.type      = INPUT_MOUSE;
  Input.mi.dwFlags  = MOUSEEVENTF_RIGHTUP;
  ::SendInput(1,&Input,sizeof(INPUT));
}
```

 How to use the function? 



```
RightClick();
```

The right click will be performed on the current position of the mouse cursor.
 Can I see some example on how to use 'SendInput()' for emulating mouse movement?



```
void MouseMove (int x, int y )
{  
  double fScreenWidth    = ::GetSystemMetrics( SM_CXSCREEN )-1; 
  double fScreenHeight  = ::GetSystemMetrics( SM_CYSCREEN )-1; 
  double fx = x*(65535.0f/fScreenWidth);
  double fy = y*(65535.0f/fScreenHeight);
  INPUT  Input={0};
  Input.type      = INPUT_MOUSE;
  Input.mi.dwFlags  = MOUSEEVENTF_MOVE|MOUSEEVENTF_ABSOLUTE;
  Input.mi.dx = fx;
  Input.mi.dy = fy;
  ::SendInput(1,&Input,sizeof(INPUT));
}
```

 How to use the function? 



```
MouseMove(100,100);
```

This call will move the mouse cursor to the position 100/100 on the screen.

Thanks to *cilu* for helping writing this FAQ.

----------

