模拟鼠标单击消息

学习做游戏外挂开发,记录下学习的过程。

要实现模拟“开始”按钮单击事件。

var
  gameH:HWND;
begin
  gameH:=FindWindow(nil,'QQ游戏 - 连连看角色版');
  {
  SendMessage(gameH,Messages.WM_LBUTTONDOWN,0,$023E0290);
  SendMessage(gameH,Messages.WM_LBUTTONUP,0,$023E0290);
  }
  PostMessage(gameH,Messages.WM_LBUTTONDOWN,0,$023E0290);
  PostMessage(gameH,Messages.WM_LBUTTONUP,0,$023E0290);

一开始总是不能实现,用Spy++跟踪对比发现


发现模拟的消息总是有'S'和'R',直接点游戏的开始只是'P'。

查帮助

“消息”视图中显示的每个消息行都包含一个“P”、“S”、“s”或“R”代码。这些代码具有以下含义:

代码 意义
P 使用 PostMessage 函数将消息发送到队列。没有可用的关于消息的最终处置的信息。
S 使用 SendMessage 函数发送消息。这意味着,发送方在接收方处理和返回该消息之前不会重新获取控制。因此,接收方可以将一个返回值传送回发送方。
s 消息已发送,但安全性阻止对返回值的访问。
R 每个“S”行都具有一个对应的列出消息返回值的“R”(返回)行。有时消息调用被嵌套,这意味着一个消息处理程序发送了另一个消息。

修改代码,用PostMessage后,再试OK!

不过PostMessage和SendMessage两个函数的区别还没有搞清楚。

你可能感兴趣的:(模拟鼠标单击消息)