当我玩帝国时代或其他策略游戏时,我经常需要将一些资源卖 100 次,然后再卖一次。这很烦人 :(
我编写了一个程序,通过单击鼠标来帮助我:
//This is the decleration
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
private void ClickTheMouse()
{
int X = Cursor.Position.X;
int Y = Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
然后通过使用计时器和上面的代码,我可以点击 30 次。
它在 windows 中(word、Firefox 等)甚至在帝国时代都可以很好地工作,但不幸的是,它在“要塞十字军”和其他一些我不记得他们的名字的游戏中不起作用。
我认为发生这种情况是因为点击模拟在高级别,如果模拟更接近驱动程序级别,它将起作用。
我有 2 个问题:
- 我的假设正确吗?
- 如何在较低级别模拟鼠标点击,这将在这个游戏中起作用?
我使用 c# ,但任何 c++ 代码也会有所帮助(我将只使用 PInvoke)。
谢谢,