问题标签 [awtrobot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4806 浏览

java - 使鼠标移动像人一样(使用圆弧而不是直线到达目的地)

我正在使用 java.awt.Robot 制作和自动点击器。然而,我担心的一个问题是这些动作不是很人性化。任何人都可以建议对我的代码进行一些更改以使其更人性化吗?现在它只是直线移动。

更新: 我决定使用一种利用Bézier Curves的算法。自从我实施更改以来已经很长时间了,但我想在这里发布它,以防人们将来发现它有用。这是我最终得到的结果:

0 投票
1 回答
1113 浏览

java - Robot.createScreenCapture 正在改变颜色

这是我写的截图类:

我正在做的是使用BufferedImagewhatever.getRGB(x,y)从上面截取的屏幕截图,以及它的坐标到另一个图像的一部分,然后返回找到匹配项的 x 和 y 位置。这适用于黑白图像,但不适用于彩色图像。我遇到的问题是,createScreenCapture屏幕截图的 RGB 颜色与原来的颜色不同,所以当我将拍摄的图像与createScreenCapture另一张图像进行比较时,它永远不会起作用。

我认为createScreenCapture必须减少屏幕截图中的颜色数量才能提高效率,但是有什么办法可以阻止它这样做吗?

0 投票
1 回答
3230 浏览

java - 使用 Java Robot 模拟键类型

我编写了一个方法来模拟 KeyEvent 中的按键,如下所示:

当这个方法接收到按下'A'键事件时,它可以输入'A'。

但问题是当它收到这个KeyEvent(按'a')时,它实际上按下了“1”。

谁能告诉我这种方法有什么问题?

0 投票
3 回答
3202 浏览

java - Java按键事件未触发

在编写这段代码的过程中,我意识到如果制作成一个罐子,就必须有一种优雅的方式来关闭程序。我选择使用“F1”键。我在网上研究了几篇文章,发现我试图处理它的方式应该是一种可行的方法,但程序似乎甚至没有触发事件方法。system.out.println 从不显示。

0 投票
1 回答
806 浏览

java - Java 的 createScreenCapture 在 OS X 上不起作用,产生完全错误的颜色

如果我运行此代码:

它产生以下PNG:http ://davzy.com/screenshots/takenwithrobot.png

如果我使用内置的 OS X 屏幕捕获实用程序截取屏幕截图,我会得到以下信息: http: //davzy.com/screenshots/takenwithOSXscreenshotutility.png

如您所见,两者的颜色完全不同。经过几次实验,我确定上面使用内置 OS X 实用程序截取的屏幕截图中的颜色具有正确的颜色,而使用机器人截取的屏幕截图具有完全错误的颜色。

我正在编写一个逐像素比较屏幕截图的脚本,因此如果机器人生成颜色错误的屏幕截图,它将无法正常工作。有趣的是,如果我在 Windows 机器上运行上述程序,它就可以正常工作并获得正确的颜色。我在想也许机器人的颜色深度是所有错误颜色的原因,但我不知道这是否是问题,我不知道如何改变它。

0 投票
2 回答
1473 浏览

java - Java机器人和图像比较

我正在考虑创建一个 Java 应用程序来自动化一个我必须定期执行的过程,在开始任何编码之前,我想我会寻求关于处理它的最佳方法的建议。

基本上,我使用的应用程序在任何时候都会在屏幕上显示大量图像,我想知道是否有一种方法可以让 Java 识别这两个图像中的任何一个是否相同。如果是,我想自动化鼠标移动和按钮点击。

经过一番阅读,我认为PixelGrabberandRobot类可能是正确的开始方式,但就像我说的那样,我正在寻找可以提供的任何信息。

你有什么建议?

0 投票
2 回答
1214 浏览

java - Java 机器人类的贝塞尔曲线

我正在研究一个通用机器人,它能够执行人类通常会执行的日常任务。

其中一个类是“鼠标”,它处理所有与鼠标相关的命令,例如移动、按下按钮等。

我已经阅读了很多关于 Bezier Splines (Bezier Curves) 的内容,但我就是不明白。

根据我的阅读,我需要 4 个控制点。

如何找到未知坐标,使我的鼠标移动成为平滑曲线?

非常感谢您的宝贵时间,并期待您的回复。

0 投票
3 回答
4609 浏览

java - 如何使用getRGB在Java中匹配相似的颜色

我正在使用机器人截取屏幕截图,然后在这些截图中搜索较小的图像。由于伽马校正,这适用于 Windows 但不适用于 OS X。我能想出的最佳解决方案是简单地匹配相似的颜色而不是精确的颜色匹配。

我担心匹配相似的颜色将意味着超出 getRGB 因此会减慢我的程序(因为它会拍摄多个屏幕截图并将它们与较小的图像进行比较以非常快速地搜索匹配)。

我的问题是,假设我有 BufferedImage Screenshot 和 BufferedImage smallImage,我将如何确定 Screenshot.getRGB(1,1) 和 smallImage.getRGB(1,1) 是否是相似的颜色?

0 投票
4 回答
7598 浏览

java - 宏记录器/播放器

我正在制作一种宏记录器/播放器

我已经使用 utils 完成了播放器部分,例如java.awt.Robot()模拟基本的人类鼠标/键盘输出命令,读取 XML 文件。

我被困在必须记录该 XML 文件的部分。我不知道我可以使用哪个类来做与 Robot() 相反的事情如果你有任何 FemaleRobot() 给我,我会很高兴

到目前为止,我在这个方向上唯一的事情是:

这并不多,也不是我真正想要的^_^,我不知道如何使用鼠标/键监听器,因为它需要一个组件。如果这是唯一的方法,我应该使用什么组件,因为我不想要任何图形 java 实现?我应该创建一个假组件吗?哪一个?

例如,我希望我的记录器在 XML 中写入我如何单击我的 ubuntu 桌面或在 firefox 上按 Enter。

我想这很清楚,如果不是,我会检查很多答案。祝您有美好的一天,感谢您阅读本文。

0 投票
5 回答
675 浏览

java - Java:OutOfMemory 使用 Robot#createScreenCapture(Rectangle)

我正在编写一个以设定的时间间隔捕获屏幕的程序,当我开始测试时,我发现在它开始捕获图片后我几乎立即收到了 OutOfMemoryException。我尝试分配更多内存 - 我给了它 256m,但这几乎没有帮助。它所做的只是让它在抛出异常并再次崩溃之前再持续 2 或 3 秒。

我知道 createScreenCapture(...) 方法使用大量内存,但我已经看到可以使用相同方法长时间记录的示例程序 - 他们是如何做到的?

编辑:我已经使用了你们的一些建议,现在我没有得到 OutOfMemoryExceptions!万岁!我采取了将照片保存到硬盘驱动器的路线。但是,实际上将它们写入存档文件确实需要很长时间。将 63 帧写入存档文件需要将近 2 分钟!

我无法提供任何代码,因为我正在重写 I/O 部分。致力于改善 ^ 情况。