- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 C#、Framework 4(32 位)开发 Windows 窗体应用程序。
我有一个包含鼠标坐标的列表,我可以捕获它们。到目前为止一切顺利。
但在某些时候,我想转到那些坐标并用鼠标左键单击它。
现在是这样的:
for (int i = 0; i < coordsX.Count; i++)
{
Cursor.Position = new Point(coordsX[i], coordsY[i]);
Application.DoEvents();
Clicking.SendClick();
}
还有点击类:
class Clicking
{
private const UInt32 MOUSEEVENTF_LEFTDOWN = 0x0002;
private const UInt32 MOUSEEVENTF_LEFTUP = 0x0004;
private static extern void mouse_event(
UInt32 dwFlags, // motion and click options
UInt32 dx, // horizontal position or change
UInt32 dy, // vertical position or change
UInt32 dwData, // wheel movement
IntPtr dwExtraInfo // application-defined information
);
// public static void SendClick(Point location)
public static void SendClick()
{
// Cursor.Position = location;
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, new System.IntPtr());
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, new System.IntPtr());
}
}
但是我收到了这个错误:
Could not load type 'program.Clicking' from assembly 'program, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' because the method 'mouse_event' has no implementation (no RVA).
而且我真的不明白问题是什么...你们知道问题是什么吗?或者你知道做我想做的事情的更好方法吗?
最佳答案
您是否添加了以下行?
[DllImport("user32.dll")]
static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData,
UIntPtr dwExtraInfo);
这将从 user32
dll 中导入函数 mouse_event
,这正是您要在程序中使用的。目前,您的程序不知道 DLL 中的此方法,直到您指定它来自何处。
网站PInvoke.net user32 Mouse Event对于这类事情的基础知识非常方便。
Directing mouse events [DllImport(“user32.dll”)] click, double click 的答案对你的理解也有很大的帮助。
flags
是您要发送到 mouse_input
函数的命令,在该示例中您可以看到他同时发送了 mouse down
和 mouse up
在同一行,这很好,因为 mouse_event
函数会将这些标志分开并连续执行。
另请注意,此方法已被 SendInput
命令取代,可以找到 SendInput
和 SetMousePos
的一个很好的示例 At this Blog
关于c# - 将鼠标移动到位置并左键单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13520705/
在 C# - WinForms 中,如何检测在 ToolStripTextBox 中按下 Alt + 左键? 最佳答案 protected override bool ProcessCmdKe
我希望 Resharper 中的 Control+LeftClick 绑定(bind)到“Goto Implementation”而不是“Goto Declaration”。这是因为我使用了很多接口(
我是一名优秀的程序员,十分优秀!