我想制作一个鼠标宏器。哪个都可以模拟鼠标事件,或者在屏幕上使用我的计算机自己的光标。
应通过在IDE中键入方法来创建宏。然后,这些方法将在某个.exe的窗口上执行鼠标事件。通过使用坐标。
例如,这是我在某个.exe窗口上执行模拟或非模拟鼠标左键单击的方法的目标:
Psuedo代码:
//Following method left clicks with the offset (x, y)
//from the windows top left corner. If the bool isSimulated
//is set to true the click will be simulated else the computers
//own mouse cursor will be moved and execute the mouse event.
LeftMouseClickOnWindow(x, y, isSimulated);
为了更好地解决问题,模拟鼠标点击应该在窗口最小化或未聚焦时起作用。
我想知道创建这种工具的最佳方法是什么。
user32.dll的功能是一个好方法吗?
用C ++而不是C#更容易吗?
非常感谢任何建议,来源,示例代码和评论!
答案 0 :(得分:2)
C ++和C#都很棒。 AutoHotKey可以胜任,但我喜欢你 - 我喜欢写自己的东西。另一个选项是AutoIt,你可以在你的C#项目中使用它的dll
......但是你必须确保它安装在每个系统上...而不是我遇到过的奢侈品常。
这里有一些可以玩的东西。希望它会让你去...注意它是C#。在运行此代码之前,请确保在鼠标所在的位置没有任何重要的打开...这将在对角线的右下方移动20次,并在每次移动时执行单击。你不希望这意外地关闭你的东西。所以,在运行之前,只需将其全部最小化。
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace ConsoleApplication
{
class Program
{
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
//private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
//private const int MOUSEEVENTF_RIGHTUP = 0x10;
public void DoMouseStuff()
{
Cursor.Current = new Cursor(Cursor.Current.Handle);
var point = new Point(Cursor.Position.X, Cursor.Position.Y);
for (int i = 0; i < 20; i++, point.X += 10, point.Y += 10)
{
Cursor.Position = point;
Program.mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, (uint)Cursor.Position.X, (uint)Cursor.Position.Y, 0, 0);
System.Threading.Thread.Sleep(100);
}
}
static void Main(string[] args)
{
var prog = new Program();
prog.DoMouseStuff();
}
}
}
您需要为System.Windows.Forms
&amp; System.Drawing
,如果您还没有这些设置。我把它作为一个控制台应用程序,因此,需要为我设置。正如您所注意到的那样,我加入了System.Threading.Thread.Sleep(100);
...这样您就可以看到发生了什么。所以,我基本上放慢了整个过程。它移动并且每次移动时都会发出咔嗒声(大约每100毫秒一次)。
熟悉Cursor
和user32.dll
。
最后,但并非最不重要的,这里有关于鼠标和电子邮件的MSDN文档。键盘模拟:http://msdn.microsoft.com/en-us/library/ms171548.aspx