c# - 如何在 c# 中模拟鼠标点击,这将在游戏中起作用?

标签 c# winapi click mouse

当我玩帝国时代或其他策略游戏时,我经常需要将某些资源出售 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 和 Windows 中(word、Firefox 等)甚至在帝国时代都运行良好,但不幸的是它在“Stronghold crusader”和其他一些我不记得它们的游戏中不起作用名字。

我假设发生这种情况是因为点击是在高级别模拟的,如果它被模拟得更接近驱动程序级别,它就会起作用。

我有两个问题:

  1. 我的假设正确吗?
  2. 我怎样才能在较低的级别模拟鼠标点击,这将在这个游戏中起作用?

我使用 c#,但任何 c++ 代码也有帮助(我将只使用 PInvoke)。

谢谢,

最佳答案

我曾经遇到过同样的问题。您是否尝试通过 VS2010 中的发布/调试编译器使用该应用程序?如果是这样,请尝试单独运行单独的编译文件,如果适用,请记住以管理员身份运行它。

无论出于何种原因,当由 VSHost 托管时,我的机器人在某些游戏中拒绝正常工作。

关于c# - 如何在 c# 中模拟鼠标点击,这将在游戏中起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12735569/

相关文章:

c# - 如何仅使用 CaSTLe Core 2.5.2 中的 DictionaryAdapter?

c++ - GetModuleFileName 在 Win 7/Win 10 上的不同行为

multithreading - WaitForSingleObject while debugging(调试期间一般缓慢)

jquery - 全日历上的日点击事件

wpf - 数据网格上的弹出窗口中的按钮未引发单击事件

android - 以编程方式创建图像按钮

c# - HttpContext.RequestServices.GetService<T>() 与 services.AddScope<T>()?

c# - 为什么从两个不同的 base64 字符串转换返回相等的字节数组?

c# - 最佳 .NET 数组/列表

c - _TP_POOL 结构的定义在哪里?