|
||||||||||||||||||
Add Forum to Favorites | Send Topic To a Friend | View Forum FAQ | Track this topic |
Last Thread Next Thread ![]() |
| How to simulate a mouse click in C#? |
|
![]() kaban Member since: 5/15/2005 From: Columbia, SC, United States |
||||
|
|
||||
| I have been searching on google and msdn trying to figure this out and got really confused. What I am trying to do is make a windows application that simulates mouse clicks after I hit a certain button. I want the program to make the mouse click anywhere and continue to click even if the program is minimized, until I hit the button that tells it to stop. I have the C++ code for it, which is very simple: //Simulate left mouse click mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0); Is there any equivalent C# code? Is there a way to port this C++ code into my C# program? I am completely new to .NET, sorry for the noob questions! Thanks |
||||
|
||||
![]() DaWanderer Member since: 5/11/2000 From: USA |
||||
|
|
||||
Yes, you can import this function into your C# program. Here's an example:using System; using System.Windows.Forms; using System.Runtime.InteropServices; public class Form1 : Form { [DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)] public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo); private const int MOUSEEVENTF_LEFTDOWN = 0x02; private const int MOUSEEVENTF_LEFTUP = 0x04; private const int MOUSEEVENTF_RIGHTDOWN = 0x08; private const int MOUSEEVENTF_RIGHTUP = 0x10; public Form1() { } public void DoMouseClick() { //Call the imported function with the cursor's current position int X = Cursor.Position.X; int Y = Cursor.Position.Y; mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0); } //...other code needed for the application } |
||||
|
||||
![]() kaban Member since: 5/15/2005 From: Columbia, SC, United States |
||||
|
|
||||
| Awesome! That worked perfectly. Thanks a lot. :D |
||||
|
||||
![]() Anonymous Poster |
||||
|
||||
| What about right clicks? |
||||
|
||||
![]() Anonymous Poster |
||||
|
||||
| replace left with right in the call to mouse_event() maybe ? |
||||
|
||||
![]() BradSnobar Member since: 9/13/2005 From: Seattle, WA, United States |
||||
|
|
||||
| Be careful with an application like this. I have written some GUI test harnesses that had functionality like this. It can be difficult to make them work in a way that handles a lot of situations gracefully. Here are some notes of interest if you plan on expanding your tool. screen resolution changes, time between keypresses and click messages, lost messages, etc. A good help is if there is a hook that you can use to check if the keypress, or click was successful. |
||||
|
||||
![]() drexlin Member since: 6/14/2007 From: Marlton |
||||
|
|
||||
| I'm trying to use this class, but no matter what values I use for X and Y, the simulated click always happens wherever the mouse cursor is. What is the point of the X and Y if not to tell the function the location of the mouse click |
||||
|
||||
![]() GroZZleR Member since: 1/26/2002 From: Whitby, Canada |
||||
|
|
||||
Quote:
//Call the imported function with the cursor's current position
int X = Cursor.Position.X;
int Y = Cursor.Position.Y;
They're setting the X and Y to the current mouse position. Set the values to whatever you want. |
||||
|
||||
![]() drexlin Member since: 6/14/2007 From: Marlton |
||||
|
|
||||
Quote: I did change these values. It still doesn't work. |
||||
|
||||
![]() Americanadian Member since: 6/20/2008 |
||||
|
|
||||
| I'm having the exact same problem. I can't figure out how to set the coordinates for x and y; no matter what values I use, the mouse stays in the same position, I used the right button down and up to test this... |
||||
|
||||
![]() Americanadian Member since: 6/20/2008 |
||||
|
|
||||
| Hey Drexlin, I figured it out. Add a reference to System.Drawing to your .cs and then when you solve for your x and y coords, make your next line as follows: Cursor.Position = new Point((int)x, (int)y); Then use it in your SendMouseInput or mouse_event function (Cursor.Position.X and Y) instead of your original x and y. Cheers, hope that helps you out too! Chris |
||||
|
||||
![]() cecenzor Member since: 10/5/2009 From: Konya, Turkey |
||||
|
|
||||
| hi... i appreciate that if anyone can help me... I have been trying to disable mouse click for startup button in c#... I tried several ways but i couldnt make it... please help me.... |
||||
|
||||
![]() Codeka Member since: 10/19/2008 From: Sydney, Australia |
||||
|
|
||||
| If you have a new question, you should start a new thread. Also, if you're going to start a new thread, I would suggest you also provide a reason for why you want to "disable mouse click for [start] button". If you're writing a kiosk program, there's better ways to do it than messing with mouse messages, but if you don't tell us we can't really guess. my blog |
||||
|
||||
All times are ET (US)![]() |
Last Thread Next Thread ![]() |
|