Tag: awtrobot

java使用机器人类发送击键

我知道可以使用Robot Class在java中发送键击,但有没有办法在目标进程已经启动时指定它?

Java机器人与Azerty vrs Qwerty

我希望这不是重复,但我已经搜索了论坛,还没有找到任何答案。 我在使用Robot类输入文本的java应用程序时遇到问题。 提供了文本,应用程序将其输出。 当用户有QWERTY键盘时,一切正常。 当用户使用AZERTY键盘时,值不正确。 例如,将“1234567890”输入软件类型“&é”’(§è!çà“ 我希望有些人知道如何支持多种键盘布局。 先谢谢你。 这是一个片段 String TRANSLATION_SHIFT = “~!@#$%^&*()_+{}|:\”?”; String TRANSLATION_NON_SHIFT = “`1234567890-=[]\\;’,./”; Robot robot = new Robot(); String text = “1234567890”; int key; for (char c: text.toCharArray()){ switch(c){ …. case ‘0’: key = KeyEvent.VK_0; break; case ‘1’: key = KeyEvent.VK_1; break; …(etc etc)… case ‘9’: key = KeyEvent.VK_9; break; … […]

你如何模拟JTextField上的点击? 相当于JButton doClick()?

我正在开发一个Java项目,需要让一个按键模拟点击JTextField。 我正在寻找的是相当于JButton doClick()方法。 我试图让按键“enter”执行与单击JTextField完全相同的function。 不确定要提供的其他信息。 提前致谢。

Java忽略机器人生成的VK_Enter事件

我正在使用机器人编写一些集成测试。 我让机器人打开一个菜单,它应该从菜单中选择一个选项; 除了输入键似乎被忽略了。 菜单将打开并选择正确的菜单项,但是如果我按下回车键,则不会采取任何操作。 如果我手动按下相应的键,它会执行预期的操作。 如果我在非Java应用程序上运行机器人,则其他应用程序将正确响应enter事件。 所以我已经validation我正在发送一个输入事件,并且java菜单应该响应它; 但有些东西不起作用。 我也尝试用空间事件替换enter事件(菜单也应该响应)并且也没有响应。 我正在使用最新的sun JDK在redhat linux上运行。 我很确定这对我的代码来说不是一个明显的问题,因为我发现这篇文章描述了遇到完全相同问题的人,但它没有解决方案: http : //www.velocityreviews.com/forums/t666100-机器人和AWT上-linux.html private void requestTest(String testName){ if(testName==currentTest) return; //overwrite config file with new data currentTest=testName; overwriteFile(configFile, getCurrentConfigFile()); //close current graph pressKeyCombo(KeyEvent.VK_CONTROL, KeyEvent.VK_F4); //open File menu pressKeyCombo(KeyEvent.VK_ALT, KeyEvent.VK_F); //select the ‘load defaults’ option pressKey(KeyEvent.VK_DOWN); pressKey(KeyEvent.VK_DOWN); pressKey(KeyEvent.VK_DOWN); pressKey(KeyEvent.VK_SPACE); }

我想在java applet中使用Robot类进行Web浏览器移动并单击鼠标

我创建了这个小程序,它将鼠标移动到屏幕上的1000位置。 它作为应用程序工作,但它在applet中不起作用。 我已经创建了签名小程序但仍然不会移动鼠标。 我该怎么做才能让我的Robot类从浏览器中运行? 我的代码如下: import java.applet.Applet; import java.awt.Graphics; import java.awt.Robot; import java.awt.AWTException; public class s extends Applet { public void paint(Graphics g) { g.drawString(“Test1”, 10, 10); } public void init() { try { Robot robot = new Robot(); robot.mouseMove(1000,50); System.out.println(“code executes”); } catch (Exception ex) { System.out.println(“code failed”); }; } }

如何在屏幕捕获程序中使用Java获得超过30FPS?

我目前正在使用Java中的Robot类来记录屏幕。 但是,它不能达到每秒30帧的最小值。 我不会重新创建对象,并且尽可能高效,但我平均每秒只有15帧。 机器人根本就没有削减它。 我可以用什么来捕捉屏幕? 我已经尝试过Xuggle了,但我似乎也无法快速捕捉到它。

Java awt.Robot无法在虚拟机内部工作?

我正在尝试使用java.awt.Robot类在虚拟机内进行测试。 如果我在我的主机上测试它,一切都按预期工作,但是当我在虚拟机中运行相同的程序时,没有任何反应,也没有错误/exception。 我曾尝试在不同的计算机上运行Windows XP或Windows 7的内部虚拟机,但从未运行过。 我在机器上测试的代码非常简单: try { final Robot robot = new Robot(); robot.mouseMove(500, 500); } catch (AWTException e) { e.printStackTrace(); } 当我运行它时,程序刚刚结束,鼠标不动。 机器人类是否在虚拟机中不起作用? 如果没有,是否有另一种模拟鼠标移动/点击的方法? 您是否曾尝试在虚拟机中使用此类,如果它有效,您的设置是什么?

Java awt.Robot:CTRL + ALT + DEL没有显示所需的屏幕

我刚刚发现了关于awt.Robot库的内容,我很高兴能够使用它。 我以为我会对我的朋友玩一个小恶作剧,并有机器人按下控制,alt,删除按下锁定电脑按钮,但我无法让程序调出控制alt删除屏幕。 这是我的代码: import java.awt.*; import java.awt.event.KeyEvent; public class Bot { public static void main(String[] args) { try { Robot bot = new Robot(); bot.delay(4000); bot.keyPress(KeyEvent.VK_CONTROL); bot.delay(100); bot.keyPress(KeyEvent.VK_ALT); bot.delay(100); bot.keyPress(KeyEvent.VK_DELETE); bot.delay(500); bot.keyRelease(KeyEvent.VK_CONTROL); bot.keyRelease(KeyEvent.VK_ALT); bot.keyRelease(KeyEvent.VK_DELETE); } catch (AWTException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void pressEnter(Robot bot) { bot.keyPress(KeyEvent.VK_ENTER); bot.delay(40); […]

使用Java的机器人按住键

目前我正在努力让java按下如下键: Robot rob; rob.keyPress(KeyEvent.VK_ENTER); Thread.sleep(3000); rob.keyRelease(KeyEvent.VK_ENTER); 这应该按住3秒钟,在一秒左右后产生重复效果。 换句话说,如果您要手动按住“r”键,它将首先键入r,然后大约一秒后它会像rrrrrrrr一样。 我想从机器人那里得到这个效果。 我也尝试过: curTime = System.currentTimeMillis(); while(System.currentTimeMillis() – curTime < duration) { rob.keyPress(whatever); } rob.keyRelease(whatever); 然而,这是非常敏感的,持续时间为1秒输出……好吧,你的计算机可以在1秒钟内完成许多任务。 成千上万的线条值得。 这不是我的意图。 有任何想法吗? 谢谢! PS我想要这种行为的原因是因为我正在编写一种脚本语言来自动化游戏。 如果我想像正常人那样按住向上箭头键,我认为我需要我正在谈论的行为。 编辑: 由于似乎有些混乱,我道歉。 让我详细说明一下。 在我的第一个代码中,如果我选择“r”作为角色,它将只打印一个r而不管持续时间。 如果您在键盘上按“r”5秒钟,它将会 – > r … rrrrrrrrrrrrrrr …其中……意思是一秒钟。 这是我想要的行为,但我不会得到它。 第二个代码是我尝试垃圾邮件的地方点击“按”,但这实际上键入“r”它执行的每一次。 因此,如果我在一个持续时间的定时循环中,每次循环迭代它将发送“r”按钮。 那不是我想要的。 我想要的是,同样的结果就像你将键盘按下键盘3秒钟一样。 首先它只是一个r,然后是rrrrrrrrrrrrrrrrrrrrrr。 我甚至不确定release()方法的作用……我想如果你把它留在按下但没有释放,它就会在循环中将SPAM屏蔽掉! 为什么不这样做,关键是压力? 这让我很困惑。 显然,当按下某个键时,它不会按住。

java.awt.Robot.createScreenCapture更快的替代方案?

我正在制作一个每秒至少需要截屏24张的程序。 目前使用下面的代码我每隔约94毫秒只得到1,所以每秒约10。 我不想使用任何第三方库,因为我试图尽可能地保持它,但如果我的性能显着提高,我愿意。 我也试图保持这个平台的独立性,但同样,如果它的性能提升非常显着,我愿意将它限制在Windows中。 编辑:我现在也尝试了两种不同的方式; 使用在oracles网站上找到的片段以及下面评论中指出的片段。 所有三个大约在同一时间,2.1-2.2百纳秒,这是非常低效的。 public abstract class Benchmark { private final int iterations; public Benchmark(int iterations) { this.iterations = iterations; } public abstract void logic(); public void start() { long start = System.nanoTime(); for (int iteration = 0; iteration < iterations; iteration++) { long iterationStart = System.nanoTime(); logic(); System.out.println("iteration: " + iteration […]