PixPin
설정

스크립트

PixPin 스크립트를 만들고 실행하며 JavaScript 문법, 캡처와 핀 API, 인수, 상수, 플랫폼 차이와 오류 확인법을 익힙니다.

PixPin 스크립트는 JavaScript로 스크린샷, 핀, 창 작업을 호출합니다. 반복 단계를 동작으로 저장해 단축키, 트레이 메뉴, 명령줄로 실행할 수 있습니다. 스크립트는 설명서의 장이며 앱의 편집 위치는 설정 → 단축키/작업입니다.

  • 활성 창 캡처한 동작으로 캡처하고 복사합니다.
  • 고정 캡처 영역같은 위치와 크기를 재사용합니다.
  • 참고 이미지 모음 열기파일 목록으로 일괄 고정합니다.
반복 작업을 스크립트로 만들고 단축키나 트레이 메뉴에 연결합니다. 그림의 내용은 모두 가상입니다.

스크립트가 유용한 경우

필요스크립트 활용
항상 같은 영역 캡처위치와 크기를 고정하거나 포인터 기준으로 지정 크기의 영역을 만듭니다
도구 모음 클릭 줄이기영역 선택 후 바로 복사, 고정, 저장 또는 인식합니다
매번 수동 선택하지 않기활성 창, 포인터가 있는 화면 또는 이전 영역을 직접 캡처합니다
매일 참고 파일 묶음 열기파일 경로 배열로 여러 핀을 한 번에 만듭니다
다른 도구와 연결명령줄에서 스크립트 문자열이나 .js 파일을 실행합니다

키 변경, 트레이 조정, 프로그램 제외만 필요하면 단축키/동작 설정을 쓰세요. 스크립트는 작업 조합이나 매개변수 지정에 적합합니다.

첫 스크립트 만들고 실행하기

프리셋을 선택하면 이름과 스크립트가 채워집니다. 그림은 스크립트를 선으로 생략했습니다. 트레이 항목을 선택하고 적용한 뒤 동작 목록에서 단축키를 설정하세요.

설정 → 단축키/작업에서 새 동작 추가를 클릭하세요. 프리셋에서 스크린샷하고... → 스크린샷 및 핀처럼 가까운 작업을 고르세요.

중복되지 않는 이름을 정하고 스크립트 내용을 확인하거나 수정하세요. 다음 한 줄은 캡처를 시작하고 영역 확정 후 고정합니다.

pixpin.screenShot(ShotAction.Pin);

스크립트 테스트를 클릭해 실제 캡처를 완료하고 결과를 확인하세요. 실패하면 오류가 표시됩니다.

적용 후 목록에서 단축키를 정하세요. 트레이 메뉴를 체크해 해당 메뉴로 실행할 수도 있습니다.

테스트는 실제 실행입니다. 다른 프리셋은 편집 내용을 덮어쓰며 창을 취소해도 테스트한 작업은 되돌리지 않습니다. 기본 동작 스크립트는 수정할 수 없으므로 변형은 사용자 동작으로 만드세요.

명령줄로 실행

-r 뒤에는 스크립트, -f 뒤에는 파일 경로를 둡니다. 실행 중이면 기존 인스턴스로 전달하고 처음 시작할 때는 초기화 후 실행합니다.

Windows PowerShell: 실제 설치 경로로 바꾸세요.

& 'D:/Apps/PixPin/PixPin.exe' -r 'pixpin.screenShot(ShotAction.Copy);'
& 'D:/Apps/PixPin/PixPin.exe' -f 'D:/Scripts/capture.js'

macOS 터미널: 응용 프로그램 폴더에 설치한 예입니다.

"/Applications/PixPin.app/Contents/MacOS/PixPin" -r 'pixpin.screenShot(ShotAction.Copy);'
"/Applications/PixPin.app/Contents/MacOS/PixPin" -f '/Users/yourname/Scripts/capture.js'

