【发布时间】:2020-11-20 13:45:21
【问题描述】:
我使用 C#,我有一个带有 button1、button2 和 panel1 的应用程序,如果我点击 button1,它会打开一个到 panel1 的外部程序,然后如果我点击 button2,它会向窗口发送背景点击,工作正常. 但问题是这个点击位置不是相对于面板,也不是去正确的地方。它发送点击实际光标在哪里。
我使用的代码片段:
PerformRightClick(proc.MainWindowHandle, new Point(54, 42));
void PerformRightClick(IntPtr hwnd, Point point)
{
var pointPtr = MakeLParam(point.X, point.Y);
SendMessage(hwnd, WM_MOUSEMOVE, IntPtr.Zero, pointPtr);
SendMessage(hwnd, WM_RBUTTONDOWN, IntPtr.Zero, pointPtr);
SendMessage(hwnd, WM_RBUTTONUP, IntPtr.Zero, pointPtr);
}
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
IntPtr MakeLParam(int x, int y) => (IntPtr)((y << 16) | (x & 0xFFFF));
【问题讨论】:
标签: c# visual-studio mouse background-process sendmessage