rubixxcube
asked on
SendMessage API in C# - Sending a mouse click to another window
i need to click on a button in another application from my C# application, i have API calls working to activate or close the window etc and they work fine so i know i am sending messages, and i know the code for an api mouse click, however i need to know the code to convert the integer mouse coordinates into the correct format so the correct area gets clicked in the other application. Here is my sample code:
public const uint WM_LBUTTONDOWN = 0x0201;
public const uint WM_LBUTTONUP = 0x0202
[DllImport("user32.dll")]
public static extern int SendMessage(
int hWnd, // handle to destination window
uint Msg, // message
long wParam, // first message parameter
long lParam // second message parameter
);
public static void SendMouseClick(int iHandle, int X, int Y)
{
/***problem line*********** / long lparm=(X and Y converted coordinates)
long lngResult = SendMessage(iHandle, WM_LBUTTONDOWN, 0, lparm);
long lngResult2 = SendMessage(iHandle, WM_LBUTTONUP, 0, lparm);
}
From my app i call
SendMouseClick(windowHandl e,100,200)
i need to know how to figure out the correct value for the last parameter and pass it to the sendmessage function.
In some sample coordinates i saw online it stated that a Y value of 200 and an X value of 100 would look something like 0064 00C8 but i have no idea how to get to that format from 200 and 100 and how to put them together, thanks in advance for the help
Ruby
public const uint WM_LBUTTONDOWN = 0x0201;
public const uint WM_LBUTTONUP = 0x0202
[DllImport("user32.dll")]
public static extern int SendMessage(
int hWnd, // handle to destination window
uint Msg, // message
long wParam, // first message parameter
long lParam // second message parameter
);
public static void SendMouseClick(int iHandle, int X, int Y)
{
/***problem line*********** / long lparm=(X and Y converted coordinates)
long lngResult = SendMessage(iHandle, WM_LBUTTONDOWN, 0, lparm);
long lngResult2 = SendMessage(iHandle, WM_LBUTTONUP, 0, lparm);
}
From my app i call
SendMouseClick(windowHandl
i need to know how to figure out the correct value for the last parameter and pass it to the sendmessage function.
In some sample coordinates i saw online it stated that a Y value of 200 and an X value of 100 would look something like 0064 00C8 but i have no idea how to get to that format from 200 and 100 and how to put them together, thanks in advance for the help
Ruby
ASKER
Do you have some sample code using the SendInput or mouse_event APIs?
http://www.pinvoke.net/default.aspx/user32/SendInput.html
PInvoke declarations are shown for C# and VB. There is code sample in C# for sending keyboard messages and in VB for sending mouse messages, see:
Private Sub SendInputStream()
' Synthesize the user clicking the right mouse button
...
You can translate this to C#.
PInvoke declarations are shown for C# and VB. There is code sample in C# for sending keyboard messages and in VB for sending mouse messages, see:
Private Sub SendInputStream()
' Synthesize the user clicking the right mouse button
...
You can translate this to C#.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I had seen this webpage but never this example, thanks for the help alex
int lParam = (y << 16) + x;
To send mouse messages it is better to use SendInput or mouse_event API.