자바로 외부프로그램 실행(java ProcessBuilder)

자바로 외부프로그램 실행

 

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”);
 }
}