자바로 외부프로그램 실행
ProcessBuilder는 외부 프로그램(그림판, 메모장, 인터넷 익스플로러..)를 실행할 수 있게 해준다.
아래 예제는 실행하면 (1)인터넷 익스플로러를 켜서 (2)전체를 복사하고 (3)해당내용을 메모장으로 자동으로 옮겨 붙이는 작업을 수행한다. 단점은 속도가 느리다.
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.io.*;
import java.util.ArrayList;
public class Main {
static Robot robot;
public static void main(String[] args) throws Exception{
try {
//로봇을 생성
ProcessBuilder b = new ProcessBuilder();
ArrayList<String> v = new ArrayList<>();
v.add(“C:\\Program Files\\Internet Explorer\\iexplore.exe”);
v.add(“http://en.wikipedia.org/“);
// Pass List to command method.
b.command(v);
b.start();
robot=new Robot();
robot.delay(10000);
CtrlA();
CtrlC();
b=new ProcessBuilder();
v = new ArrayList<>();
v.add(“notepad.exe”);
b.command(v);
b.start();
robot.delay(2000);
CtrlV();
} catch (Exception ex) { // 에러 처리
System.err.println(“에러” + ex.getMessage());
}
}
public static void CtrlA() throws Exception{
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_A);
robot.keyRelease(KeyEvent.VK_A);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.delay(200);
System.out.println(“컨트롤A”);
}
public static void CtrlC() throws Exception{
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_C);
robot.keyRelease(KeyEvent.VK_C);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.delay(200);
System.out.println(“컨트롤C”);
}
public static void CtrlV() throws Exception{
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.delay(200);
System.out.println(“컨트롤V”);
}
}