파일에는 코드 블록 표시 없이 JavaScript만 작성하세요. 중국어가 있다면 BOM 포함 UTF-8을 권장합니다. 긴 스크립트는 -f로 따옴표, 역슬래시, $ 이스케이프를 줄이세요. 공백 경로의 바깥 따옴표는 유지합니다.

명령줄이 반환되어도 캡처, 인식, 저장의 완료를 뜻하지 않습니다. 마지막 식의 값을 구조화된 결과로 반환하지도 않습니다. macOS 자동화 호출은 대화형 캡처 권한 안내를 먼저 띄우지 않으므로 앱에서 화면 기록과 손쉬운 사용 권한을 먼저 허용하세요.

지원 문법과 실행

JavaScript를 사용하며 API와 상수는 대소문자를 구분합니다. pixpin.screenShot을 pixpin.screenshot으로 바꾸면 안 됩니다.

분류일반 지원 문법
변수와 데이터var, let, const, 숫자, 문자열, 불리언, 배열, 객체, null
조건과 반복if / else, switch, for, while, for...of, break
함수와 클래스function, 화살표 함수, 매개변수, return, class; 함수 밖에서 직접 return을 쓸 수 없습니다
일반 표현식산술과 비교, &&, ||, !, 삼항식, 템플릿 문자열, 구조 분해, ??
데이터 처리Array, String, Math, Date, JSON, Map, Set 등 내장 객체
예외try / catch / finally, throw new Error(...)

현재 환경은 선택적 연결 ?.과 async/await를 지원하지 않으며 일반 스크립트에서 import / export도 쓸 수 없습니다. 빈 값은 if로 검사하고 단계 작업은 PixPin API를 사용하세요.

브라우저의 window, document, fetch나 Node.js의 require, process, fs가 없고 setTimeout도 없습니다. 웹, Node.js, 외부 패키지에 의존하는 예제를 그대로 붙이지 마세요. 객체 지원이 일반 객체로 API의 사각형을 대체할 수 있다는 뜻은 아닙니다.

순차 실행은 수동 작업을 기다리지 않음

문장은 순서대로 실행되지만 캡처 창 호출은 시작만 하고 선택 완료를 기다리지 않습니다. 캡처 후 고정하려면 pixpin.screenShot(ShotAction.Pin)을 쓰세요. 캡처 시작과 클립보드 고정을 단순히 두 줄로 나열하지 마세요.

  • 영역 선택 후 실행screenShot: 영역을 직접 정한 뒤 복사하거나 고정합니다.
  • 지정 영역 즉시 캡처directScreenShot: 알려진 영역을 사용하며 직접 선택하지 않습니다.
두 방식 모두 이미지를 복사할 수 있지만 실행 시점이 다릅니다. 오른쪽 점선은 스크립트 영역을 설명할 뿐 실제 실행 시 표시되지 않습니다.

엔진은 재사용됩니다. 여러 실행의 간섭을 줄이도록 임시 변수는 함수에 두세요. 여러 줄 예제는 즉시 실행 함수를 사용합니다.

(function () {
  var width = 640;
  var height = 480;
  var rect = pixpin.genRectUnderCursor(width, height);
  pixpin.directScreenShot(rect, ShotAction.Copy);
})();

마지막 ()는 즉시 실행을 뜻합니다. 무한 루프로 캡처를 기다리면 UI 실행 스레드를 막습니다. console.log(...)로 로그를 남길 수 있지만 편집기에 대화형 콘솔은 없습니다.

전역 객체, 인수, 반환값

이름:용도
pixpin캡처, 고정, 지연, 창 및 시스템 명령 API를 호출합니다
ShotActionShotAction.Copy처럼 캡처 후 작업을 정합니다
PixConstPixConst.SpRectActiveWindow 같은 특수 영역을 정합니다

숫자, 불리언, 문자열은 직접 넣고 파일 목록은 문자열 배열로 만드세요. 절대 경로를 권장합니다. JavaScript에서는 D:/Images/example.png 또는 역슬래시를 이스케이프한 D:\\Images\\example.png를 쓰세요.

