C# 使用PostMessage模拟鼠标单击

C# 使用PostMessage模拟鼠标单击,c#,click,postmessage,simulate,C#,Click,Postmessage,Simulate,最近,使用PostMessage模拟点击开始激活该窗口。以前,这不是一个问题,单击是在没有焦点的非活动窗口中执行的 int coords = (y << 16) + x; IntPtr lParam = new IntPtr(coords); PostMessage(hwnd, WM_LBUTTONDOWN, IntPtr.Zero, lParam); PostMessage(hwnd, WM_LBUTTONUP, IntPtr.Zero, lParam); [DllImport(

最近,使用PostMessage模拟点击开始激活该窗口。以前,这不是一个问题,单击是在没有焦点的非活动窗口中执行的

int coords = (y << 16) + x;
IntPtr lParam = new IntPtr(coords);
PostMessage(hwnd, WM_LBUTTONDOWN, IntPtr.Zero, lParam);
PostMessage(hwnd, WM_LBUTTONUP, IntPtr.Zero, lParam);

[DllImport("user32.dll", SetLastError = true)]
static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

const Int32 WM_LBUTTONDOWN = 0x201;
const Int32 WM_LBUTTONUP = 0x202;

int坐标=(自从Windows Vista以来,人们不应依赖于通过低级消息泵向其他应用程序发布消息,以希望控制这些应用程序,因为这样的操作可以被阻止。您可能需要考虑使用微软UI自动化。虽然最初用于测试应用程序,但它可以用于远程控制。可以是一个窗口或任何可以单击的子元素。但请参见此处的最后说明。无论如何,这取决于您要对特定元素(窗口\子控件)类型执行的操作。不同的元素实现不同的模式,可以激活不同的操作。