机器人,他们是如何工作的?他们是否告诉视频游戏按下了键或点击了鼠标?
如果没有,是否有办法让你的程序告诉另一个程序按下了一个键?我想做一个程序来击败一些游戏.因此,任何资源或示例都受到赞赏.
更新:所以一种方法是模拟击键,那么有什么方法可以做到这一点(用任何语言)?
我曾经一次写过一堆机器人(从Pogo游戏到Yohoho Puzzle Pirates).对于Windows,您通常要么发送Win32事件来模拟鼠标移动,要么在实际点击鼠标时欺骗窗口之间发送的实际低级别消息.很多它实际上取决于程序如何反应(通过接受带有坐标的消息,或者在Java的情况下,立即读取鼠标坐标)."自动化"部分通常涉及读取屏幕并编写用于确定状态的启发式算法或算法,但也可以像数据包嗅探一样好(扑克实施中的大量信息)或直接读取内存位置的hacky.相当大的"领域",并且记录不佳,因为它非常有利可图并且不难进入.
对于密钥,请尝试CodeProject:
http://www.codeproject.com/KB/cpp/sendkeys_cpp_Article.aspx
和消息:
http://www.codeproject.com/KB/threads/sendmsg.aspx
最好的办法是学习使用Win32 API发送消息,然后使用类似Spy ++或其衍生物的东西来"逆向工程"KeyPresses和鼠标移动如何发送到窗口.
Java有一个非常便携的Robot类,它能够:
从屏幕上读取像素.
控制鼠标.
发送密钥.
如果你正在寻找快捷方便,我会给你一个机会.
这在互联网上的其他地方进行了深入的描述,但大多数机器人遵循简单的状态机程序流程.您阅读屏幕(或数据包或内存),根据您的读数和过去的数据找出您所处的"状态",进行计算,并将结果发送回程序.
阅读屏幕可能很困难,但如果你多次考虑,可以使这个屏幕相对于窗口有一些"幸运"像素可以让你更容易理解程序所在的状态.找到这些像素可以自动化.
有两种机器人。记得我以前玩CS的时候(很久很久以前)
有些机器人使用应用程序本身的库来检查环境(地图,玩家所在的位置等)。机器人还使用该库来控制移动。我怀疑有很多机器人实现会调用鼠标消息来告诉游戏如何移动等。
一些机器人会模仿应用程序级别的协议(如果它是多人游戏)。换句话说,游戏甚至不需要运行。机器人可以在虚拟游戏中运行。
我将与另一位海报者提出的建议背道而驰:写一个游戏机器人可能比实际玩游戏更有价值,并且对它们的工作方式感到好奇是一个好兆头。:)