The program I am trying to do is to simulate the mouse event of a operating system using keyboard with Windows Form. Right now I am able to change the cursor and do different actions like mouse clicking inside the Form (when the Form is on the Top).
The problem is I would like to extend it to the whole Operating System, which means even if my Windows Form is not at the top, I am still able to control my cursor and do all sorts of mouse event on other applications while the Form is running. How should I do to implement this ?
You can synthesize OS-wide keystrokes, mouse motions, and button clicks using the Win32
SendInput()API. You can call it from C# using P/Invoke. Sample code can be found here: SendInput on PInvoke.net.I remember back in the day I used the SendInput (and a screenshot API) to create a Minesweeper bot in C# (2.0 I think). It could solve an Expert puzzle in about one second. I wish I still had the source code to sample here, but I don’t.
EDIT: It appears someone has already created a nice .NET warpper for the
SendInput(): Windows Input Simulator on CodePlex.