강좌 & 팁
글 수 2,412
2014.04.01 09:49:41 (*.134.169.166)
52198
큰일났습니다. 준비해 둔 강좌 비축분이 바닥 나고 있습니다. ㅠㅠ
노드 웹킷으로 윈도우 프로그램을 실행해 봅시다.
사실 윈도우 프로그램이나 리눅스 프로그램이든
프로그램을 실행시키는 것은 노드쪽 루틴이죠..
그래서 노드에서 수행하는 방법과 동일합니다.
우리는 실험을 위해서
메모장 프로그램을 실행하도록 해 보겠습니다.
먼저 준비물은 도스 명령창에서 어떻게 메모장을 실행하는지를
알아보아야 합니다.
왜냐하면 결국 손으로 하던것을 프로그램으로 할 뿐이거든요...
도스창에서
c:\Windows\system32\notepad.exe
명령을 수행하면 됩니다.
프로그램을 작성해 봅시다.
우선 다음과 같이 package.json 패키지 파일을 만듭니다.
----[package.json]--------------------------------------------------------------
{
"name": "run_exe",
"main": "index.html",
"window":
{
"toolbar" : false
}
}
--------------------------------------------------------------------------------
이제 index.html 을 다음과 같이 만듭니다.
----[index.html]----------------------------------------------------------------
<html>
<head>
<meta http-equiv="content-Type" content="text/html; charset=utf-8" />
<title>윈도우 프로그램 실행</title>
<script type="text/javascript" src="js/jquery-2.0.3.min.js"></script>
</head>
<body>
<h1>윈도우 프로그램 실행</h1>
<script type="text/javascript" src="main.js"></script>
</body>
</html>
--------------------------------------------------------------------------------
이제 자바스크립트 프로그램은 main.js를 다음과 같이 만듭니다.
----[main.js]-------------------------------------------------------------------
$(function(){
var gui = require('nw.gui');
var win = gui.Window.get();
win.showDevTools();
console.log( "윈도우 프로그램 시작" );
var execFile = require ('child_process').execFile;
var filePath = "c:/Windows/system32/notepad.exe";
var child;
child = execFile(filePath,function(error,stdout,stderr) {
if (error) {
console.log(error.stack);
console.log('Error code: '+ error.code);
console.log('Signal received: '+ error.signal);
}
console.log('Child Process stdout: '+ stdout);
console.log('Child Process stderr: '+ stderr);
});
child.on('exit', function (code) {
console.log('Child process exited '+'with exit code '+ code);
});
});
--------------------------------------------------------------------------------
실행 화면은 다음과 같습니다.
에러가 발생하지 않기 때문에 메모장까지 정상적으로 동작 합니다.
[그림 P001_실행.png]
메모장을 종료 하면 다음과 같은 메세지가 뜹니다.
Child process exited with exit code 0
Child Process stdout:
Child Process stderr:
[그림 P002_실행 종료.png]