当前位置:  开发笔记 > 编程语言 > 正文

程序如何控制另一个程序?

如何解决《程序如何控制另一个程序?》经验,为你挑选了2个好方法。

机器人,他们是如何工作的?他们是否告诉视频游戏按下了键或点击了鼠标?

如果没有,是否有办法让你的程序告诉另一个程序按下了一个键?我想做一个程序来击败一些游戏.因此,任何资源或示例都受到赞赏.

更新:所以一种方法是模拟击键,那么有什么方法可以做到这一点(用任何语言)?



1> Stefan Mai..:

我曾经一次写过一堆机器人(从Pogo游戏到Yohoho Puzzle Pirates).对于Windows,您通常要么发送Win32事件来模拟鼠标移动,要么在实际点击鼠标时欺骗窗口之间发送的实际低级别消息.很多它实际上取决于程序如何反应(通过接受带有坐标的消息,或者在Java的情况下,立即读取鼠标坐标)."自动化"部分通常涉及读取屏幕并编写用于确定状态的启发式算法或算法,但也可以像数据包嗅探一样好(扑克实施中的大量信息)或直接读取内存位置的hacky.相当大的"领域",并且记录不佳,因为它非常有利可图并且不难进入.

发送输入

C/C++(在Windows中)

对于密钥,请尝试CodeProject:

http://www.codeproject.com/KB/cpp/sendkeys_cpp_Article.aspx

和消息:

http://www.codeproject.com/KB/threads/sendmsg.aspx

最好的办法是学习使用Win32 API发送消息,然后使用类似Spy ++或其衍生物的东西来"逆向工程"KeyPresses和鼠标移动如何发送到窗口.

Java的

Java有一个非常便携的Robot类,它能够:

    从屏幕上读取像素.

    控制鼠标.

    发送密钥.

如果你正在寻找快捷方便,我会给你一个机会.

基本逻辑

这在互联网上的其他地方进行了深入的描述,但大多数机器人遵循简单的状态机程序流程.您阅读屏幕(或数据包或内存),根据您的读数和过去的数据找出您所处的"状态",进行计算,并将结果发送回程序.

阅读屏幕可能很困难,但如果你多次考虑,可以使这个屏幕相对于窗口有一些"幸运"像素可以让你更容易理解程序所在的状态.找到这些像素可以自动化.



2> cgp..:

有两种机器人。记得我以前玩CS的时候(很久很久以前)

有些机器人使用应用程序本身的库来检查环境(地图,玩家所在的位置等)。机器人还使用该库来控制移动。我怀疑有很多机器人实现会调用鼠标消息来告诉游戏如何移动等。

一些机器人会模仿应用程序级别的协议(如果它是多人游戏)。换句话说,游戏甚至不需要运行。机器人可以在虚拟游戏中运行。

我将与另一位海报者提出的建议背道而驰:写一个游戏机器人可能比实际玩游戏更有价值,并且对它们的工作方式感到好奇是一个好兆头。:)

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有