学习做游戏外挂开发,记录下学习的过程。
要实现模拟“开始”按钮单击事件。
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++跟踪对比发现
![](http://hi.csdn.net/attachment/201110/3/0_1317625442r9BX.gif)
发现模拟的消息总是有'S'和'R',直接点游戏的开始只是'P'。
查帮助
“消息”视图中显示的每个消息行都包含一个“P”、“S”、“s”或“R”代码。这些代码具有以下含义:
代码 | 意义 |
---|---|
P | 使用 PostMessage 函数将消息发送到队列。没有可用的关于消息的最终处置的信息。 |
S | 使用 SendMessage 函数发送消息。这意味着,发送方在接收方处理和返回该消息之前不会重新获取控制。因此,接收方可以将一个返回值传送回发送方。 |
s | 消息已发送,但安全性阻止对返回值的访问。 |
R | 每个“S”行都具有一个对应的列出消息返回值的“R”(返回)行。有时消息调用被嵌套,这意味着一个消息处理程序发送了另一个消息。 |
修改代码,用PostMessage后,再试OK!
不过PostMessage和SendMessage两个函数的区别还没有搞清楚。