我想知道是否可以使用此类查找文件或程序。我知道有一些方法可以使用鼠标坐标或简单地找到一个应用程序并运行它,但这不是我想要做的。
更清楚的例子是:假设我的桌面上有 Google Chrome、Firefox 和 Safari,我将它们随机播放。如何让我的鼠标找到我正在寻找的浏览器,而无需简单地使用“运行应用程序”命令。
我希望澄清它!感谢您的帮助 =)
我想知道是否可以使用此类查找文件或程序。我知道有一些方法可以使用鼠标坐标或简单地找到一个应用程序并运行它,但这不是我想要做的。
更清楚的例子是:假设我的桌面上有 Google Chrome、Firefox 和 Safari,我将它们随机播放。如何让我的鼠标找到我正在寻找的浏览器,而无需简单地使用“运行应用程序”命令。
我希望澄清它!感谢您的帮助 =)
最简单的方法(据我所知,使用Robot
)是记录构成您要查找的内容的像素并逐个像素地查找它(您可以将当前屏幕截图与存储在文件中的图像进行比较)。去做这个:
截取您要查找的图标并将其保存到文件(只需保存图标)(不是 .jpg,因为这不是无损的,可能只是 .bmp)。
然后您可以执行以下操作:
Robot robot = new Robot();
BufferedImage current = robot.createScreenCapture(
new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
static void getScreenStart()
{
BufferedImage icon = ImageIO.read(new File("chromeIcon.bmp"));
for (int x = 0; x < current.getWidth (); x++)
for (int y = 0; y < current.getHeight(); y++)
{
boolean matches = true;
for (int x2 = 0; x2 < icon.getWidth () && matches; x2++)
for (int y2 = 0; y2 < icon.getHeight() && matches; y2++)
if (icon.getRGB(x2, y2) != current.getRGB(x+x2, y+y2))
matches = false;
if (matches)
{
X_START = x;
Y_START = y;
return;
}
}
}
但通常尽量避免这样做。
不,我认为使用 Robot 类不容易做到这一点。这是因为 Java 是一种跨平台语言,不能/没有可用于集成到本机环境和窗口管理器的库。
Java 代码需要在任何带有 JDK 的平台上运行,将这些功能添加到每个 JDK 将是一项艰巨的任务。我会研究其他可以提供此功能的 Java 库,Robots 不会提供您正在寻找的东西。
对于 Windows,我建议使用AutoHotkey,它是一种用于桌面自动化的脚本语言并且非常强大。Mac OSX 也有一个作为IronAHK的端口。
至于 Java 库,取决于您希望完成的任务,您可以查看一些 GUI 自动化测试解决方案,例如TestComplete甚至Selenium。看看 Java 的测试自动化工具,你会发现更多!
我正在为网络爬行做类似的事情,我可以告诉你,下面帖子中的工具不会那么简单。我将 Selenium 用于其他目的,但它不适用于在所有可见区域顶部都有画布的图像。为此,您应该使用机器人类,但之前您必须知道您期望的坐标。要使用某种 GUI 自动化测试工具,您必须让字段可供选择。我认为您不会在某些网页上轻松找到它。可能要获得可行的解决方案,您必须进行数字图像处理,这非常好,而且并不难。有很多 Java 库可以做到这一点。试试 OpenCV,我认为它的 lib 名称是 JavaCV,它很强大。