사각형은 다음 세 API로 만들고 그대로 후속 API에 전달하세요.

호출의미
pixpin.genRect(x, y, width, height)화면 위치와 크기를 지정합니다
pixpin.genRectUnderCursor(width, height)포인터 중심으로 영역을 만들고 화면에 맞게 위치를 조정합니다
pixpin.getSpRect(type)특수 영역을 읽습니다. type은 PixConst 상수입니다

화면 논리 좌표를 쓰며 너비와 높이는 양수여야 합니다. 다중 화면 좌표는 음수일 수 있습니다. 공간이 부족하면 genRectUnderCursor가 비율을 유지해 줄입니다. 출력 픽셀 크기는 화면 배율과 저장 설정도 영향을 줍니다. 사각형 API에 {x: 100, y: 100, width: 640, height: 480}를 직접 넘겨도 이 필드로 캡처 영역을 만들지 않습니다.

true는 보통 요청 수락이며 사용자 조작 완료가 아닙니다. 반환 의미는 아래 API 표를 보세요. 반환값이 없으면 저장 성공 여부를 판단할 수 없습니다.

수정해 쓸 수 있는 예제

활성 창 캡처 후 복사

대상 앱을 앞에 두고 전역 단축키로 실행하세요. 수동 영역 선택 없이 바로 캡처합니다.

pixpin.directScreenShotSpRect(
  PixConst.SpRectActiveWindow,
  ShotAction.Copy
);

편집기의 스크립트 테스트 때는 설정 창이 활성 창일 수 있습니다. 적용 후 대상 앱에서 실행해 확인하세요.

영역 지정 후 수동 미세 조정

일반 캡처를 시작하고 (100, 100) 위치에 640 × 480 크기를 설정합니다. 도구 모음으로 주석이나 영역을 조정할 수 있습니다.

(function () {
  if (pixpin.screenShotAndEdit()) {
    pixpin.setScreenShotRect(100, 100, 640, 480);
    pixpin.setScreenShotRectRadius(4 / 3);
  }
})();

setScreenShotRectRadius는 이름과 달리 모서리 반경이 아닌 종횡비를 설정합니다. 고정 비율이 필요 없으면 마지막 줄을 지우세요.

직접 캡처해 시간 이름으로 저장

포인터가 있는 화면을 직접 캡처합니다. 실행 전에 경로를 바꾸세요. macOS는 /Users/yourname/Pictures/... 같은 경로를 사용합니다.

(function () {
  var rect = pixpin.getSpRect(PixConst.SpRectScreenUnderMouse);
  pixpin.directScreenShotAndSaveTo(
    rect,
    "D:/Captures/PixPin_$yyyy-MM-dd_HH-mm-ss$.png"
  );
})();

시간 변수는 저장 기능이 확장합니다. 경로와 파일명 변수를 보세요. 중복 이름에는 숫자를 붙이고 저장 알림은 표시하지 않습니다. 저장 경로나 성공 표시는 반환하지 않습니다.

참고 파일 여러 개 한 번에 고정

배열의 경로를 실제 파일로 바꾸세요. 같은 형식으로 항목을 늘릴 수 있습니다.

(function () {
  var files = [
    "D:/Reference/layout.png",
    "D:/Reference/colors.png"
  ];
  if (!pixpin.pinFromFiles(files)) {
    throw new Error("没有找到可贴出的文件,请检查路径。");
  }
})();

없는 파일은 건너뛰고 빈 배열이나 모든 경로가 없으면 false입니다. true는 기존 파일을 핀 기능에 전달했다는 뜻이며 모든 형식의 이미지 표시를 보장하지 않습니다.

3초 후 캡처

취소 가능한 카운트다운을 쓰는 가장 간단한 형식입니다.

pixpin.delayScreenShotWithTips(3);

위치와 크기가 필요하면 아래 API를 씁니다. 왼쪽부터 초, 위치 지정 여부, x, y, 크기 지정 여부, 너비, 높이, 예약 인수, 종횡비입니다.

