1

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

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

0x201 这里是鼠标左键按下,应该是 700, 700

但是,当我发送该消息时,我试图欺骗的应用程序会根据我当前的鼠标位置而不是 700,700 执行操作。

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

4

1 回答 1

1

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

相反,您应该使用SendInput Win32 API 调用。它在更高级别模拟鼠标(和其他输入设备)行为,然后让系统负责处理结果消息,就好像真正的鼠标导致它们一样。因此,根据定义,它会愚弄所有人,因为没有什么可愚弄的——鼠标真的出于所有意图和目的移动到给定位置。

您也可以为此目的使用更直接mouse_event的调用,但它已正式弃用,因此SendInput是首选。

于 2013-05-22T23:13:26.083 回答