uint WM_LBUTTONDOWN = 0x201; uint WM_LBUTTONUP = 0x202; [DllImport("user32.dll", SetLastError = true)] static extern bool PostMessage(IntPtr hWnd, uint Msg, int wParam, int lParam); [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)] private static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("user32.dll", EntryPoint = "SetForegroundWindow", SetLastError = true)] private static extern void SetForegroundWindow(IntPtr hwnd); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern bool PostMessage(IntPtr hwnd, int msg, uint wParam, uint lParam);
这是定义的
下面是按钮事件
private void button1_Click(object sender, EventArgs e) { int x = 10; int y = 10; IntPtr hwndCalc = FindWindow(null, "Form1"); SetForegroundWindow(hwndCalc); PostMessage(hwndCalc, WM_LBUTTONDOWN, 0, x + (y << 16)); PostMessage(hwndCalc, WM_LBUTTONUP, 0, x + (y << 16)); } uint WM_LBUTT
x 10 y 10 这个位置是一个按钮按钮时间如下
private void button2_Click(object sender, EventArgs e) { MessageBox.Show("ok"); }
结果一直都不会弹出 ‘’ok‘’
想实现的效果是 当我点击按钮1会 点击窗口内指定坐标(不要去获取那个位置的句柄按钮) 需要的就是在那个坐标实现点击 明明 x=10 y=10 已经是在按钮2上面了 但是就是不触发按钮2的事件。。。。
是不是我代码出什么问题了???求高手帮助
界面如下
这个是程序界面
你是给 Form1 发送的,不是给你的 button2 发送的,你得拿到 button2 的 HANDLE 。