실행중인 프로그램의 정보를 가져오는 기능을 구현하기로 했다.
active-win
이라는 npm 모듈을 사용하기로 했다. 활성화된 윈도우의 정보를 알려준다. 활성화 된 윈도우라는건 사용자가 마우스 또는 키보드로 선택하고 있는 프로그램을 말하는 것이다. 내가 vscode도 열어두고 메모장도 켜놨지만 이 글을 쓰고 있는 지금은 크롬 브라우저가 활성화된 윈도우인 것이다.
active-win
을 사용하려면 npm으로 모듈을 설치하고 아래의 코드를 작성하면 된다.
npm install active-win
const activeWindow = require("active-win");
(async () => {
console.log(await activeWindow(options));
})();
여기서 파라미터로 전달하는 options는 screenRecordingPermission이라는 boolean값 속성을 가진 객체이다. macOS에서만 사용하는 속성으로 화면 녹화를 허용하는지를 넘겨준다. 기본값은 true로 되어있다. (조금 더 알아보기!)
npm run start
로 실행하면 아래와 같이 활성화된 프로그램의 정보가 콘솔에 찍힌다.
나는 활성화중인 프로그램을 반복해서 알고 싶기 때문에 setInterva로 2초마다 활성화된 프로그램의 정보를 가져오게 하고 그동안 프로그램을 이것저것 마우스로 선택해보았다.
const activeWindow = require("active-win");
setInterval(async () => {
console.log(await activeWindow({ screenRecordingPermission: true }));
}, 2000);
일렉트론과 리액트를 사용하는 프로젝트인데 처음에 active-win을 리액트의 App.js에서 호출했었다. 그랬더니 node-modules iconv.js 파일에서 오류가 발생했다.
검색해보니 웹팩의 설정을 변경해야 하거나, 일렉트론에서 네이티브 노드 모듈을 사용하려면 electron-rebuild
라는 모듈을 설치해야 한다고 해서 다 해봤지만 해결하지 못했다.
하루종일 찾다가 active-win을 electron의 메인 엔트리(내 경우엔 electron.js)에서 실행하니 성공했다. 서버인 일렉트론에서 실행해야 하는거 같은데 정확히는 더 찾아봐야 할 거 같다...🤦♀️