c# - 欺骗应用程序关于鼠标位置的信息

标签 c# java winapi mouseevent user32

首先,如果有任何特定于语言的解决方案只能在 c++/c#/java 等中实现,请这么说,因为我可以使用任何一个。 目前,我正在尝试单击后台应用程序中的按钮,并且我可以使用发送/发布消息来管理“单击”部分。就像这样:

            SendMessage(Window, 0x201, 0, 700 * 0x10000 + 700);

0x201 这里是鼠标左键按下,推测位置应该是 700, 700

但是,当我发送该消息时,应用程序试图根据我当前的鼠标位置而不是 700,700 来愚弄行为。

我相信这是因为我试图欺骗的应用程序会查找当前的鼠标位置。有什么办法可以愚弄它吗?

最佳答案

你不应该用SendMessage来实现这个,你在这个过程中已经太晚了 - 系统已经处理了各种事情并确定了一旦消息到达消息队列就发送哪条消息。在那里发送原始点击事件只会让它更加困惑。

您应该使用 SendInput Win32 API call 。它在更高级别上模拟鼠标(和其他输入设备)行为,然后让系统负责处理结果消息就像真正的鼠标导致这些消息。因此,从定义上来说,它会愚弄所有人,因为没有什么可愚弄的 - 出于所有意图和目的,鼠标确实移动到了给定位置。

您还可以使用更简单的 mouse_event 来实现此目的调用,但它已被正式弃用,因此首选 SendInput

关于c# - 欺骗应用程序关于鼠标位置的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16703029/

相关文章:

c# - 用户控制工具提示在透明部分不起作用

java - 使用servlet和html在服务器上上传文件时找不到符号getServletContext()错误

java - 在 Liferay portlet 中存储依赖项的位置

java - 如何根据集合值的大小对 map 进行排序?

c++ - 默认按钮只工作一次

检查不存在的文件是否可执行 -Win32 C

c# - LINQ to SQL - 排序依据、分组依据以及每个组的排序,并带有skip和take

c# - 如何使用 Windows 应用程序驱动程序/C# 从 TreeItem/DataItem 读取值?

c# - 记录我的 ASP.NET Core 应用程序成功启动或未启动的时间

vba - VBE 如何默认折叠工作表