NaMacroJS
my_project macro 자동화 매크로
What is it?
- NaMacro는 Javascript로 작성한 스크립트를 구동하는 매크로 플랫폼(…이 목표였던 응용프로그램)이다.
- 유사한 프로그램으로는 AutoIt이나 AutoHotkey가 있다.
- Windows 전용이다.
개발 동기
- 이제는 잘 기억나지 않지만, 반복 작업을 위해 시도했던 여러가지 매크로 프로그램들이 하나같이 불편했기 때문이다.
- MacroMedia (회사 이름인지 제품이름인지 가물가물)
- 우선 유료 프로그램이고, Trial 버전을 제공했었다.
- 기능은 강력하지만, 프로그램 자체가 너무 무거워 VM에서 구동하기가 어려웠다.
- GMacro
- 마우스 매크로용 프로그램으로 아주 단순한 UI로 구성되어있다.
- 녹화후 반복구동에는 큰 지장이 없으나, 내용을 수정하기가 매우 불편하다.
- AutoHotkey
- 스크립트를 작성하여 구동하는 방식
- 단축키 바인딩, UI 출력, 컴파일하여 exe파일로 배포 등 가장 강력
- 자체 언어를 공부해야 한다.
- MacroMedia (회사 이름인지 제품이름인지 가물가물)
- 내가 원한 것들을 AutoHotkey가 거의 다 갖고 있긴 했으나, 문제의 스크립트와 끝내 친해지지 못했다.
지원 기능
마우스 제어
- 마우스 커서의 위치를 얻거나 변경한다.
// 마우스 커서의 현재 좌표를 출력한다.
alert(system.mouse.x + ',' + system.mouse.y)
// 100,100 좌표로 이동시킨다.
system.mouse.x = 100
system.mouse.y = 100
키보드 제어
- 키보드를 입력한다.
// a키를 눌렀다 뗀 것처럼 이벤트를 발생시킨다.
// VK.a 는 애드온인 VirtualKey.js에 정의된 상수값
system.keyboard.down(VK.a);
system.keyboard.up(VK.a);
// 문자열 "[space]"를 타이핑 한다.
system.keyboard.typeString("[space]");
- 핫키를 등록한다.
// spacebar를 누르면 [space]가 입력되도록 한다.
system.keyboard.on(VK.space, function() {
system.keyboard.typeString(" [space] ");
});
스크린 제어
- 스크린 내 특정 영역을 캡쳐한다.
// 화면의 0, 0, 500, 500 을 캡쳐
var image = system.screen.capture(0, 0, 500, 500);
// 캡쳐한 이미지를 파일로 저장 (bmp, jpg, png)
image.save("./SavedImage.png");
- 이미지를 다른 이미지와 비교하거나 포함 관계를 파악한다.
// image1 내에 image2 가 포함되었는지 찾아서 좌표를 반환한다.
var coord = image1.findImage(image2);
console.log(coord.x + ", " + coord.y);
프로세스 제어
- 특정 이름의 프로세스를 찾는다.
// 실행중인 MSBuild.exe를 모두 찾는다.
var array = findProcesses("MSBuild.exe");
// 그 중 첫번째를 강제 종료한다.
if (array.length > 0)
array[0].terminate();
윈도우 제어
- 특정 윈도우의 정보(좌표, 크기, 상태, ClassName 등)를 얻거나 변경한다.
var windows = findWindows("메모장");
if (windows.length > 0) {
// 창의 좌표
console.log("coord = " + windows[0].x + ", " + windows[0].y);
// 상태 값은 normal, maximized, minimized
console.log("state = " + windows[0].state);
}
- 윈도우를 생성하여 UI로 사용할 수 있다.
그 외의 유틸리티
- Text to speech를 지원한다. (Windows에 기본 탑재된 엔진 사용)
- GMacro로 작성된 매크로 데이터를 NaMacroJS 스크립트로 변환할 수 있다.
JavaScript를 통한 스크립팅
- JavaScript로 스크립트를 작성한다.
개발 중단
- 아쉽게도 여러가지 이유로 2017년 즈음 개발이 중단된 상태다.
여러가지 이유?
- (작성중)