pixpin.delayScreenShot(3, true, 100, 100, true, 640, 480, 0, 4 / 3);

같은 동작으로 상태 전환

현재 비활성 상태를 반전합니다. 활성 상태에서 다른 전역 키를 멈추고 다시 누르면 복구합니다.

pixpin.disableShortcuts(!pixpin.isDisableShortcuts());

이 동작의 키는 명시적 중지를 해제할 수 있지만 제외 목록과 Windows 전체 화면 게임 제한은 따릅니다.

사용자 API 참조

일반 동작 스크립트에서 쓸 수 있는 사용자 작업 API입니다. rect는 사각형 생성 API의 결과, action은 ShotAction입니다. 대괄호는 생략 가능한 인수이며 실제 코드에는 쓰지 않습니다.

캡처와 영역

API인수와 용도
screenShot(action)선택을 시작하고 확정 후 action을 실행합니다. 불리언을 반환하며 캡처가 이미 열림, 긴 캡처 사용 중, 권한 부족 등에서 false일 수 있습니다
screenShotAndEdit()screenShot(ShotAction.Edit)와 같으며 선택 후 도구 모음을 표시합니다
screenShotAndCopy()screenShot(ShotAction.Copy)와 같습니다
screenShotAndPin()screenShot(ShotAction.Pin)과 같습니다
screenShotAndCopyOcr()screenShot(ShotAction.CopyOcrText)와 같으며 인식 후 글자를 복사합니다
openCustomScreenShot()사용자 지정/지연 캡처 창에서 수동으로 매개변수를 정합니다
setScreenShotRect(x, y, width, height)기존 캡처 창의 영역을 정합니다. screenShotAndEdit() 성공 후 호출하세요. 창이 없으면 false입니다
setScreenShotRectRadius(ratio)사각 영역의 종횡비를 16 / 9 등으로 정합니다. 둥근 모서리가 아니며 경로 선택에는 적용하지 않습니다
switchScreenshotMode()캡처 창이 보일 때 다음 모드로 바꿉니다. 사용 가능한 창이 없으면 false입니다
directScreenShot(rect, action)알려진 영역을 직접 캡처하고 동작을 수행합니다. 반환값이 없으며 복사, 고정, 저장 등에 적합합니다
directScreenShotSpRect(type, action)PixConst 영역을 직접 캡처합니다. getSpRect(type) 후 직접 캡처하는 것과 같습니다
directScreenShotAndSaveTo(rect, filePath)전체 파일 경로로 직접 저장합니다. 저장 변수와 중복 이름 숫자 접미사를 지원하며 반환값이 없습니다

표는 pixpin.을 생략합니다. 실제로는 pixpin.screenShotAndCopy()처럼 씁니다. 직접 캡처에 Edit, ImageEdit, LongShot, GifShot를 넣어도 편집/녹화 창을 열지 않습니다. 해당 작업은 screenShot(action)이나 전용 API를 쓰세요.

지연, 긴 스크린샷, 화면 녹화

API인수와 용도
delayScreenShot(seconds, hasPos, x, y, hasSize, width, height, radius, ratio)지연 후 캡처 편집으로 들어갑니다. 최소 0.2초이며 같은 유형의 대기 작업을 새 호출로 대체합니다. true는 타이머 설정입니다
delayScreenShotWithTips(seconds[, rect])취소 가능한 카운트다운을 표시합니다. 초는 정수로 최소 1초이며 영역을 넣거나 생략 후 선택합니다. 반환값은 없습니다
longScreenShot(rect)지정 영역의 긴 캡처 창을 열거나 기존 창의 영역을 바꿉니다
openLongScreenShot(x, y, width, height)사각형 생성 없이 네 숫자로 긴 캡처 영역을 정합니다
gifScreenShot(rect)지정 영역의 녹화 창을 열거나 기존 영역을 바꿉니다. 이름에 GIF가 남아 있지만 최종 형식은 녹화 창에서 정합니다
openGifScreenShot(x, y, width, height)네 숫자로 녹화 영역을 정합니다
gifShotPause()일시 중지/계속을 전환하며 녹화 창이 없으면 false입니다
hasLongShotWidget()긴 캡처 창의 존재 여부를 반환합니다

