繁体   English   中英

如何编写可以与其他程序交互的程序

[英]How to write a program that can interact with other programs

我想写一个可以在windows上播放纸牌的程序。 用户将运行该程序并打开纸牌,并在卡片移动时观看。 很容易编写AI用于播放纸牌的程序(我显然没有Windows纸牌的源代码)。 我可以想到这样做的一种方式是,如果我拍摄了纸牌的图像并对其进行分析以确定卡片的当前状态,那么我可以将卡片的当前状态传递给我的程序,这可以决定下一步行动。 但是我将如何执行click命令。

更一般地说,我想编写一个可以像用户那样与另一个程序交互的程序。 我有C,C ++,Java,Ruby方面的经验。 但我不知道如何开始这个,或者甚至可以做到这一点?

我不确定这里的所有其他帖子,但是Java有一个Robot类,它允许你(轻松地)将键盘和鼠标事件发送到底层操作系统(在这种情况下为Windows),这样就可以让你完全按照自己的意思行事了。再谈。 这是一个小课程我已经用了很多次来“自动化”Windows上的任务。

(我知道这是一个老话题,但万一其他人在世界各地偶然发现它并且想要做你已经概述的事情。)

如果要自动执行Windows任务,请使用专门编写的语言来执行此操作。 想到的那些包括WinBatch,AutoIt和AutoHotkey。

Java不是执行此操作的语言。 为了促进这样的功能,您需要严重依赖Windows API,尤其是那些允许您注入输入的API。 作为一个起点,我建议您熟悉Windows应用程序实际处理输入的方式。 是一篇关于这个主题的好文章。

Windows有一个所谓的“UI自动化”API,它非常有助于实现您的要求 - 一些链接包含详细信息/源/样本:

备注:

从Java执行此操作可能有点困难,因为AFAIK需要使用JNI。

Windows有一个方法SendInput ,可用于编程控制鼠标和键盘。 如果您知道要控制哪个应用程序,这可能就足够了。 但是,您可能还想检查屏幕上的内容。 为此,您需要GetPixel

我个人不喜欢屏幕刮刀技术,因为它们经常受到底层应用程序更改或甚至屏幕分辨率变化的影响。
然而,这似乎是一种你可以采用的方法。
我同意java不是这里的最佳选择。
搜索“屏幕刮刀API”,你应该找到一些东西让你开始。

更新:

第一个看起来很有希望的是http://community.screen-scraper.com/API
反直觉似乎是基于java的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM