标签: awtrobot

是否有类似于Java的AWT Robot类的Python?

有没有人知道类似于Java Robot的Python类?

具体来说,我想在Ubuntu中执行屏幕抓取,并最终跟踪鼠标点击和键盘按下(尽管这是一个稍微不同的问题).

python linux automation screenshot awtrobot

11
推荐指数
1
解决办法
8008
查看次数

如何用Python控制键盘和鼠标?

如何在Python中控制鼠标和键盘?

我们的想法与Java中的Robot()类相同.能够说:将鼠标从这里移动到这里,点击那里,写出屏幕上的任何内容.

对于Windows,有win32api,但我主要使用的是Linux.

对于Linux有Xlib,但它也适用于键盘吗?(仅发现鼠标的参考)

有跨平台的解决方案吗?(Linux,Windows甚至OS X都会很棒.)

python linux awtrobot

11
推荐指数
2
解决办法
2万
查看次数

用Java发送斜杠和反斜杠

使用Java机器人时,发送斜杠或反斜杠会引发异常.

例如:

public void slash() throws AWTException {
    Robot rob = new Robot();
    rob.keyPress(KeyEvent.VK_SLASH);
    rob.keyRelease(KeyEvent.VK_SLASH);
}

public void backSlash() throws AWTException {
    Robot rob = new Robot();
    rob.keyPress(KeyEvent.VK_BACK_SLASH);
    rob.keyRelease(KeyEvent.VK_BACK_SLASH);
}
Run Code Online (Sandbox Code Playgroud)

然后,当我想输入那些时,我使用:

public void type() {

    try {
        slash();
    } catch (AWTException e) { System.out.println("Exception when typing slash."); }

    try {
        backSlash();
    } catch (AWTException e) { System.out.println("Exception when typing back slash."); }


}
Run Code Online (Sandbox Code Playgroud)

我在控制台中收到两条错误消息.顺便说一句,我试图发送的所有其他击键工作正常.

我得到了斜线的foltrawow堆栈跟踪:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Invalid key code
    at sun.awt.windows.WRobotPeer.keyPress(Native Method)
    at java.awt.Robot.keyPress(Unknown Source)
    at …
Run Code Online (Sandbox Code Playgroud)

java awtrobot

11
推荐指数
1
解决办法
3430
查看次数

使用Java发送密钥组合

根据前面的链接(如何发送键盘输出),Java可以模拟使用Robot类按下的键.但是,如何模拟按键的组合?如果我想发送组合"alt-123"这可能使用机器人吗?

java awt keypress awtrobot

11
推荐指数
2
解决办法
2万
查看次数

java.awt.Robot.waitForIdle()是否等待调度事件?

我正在使用java.awt.Robot我的Swing应用程序的集成测试,但是我无法以正确的顺序运行我的操作.robot.mousePressed(...)在Swing完成调度该事件之前,如何告诉调用阻塞的线程?显然,robot.setAutoWaitForIdle(true)没有好处.

这是我的演示.我期待"机器人完成!" 消息总是在"动作完成阻止"之后出现,但相反,它经常发生得太快.

import java.awt.AWTException;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.sql.Date;
import java.text.DateFormat;
import java.util.logging.ConsoleHandler;
import java.util.logging.Formatter;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;
import java.util.logging.Logger;

import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;


public class RobotWaitForIdleDemo {
    /**
     * Create the device that contains the given point in screen coordinates.
     * Robot has to be constructed differently for each monitor. …
Run Code Online (Sandbox Code Playgroud)

java swing awt awtrobot

9
推荐指数
1
解决办法
3499
查看次数

带有MAC OS的java.awt.Robot类中的无头环境错误

我正在尝试使用Robot类在我的JavaFX应用程序中捕获屏幕截图,

这是我在我的应用程序中使用的代码:

Rectangle screenBounds = new Rectangle(Screen.getPrimary().getBounds().getWidth(),
           Screen.getPrimary().getBounds().getHeight());

Robot robot = new Robot();

BufferedImage img = robot.createScreenCapture(new java.awt.Rectangle(
     (int) screenBounds.getX(), (int) screenBounds.getY(), (int) 
             screenBounds.getWidth(), (int) screenBounds.getHeight()));
Run Code Online (Sandbox Code Playgroud)

它在Windows操作系统中运行良好,但headless environmentMAC OS中显示错误Robot robot = new Robot();

java macos headless awtrobot javafx-2

9
推荐指数
1
解决办法
8765
查看次数

java打印屏幕两个显示器

我正在尝试使用打印屏幕图像区域来获得2个显示器,但仅适用于一个显示器.你能告诉我如何获得2号显示器吗?

        Robot robot = new Robot();    
        Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
        BufferedImage capture = new Robot().createScreenCapture(screenRect);
        ImageIO.write(capture, "bmp", new File("printscreen.bmp"));
Run Code Online (Sandbox Code Playgroud)

java bufferedimage multiple-monitors printscreen awtrobot

9
推荐指数
1
解决办法
3587
查看次数

从java中的任意char获取VK int

你如何从一个字母的字母中获取VK代码?看起来你应该能够做类似的事情javax.swing.KeyStroke.getKeyStroke('c').getKeyCode(),但这不起作用(结果为零).如果您已经拥有KeyEvent,每个人都知道如何获取密钥代码,但如果您只想将字符转换为VK整数,该怎么办?我对获取奇怪字符的FK代码不感兴趣,只有[AZ],[az],[0-9].

这个问题的背景--------我见过的所有机器人教程都假设程序员喜欢通过发送带有VK代码的按键来拼出单词:

int keyInput[] = {
      KeyEvent.VK_D,
      KeyEvent.VK_O,
      KeyEvent.VK_N,
      KeyEvent.VK_E
  };//end keyInput array
Run Code Online (Sandbox Code Playgroud)

叫我懒惰,但即使使用Eclipse,也无法在GUI上使用TDD.如果有人碰巧知道一个类似于机器人的类,它接受字符串,然后模拟这些字符串的用户输入(我正在使用FEST),我很想知道.

java keyboard unit-testing awtrobot fest

8
推荐指数
2
解决办法
8962
查看次数

我怎样才能让机器人键入一个`:`?

我想:用Java Robot 打字.但是,我得到了一个IllegalArgumentException.我的代码是:

robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_COLON);
robot.keyRelease(KeyEvent.VK_COLON);
robot.keyRelease(KeyEvent.VK_SHIFT);
Run Code Online (Sandbox Code Playgroud)

例外是:

java.lang.IllegalArgumentException: Invalid key code.].
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_SEMICOLON);
robot.keyRelease(KeyEvent.VK_SEMICOLON);
robot.keyRelease(KeyEvent.VK_SHIFT);
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

java awtrobot

8
推荐指数
1
解决办法
1万
查看次数

使用Java Robot的Alt + Tab

我正在尝试使用Java Robot 启动alt+tab菜单.当我调用alt_tab()方法时,我想调出alt+tab菜单并保持菜单.我知道这可以用alt+ ctrl+tab来实现.

到目前为止,我已经尝试了下面的代码,并且只是alt+tab没有控制键.我不知道为什么它没有提出菜单.它只需按下alt键即可模拟.

public void alt_tab() {
    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_ALT);
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_TAB);
    robot.delay(100);
    robot.keyRelease(KeyEvent.VK_TAB);
    robot.keyRelease(KeyEvent.VK_CONTROL);
    robot.keyRelease(KeyEvent.VK_ALT);
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Windows 8 Pro和JDK 7.任何帮助表示赞赏!

java tabs awt awtrobot alt

8
推荐指数
2
解决办法
1万
查看次数