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

Java 如何编写可以与其他程序交互的程序,java,Java,我想写一个可以在windows上玩纸牌的程序。用户将运行该程序,打开纸牌,观察纸牌移动。为玩纸牌的程序编写AI很容易(我显然没有Windows纸牌的源代码)。我能想到的一种方法是,如果我拍摄了一张纸牌的图像并对其进行分析以确定纸牌的当前状态,那么我可以将纸牌的当前状态传递给我的程序,该程序可以确定下一步的动作。但是如何执行单击命令呢 更一般地说,我想写一个程序,可以像用户一样与另一个程序交互。 我有C,C++,java,露比的经验。但是我甚至不知道如何开始这项工作,或者这项工作是否可以完成?Ja

我想写一个可以在windows上玩纸牌的程序。用户将运行该程序,打开纸牌,观察纸牌移动。为玩纸牌的程序编写AI很容易(我显然没有Windows纸牌的源代码)。我能想到的一种方法是,如果我拍摄了一张纸牌的图像并对其进行分析以确定纸牌的当前状态,那么我可以将纸牌的当前状态传递给我的程序,该程序可以确定下一步的动作。但是如何执行单击命令呢

更一般地说,我想写一个程序,可以像用户一样与另一个程序交互。
我有C,C++,java,露比的经验。但是我甚至不知道如何开始这项工作,或者这项工作是否可以完成?

Java不是这样做的语言。为了实现类似的功能,您需要严重依赖windows API,尤其是那些允许您注入输入的API。作为起点,我建议您了解windows应用程序实际如何处理输入。这是一篇关于这个主题的好文章。

Windows有一个所谓的“UI自动化”API,它对实现您的要求非常有帮助-一些带有详细信息/源/示例的链接:

备注:


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

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

我个人不太喜欢screen scraper技术,因为它们经常受到底层应用程序更改甚至屏幕分辨率更改的影响。
然而,这似乎是您可以在这里采用的方法。
我同意java不是这里的最佳选择。
搜索“screen scraper API”,您应该会找到一些可以让您起步的东西

更新:

第一个似乎很有希望的热门歌曲是

这与直觉相反,似乎是基于java的。

如果您想自动化Windows任务,请使用专门编写的语言来执行。我不太清楚这里的其他文章,但是Java有一个机器人类,它允许您(轻松地)将键盘和鼠标事件分派到底层操作系统(在本例中是windows),这将允许您完全按照您所说的做。这是一个小班,我用了很多次在windows上“自动化”任务


(我知道这是一条古老的线索,但万一世界上其他任何人像我一样偶然发现它,并想做你概述的事情。)

你提供的链接是用于抓取wb网站的-从FAQ屏幕抓取的刮板仅用于从网站抓取数据!哦,我认为java可能不是满足这一需求的最佳技术选择。但我确信还有其他屏幕抓取API可用于外部自动化windows应用程序。我在软件测试套件中看到过类似的东西。在Java上这样做会很乏味。“为玩纸牌的程序编写AI很容易”是吗?请与我们分享这个片段。“我发现了一个真正了不起的证据,这个评论太小了,容不下。”