在不移动光标的情况下执行鼠标单击
本文关键字:执行 鼠标 单击 情况下 移动 光标 | 更新日期: 2023-09-27 18:07:32
我找不到任何解决方案,除了通过Cursor
类移动光标,点击mouse_event
然后将光标移动到原来的位置。我现在正在玩SendInput
功能,但仍然没有一个好的解决方案的机会。任何建议吗?
您应该使用Win32 API。使用pInvoked SendMessage from user32.dll
pInvoked函数
然后阅读鼠标事件:msdn
上的鼠标输入然后阅读:系统事件和鼠标混乱.......
也有很多信息:信息
下面是Hooch建议的方法的一个示例。
我创建了一个包含2个按钮的表单。当您单击第一个按钮时,第二个按钮的位置被解析(屏幕coördinates)。然后检索此按钮的句柄。最后,SendMessage(…)(PInvoke)函数用于在不移动鼠标的情况下发送单击事件。
public partial class Form1 : Form
{
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int Msg,
IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", EntryPoint = "WindowFromPoint",
CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr WindowFromPoint(Point point);
private const int BM_CLICK = 0x00F5;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// Specify the point you want to click
var screenPoint = this.PointToScreen(new Point(button2.Left,
button2.Top));
// Get a handle
var handle = WindowFromPoint(screenPoint);
// Send the click message
if (handle != IntPtr.Zero)
{
SendMessage( handle, BM_CLICK, IntPtr.Zero, IntPtr.Zero);
}
}
private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show("Hi", "There");
}
}