寻找一种编程语言来自动化另一个Windows应用程序

时间:2015-01-18 16:49:44

标签: windows automation

我必须定期处理专有的Windows应用程序。任务总是相同的(打开程序,单击点1,单击点2,单击3 ... 5)然后等待一个对话框,其中显示"完成。"之后,必须再次关闭应用程序,重新打开以再次启动任务。洗涤,冲洗,重复。

我尝试使用鼠标点击应用程序,但他们无法做得太好。特别是,知道应用程序何时完成,如果发生差事点击则不够智能。无论如何,我想创建自己的应用程序来控制这个。是否有一种特别擅长控制其他专有应用程序的编程语言?

1 个答案:

答案 0 :(得分:0)

Java有Robot类。请参阅下面的示例用法。

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;

public class Main {

    private static final TimeUnit DAYS = TimeUnit.DAYS;
    private final ScheduledExecutorService scheduler =
             Executors.newScheduledThreadPool(1);

    public void doAutomation() {
             final Runnable auto = new Runnable() {
               public void run() {
                 try {
                        Robot robot = new Robot();
                        robot.delay(1000);// Delay 1 second. (1000ms)
                        robot.keyPress(KeyEvent.VK_SPACE);
                        robot.mouseMove(0, 0);//Move mouse to 0,0 (Top left corner)(x,y)
                        robot.delay(15);//Delay 15 ms
                        robot.mousePress(MouseEvent.BUTTON1);
                    } catch (AWTException e) {
                        e.printStackTrace();
                    }
                }
               };

             final ScheduledFuture<?> autoHandler =
               scheduler.scheduleAtFixedRate(auto, 0, 1, DAYS);//Perform task once per day.
    }

    public static final void main(String[] data) {

        Main m = new Main();
        m.doAutomation();

    }
}