delayScreenShot은 hasPos와 hasSize 모두 true면 지정 사각형을 씁니다. hasSize만 true이면 포인터 기준 크기를 만들고 크기를 지정하지 않으면 수동 선택합니다. radius는 미사용이므로 0, 양수 ratio는 종횡비이며 불필요하면 -1입니다.

이 API들은 창을 열거나 제어하며 자동 스크롤이나 영상 내보내기 완료를 뜻하지 않습니다. 후속 작업은 각 화면에서 수행하세요.

핀과 일괄 관리

API인수와 용도
pinFromClipBoard()클립보드에서 핀을 만듭니다. 캡처나 긴 캡처 중이면 현재 결과를 고정하려 합니다. 반환값으로 클립보드 고정 성공을 판정할 수 없습니다
pinFromFiles(files)files는 경로 배열이며 존재하는 파일을 처리합니다. 비어 있거나 파일이 모두 없으면 false입니다
pinSelectedFile()파일 관리자에서 선택한 파일을 고정합니다. 미선택 또는 읽기 실패는 false이며 macOS 자동화 권한이 관련됩니다
restoreLastClosedPin()기존 규칙으로 핀을 복원하고 성공 여부를 반환합니다
closeAllPin()일반 닫기 절차로 현재 핀 창을 닫습니다
hideOrShowAllPin() / isAllPinHide()전체 핀 표시 전환 / 전체 숨김 상태 조회입니다
hideOrShowPinsExceptSelected()선택 외의 핀을 숨기고 재호출하면 복원합니다. 선택이 없으면 활성 핀을 쓰고 그것도 없으면 선택을 요청합니다
switchPinGroup()핀 그룹을 전환합니다
trigMousePenetration()포인터 아래 핀의 클릭 통과를 전환하며 핀 위가 아니면 모두 해제합니다
setAllPinToRoiMode() / unsetAllPinToRoiMode()썸네일 표시 / 일반 표시로 바꿉니다. 여기의 ROI는 창 핀 생성이 아닙니다
saveAllPinImageTo(folder)내보낼 수 있는 핀 이미지를 폴더에 일괄 저장합니다. 일련번호와 중복 접미사를 붙이며 인수는 전체 파일명이 아닌 폴더입니다
saveAllPinImageWithDialog()폴더 선택 후 일괄 저장합니다
destoryAllPin()확인 설정에 따라 모든 핀을 파기하며 일반 닫기 복원은 불가능합니다. 실제 이름은 destory이며 destroy로 고치지 마세요

시스템 명령과 기타 작업

API인수와 용도
translateClipboard()클립보드를 번역으로 보내고 시작 성공 여부를 반환합니다
disableShortcuts(disabled) / isDisableShortcuts()true로 다른 전역 키를 중지, false로 복원 / 명시적 중지 상태를 조회합니다. 제외 목록이나 게임 상태를 뜻하지 않습니다
moveCursorBy(dx, dy)오프셋으로 포인터를 미세 이동합니다. 빠른 연속 호출은 가속하므로 총 이동이 단순 합계와 같지는 않습니다
toggleWindowTopmostUnderMouse()포인터 아래 창의 맨 위 표시를 전환합니다. Windows는 다른 앱에도 적용하고 macOS는 PixPin 창만 처리합니다
openConfigurationWindow() / openDoc()설정 창 / 사용 설명서를 엽니다
runSystem(command)외부 프로그램을 시작하고 즉시 돌아옵니다. 반환값은 없으며 문자열에는 프로그램과 인수를 넣습니다
runSystemSync(command)외부 프로그램을 시작해 동기 대기합니다. 반환 객체의 code, output, error는 종료 코드, 표준 출력, 표준 오류입니다
quit()PixPin을 종료합니다

