java如何编写可以与其他程序交互的程序
我想写一个可以在windows上玩纸牌的程序。用户将运行该程序,打开纸牌,观察纸牌移动。为玩纸牌的程序编写AI很容易(我显然没有Windows纸牌的源代码)。我能想到的一种方法是,如果我拍摄了一张纸牌的图像并对其进行分析以确定纸牌的当前状态,那么我可以将纸牌的当前状态传递给我的程序,该程序可以确定下一步的动作。但是如何执行单击命令呢
更一般地说,我想写一个程序,可以像用户一样与另一个程序交互。 我有C,C++,java,露比的经验。但我甚至不知道如何开始,或者这是否可以做到
# 1 楼答案
Windows有一个所谓的“UI自动化”API,它对实现您的要求非常有帮助——一些带有详细信息/源/示例的链接:
备注:
从Java实现这一点可能有点困难,因为AFAIK需要使用JNI
# 2 楼答案
我个人不太喜欢screen scraper技术,因为它们经常受到底层应用程序更改甚至屏幕分辨率更改的影响
然而,这似乎是一种你可以在这里采用的方法
我同意java不是这里的最佳选择
搜索“screen scraper API”,你应该会找到一些让你开始的东西
更新:
第一个似乎很有希望的热门歌曲是http://community.screen-scraper.com/API
这与直觉相反,似乎是基于java的
# 3 楼答案
我不确定这里的所有其他帖子,但Java有一个Robot类,允许您(轻松地)将键盘和鼠标事件分派到底层操作系统(本例中为windows),这将允许您完全执行您所说的操作。这是一个小班,我用了很多次在windows上“自动化”任务
(我知道这是一条古老的线索,但以防世界上其他人像我一样偶然发现它,并想做你概述的事情。)
# 4 楼答案
Java不是这样做的语言。为了实现这样的功能,您需要严重依赖windows API,尤其是那些允许您注入输入的API。作为起点,我建议您了解windows应用程序实际如何处理输入This是一篇关于这个主题的好文章
# 5 楼答案
如果您想自动执行Windows任务,请使用专门编写的语言来执行。想到的包括WinBatch、AutoIt和AutoHotkey
# 6 楼答案
Windows有一个方法SendInput,可以用它来编程控制鼠标和键盘。如果您知道要控制哪个应用程序,这可能就足够了。不过,您可能还想检查屏幕上显示的内容。为此,你需要GetPixel