runSystem과 runSystemSync는 셸을 자동으로 거치지 않고 직접 실행합니다. 파이프, 리디렉션, 셸 내장 명령은 자동 적용되지 않으므로 필요하면 플랫폼의 해석기를 명시하세요. 명령은 비울 수 없습니다.

계산기는 Windows에서 pixpin.runSystem("calc"), macOS에서 pixpin.runSystem("/usr/bin/open -a Calculator")로 열 수 있습니다. 아래는 동기 결과 예이며 실제 있는 프로그램으로 바꾸세요.

(function () {
  var result = pixpin.runSystemSync("cmd /c ver"); // Windows 示例
  console.log(result.code, result.output, result.error);
})();

동기 대기는 PixPin UI를 잠시 막습니다. 기본 대기 상한은 약 30초이고 별도 시간 초과 필드가 없으며 code만으로 정상 시작을 판단할 수 없습니다. 즉시 돌아오려면 runSystem을 쓰세요.

영역과 동작 상수

PixConst: 캡처할 위치

상수영역
PixConst.SpRectScreenUnderMouse포인터가 있는 모니터
PixConst.SpRectAllScreen모든 화면의 사각 범위
PixConst.SpRectWindowUnderMouse포인터 아래 창
PixConst.SpRectActiveWindow현재 활성 창
PixConst.SpRectLastShotRect이전 캡처 영역. 먼저 유효한 캡처를 한 번 완료하세요

영역은 실행 시점의 창, 포인터, 기록에 달립니다. 유효한 창이나 기록이 없으면 쓸 수 있는 영역을 얻는다고 가정하지 마세요.

ShotAction: 선택 후 작업

ShotAction.QuickSave처럼 ShotAction. 접두사를 붙입니다.

상수작업
Edit캡처 도구 모음에서 주석과 작업을 계속합니다
Copy / Pin이미지 복사 / 고정
Save / QuickSave저장 창 열기 / 빠른 저장 사용
CopyOcrText문자 인식 후 복사
Translate캡처 내용 번역
OcrTable / OcrDocument표 인식 / 문서 인식
LatexRecognition수식 인식
LongShot / GifShot긴 스크린샷 / 화면 녹화 시작
WinRoi창 핀 생성. Windows 전용
Print인쇄
CopyQRCodeTextQR 코드 인식 후 내용 복사
AirDropAirDrop. macOS 전용
ImageEdit별도 이미지 편집 창 열기
Close이번 캡처 닫기

상수는 기존 기능을 선택하며 실행 조건을 바꾸지 않습니다. 복사, 저장, 인식은 기존 설정이나 대화형 창의 영향을 받습니다.

오류 확인

증상확인 방법
SyntaxError따옴표, 괄호, 쉼표와 Markdown 표시를 확인하고 ?., async/await, import를 쓰지 않았는지 보세요
ReferenceError변수 선언, 대소문자, 범위를 확인하세요
메서드가 없거나 호출 무효이름과 철자를 확인하고 사각형은 전용 API, 파일은 배열을 쓰세요
설정 창이 캡처됨스크립트 테스트 때 설정이 앞에 있었습니다. 적용 후 대상 앱에서 키를 써 보세요
캡처는 시작됐지만 최종 이미지가 없음screenShot(...)은 선택이 필요합니다. 직접 캡처는 directScreenShot...을 쓰세요
저장 알림 없음directScreenShotAndSaveTo는 알림을 표시하지 않습니다. 경로, 확장자, 출력 폴더를 확인하세요
키로 스크립트가 실행되지 않음등록 상태, 비활성 설정, 제외 목록을 확인하세요. 단축키 상태를 보세요
macOS 명령줄 캡처 응답 없음PixPin에서 화면 기록과 손쉬운 사용 권한을 확인하고 시스템 잠금을 해제하세요

오류는 try / catch로 잡을 수 있지만 false나 반환값 없음은 자동 예외가 아닙니다. 하나의 작업부터 확인하고 인수와 조합을 늘리세요. 오류가 없다고 모든 작업이 완료된 것은 아닙니다.

이 페이지의 내용