Loading
2009. 6. 24. 17:28 - 나쁜철군

Windows Script Host ①

Microsoft Windows Script Host(WSH)를 사용하면 Windows 95 또는 Windows NT 4.0 운영 체제에서 자연스럽게 Visual Basic Scripting Edition과 JScript를 실행할 수 있습니다. 스크립트 언어를 사용하여 공통 작업을 자동화하는 스크립트를 작성할 수 있고 강력한 매크로와 로그온 스크립트를 작성할 수 있습니다.

라고 MS의 문서에서는 WSH를 소개하고 있네요...  ^^

더욱 구체적인 개념적인 자세한 이야기는 역시나 MSDN의 자료들을 참조하세요...

 

msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wsoriWindowsScriptHost.asp

 

저는 여러분이 이것을 가지고 무엇을 할 수가 있는지 예제로써 풀어 나가보려 합니다. wsh 가 할 수 있는 작업은 상당하겠습니다만... 이 강좌에서의 저는 이 WSH를 사용해서 서버에서 클라이언트들에게 메일을 발송하는 것을 ASP 페이지를 통하지 않고 WSH를 통해서 구동하고자 합니다. 이렇게 할 경우, ASP 페이지에서 CDONTS로 메일을 발송하는 것보다 몇 배 이상의 시간을 단축하면서 메일을 보낼 수가 있게되지요...  사실, 이외에도 WSH로 대단히 많은 것들을 할 수가 있습니다.. 그러한 것들은 여러분이 스스로 찾아가면 공부하시기를 기대하겠습니다.

참고로, 제가 하려는 메일 발송예제는 이미 MSDN에서 공개된 소스임을 밝힙니다. 이의 원본은 다음 링크에서 확인하실 수 있을 겁니다.

 

How to Create Scheduled Email Messages Using WSH and CDONTS

 

우리나라는 WSH에 대해 활발히 이야기가 되어지지는 않고 있는 듯 합니다만... 외국에서는 다음 사이트에서 상당한 량의 정보가 오가고 있네요... 다음 사이트가 그 예중에 하나라고 볼 수 있지요.

 

WSH 관련 MS의 커뮤니티 : http://communities.msn.com/windowsscript  

 

이번 강좌에서는 먼저 간략하게나마 WSH 가 무엇인지, 우리는 그것으로 무엇을 할 것인지 WSH를 하기 위해서는 어떠한 준비들이 필요한 것인지를 알아보고 세팅을 해보도록 하려 합니다...  ^___^

먼저 다음 기사는 MSDN에 올라온 기사입니다. 약간의 부분만을 인용하겠습니다.

 

출처 : http://www.microsoft.com/korea/msdn/workshop/languages/clinic/scripting990705.asp

 

Visual Basic® Scripting Edition (VBScript)이나 JScript 사용자라면, Microsoft Internet Explorer나 Active Server Pages(ASP) 기술에서 두 언어를 사용해본 적이 있을 것입니다. Microsoft Windows Script를 지원하는 응용 프로그램들의 경우 모두 이 언어를 사용할 수 있는데, Microsoft Ouklook과 Microsoft Exchange 응용 프로그램에서 VBScript를 사용하는 것이 예입니다. 

VBScript 및 JScript 엔진을 사용하는 또 다른 응용 프로그램으로는 Windows Script Host(WSH)를 들 수 있습니다.  WSH는 명령 라인에서 스크립트를 실행하거나 full-blown Windows 응용 프로그램으로  스크립트를 실행할 수 있게 해주는 Windows용 배치 파일들의 집합이라 말할 수 있습니다. 따라서, 여러분은 기존의 배치 스크립트 언어를 사용하는 대신 실제 프로그래밍 언어 (예를 들어, Perl)를 사용하여 로그온 스크립트, 백업 루틴, 관리 스크립트를 작성할 수 있습니다. 


 

위의 기사는 2001년에 WSH 2.0을 골자로 한 내용으로 바뀌었습니다. 또한, 내용도 엄청 보강되고 예제 소스도 많이 추가되었지요. 그러니 위의 기사를 꼭 읽어보시기 바랍니다. WSH 에 대해 관심이 있다면 상당한 도움을 주는 MSDN의 컬럼입니다.

 

시작부터 이렇게 넘 피곤한 이야기를 꺼내면 ... 하품이 나오는 법이지요? 그렇다고, 이야기 안하고 넘어가자니 그것도 그래서 일단 적어보았습니다. 자세한 WSH에 대한 이야기는 반드시 MSDN 사이트에 가셔서(위 기사) 읽어보시고... MSDN의 WSH 온라인 자습서 사이트에 가셔서도 반드시 읽어보세요... 이곳에 가시면 WSH를 어떻게 다룰 수가 있는지를 알 수가 있을 겁니다...

 

msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wsoriWindowsScriptHost.asp

 

중요한 것은 정보를 여러분이 직접 찾아가며 공부를 하셔야 한다는 것입니다. 정보가 어디에 있는지 어디에 가면 좋은 자료들이 있는데도, 그것을 찾아서 읽어보지 않고 "왜 그래요? 이거 어떻게 해요?" 하는 자세는 바람직 하지 않다는 것을 알고 계시지요?

탈무드의 이야기처럼 우리에겐 물고기가 필요한 것이 아니라.. 물고기를 낚는 기술이 필요한 것이니까여..

 

어쩃든, . 제 성격상 위와 같은 진지한 이야기는 5분을 못 넘기니까...   ^____^   이제 진짜 이야기를 진행해 보겠습니다.

사실, 태오도 딱딱한 거는 정말루 싫어함다. 태오는 얼렁 해서 빨랑 결과가 나와서...   "우와~~  이런 것이 되는구나~ 대단하다"  라는 말을 할 수 있는 것을 좋아함다. 진짭니다...  지금까지 보셔서 알지만.. 태오는 그런 것을 좋아합니다...

하하하.... 그럼  이것을 하기위해서 준비해야 할 것들에 대해서 이야기 하겠습니다. 말 그대로 설치준비를 하는 것이지요... 여러분의 윈도우에서 WSH를 돌려보고자 한다면 어떤 환경들이 필요할까요? 바로 최신의 스크립팅 엔진을 다운로드 하셔서 설치하는 작업이 필요하지요.  다음 사이트로 가시기 바랍니다.

 

Microsoft Windows Script 5.5 다운로드 사이트

 

2001년 현재는 엔진 버전 5.5가 가장 최신입니다. 그렇기에,  Windows Script 5.5 한글버전을 다운로드 받으셔서 설치하시면 됩니다  그럼 준비는 끝난 것이지요.... 그리고,다운로드 받으시는 김에 예제, 온라인 예제도 다운로드를 받으세요...  그럼... 스스로 학습하실 준비도 된 것입니다. MS의 예제를 무시하지 마시고.. 그 예제를 기반으로 공부하시기를 바래요... 저도 그렇게 하니깐요...  ^_^

직접 받게 해달라구요???  그렇다면 OS 에 따라서 다음 각각을 눌르세요.. 그러면 스크립트 엔진 5.5가 바루 다운로드 될 것입니다. ^^ (사실 Windows 2000은 이것을 설치하지 않아도 동작합니다만.. 가급적이면 스크립트 엔진의 버전을 최신으로 맞추어주는 것이 더욱 좋겠지요?)

 

For Windows 2000

For Windows 95, 98 & NT 4

 

자.. 자신의 OS 별루 다운로드가 되셨다면...  설치를 하도록 하세요...  설치는 아주 간단하게 이루어지니까요.  그럼 모든 준비는 끝난 겁니다. 그럼 잘되는지 테스트를 해볼까요??
아래의 소스를 다운 받으세요.. test.vbs입니다. 그리고, 그녀석을 바루 아무데서나

 

Download   test.vbs

 

따블클릭해 보세요.. 그럼 메시지 박스가 뜨면서 여러분을 반겨줄겁니다.... 궁금하신 분은 그 녀석을 메모장에서 열어서 소스를 살펴보세요.. 소스는 정말로 별것이 없을 겁니다. VBScript 코드만이 딸랑 있을 뿐이지요.. 단지, 맛뵈기를 위해서 그냥...  ^^  하고나니 무척이나 썰렁하네요..  -_-;

그냥 일반적인 메시지 박스를 띄우는 VBScript가 들어있을 것입니다. 이것만 보아서는 그다지 대단하지 않을 수 있습니다만.. 이제부터가 시작입니다.

 

일단 아주 간단한 예제를 하나 해보도록 하겠습니다. 자.. 다음과 같은 wsh 페이지를 하나 만들어 볼까요? 어디다가?  여러분의 바탕화면에 떡~ 하니 만들어 보도록 하겠습니다.

메모장을 열어서 다음과 같이 코딩을 하시고 저장을 바탕화면에 하세요.. 그리고 파일의 이름은 cal.vbs 라고 주도록 하겠습니다.

 

set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run "calc"
WScript.Sleep 100
WshShell.AppActivate "Calculator"
WScript.Sleep 100
WshShell.SendKeys "1{+}"
WScript.Sleep 500
WshShell.SendKeys "2"
WScript.Sleep 500
WshShell.SendKeys "~"
WScript.Sleep 500
WshShell.SendKeys "*3"
WScript.Sleep 500
WshShell.SendKeys "~"
WScript.Sleep 500
WshShell.SendKeys "%{F4}" 'alt+F4 : 종료버튼

set wshshell = nothing

위의 소스를 작성하시고 바탕화면에서 다음과 같이 cal.vbs를 더블클릭해 보세요...

 

그러면 다음처럼 갑자기...  계산기가 뜨면서 혼자서 막 계산을 시작할 것입니다... 마치 유령이 입력하는 것처럼 말이지요...  ^^

 

갑자기 계산기가 뜨구. 1+2을 한 다음, 그 결과 값에 x 3 을 할 겁니다. 그리고는 계산기를 종료하지요... 재미있지 않나요????   ^^

 

     만일, 여러분이 Visual Studio .NET BETA를 설치하셨다면....?

이 예제는 에러가 발생할 수 있습니다. 아마도 베타저번의 VS.NET 이 문제를 일으키는 것 같습니다.
참고하세요

 

 

여기서 먼저 우리가 알아야 할 것은...  WScript 객체입니다. 이것은 WSH를 설치하면 제공되는 WSH 객체중에 하나입니다. WSH는  WScript 개체, WshShell 개체, WshNetwork 개체 등등의 여러 객체를 제공합니다만.. 그중에 WshShell 개체가 바로 쉘 명령을 사용할 수 있게 하는 객체입니다.

 

우리는 여기서 이 객체를 사용해서 서버측의 응용프로그램을 실행하게 끔 할 수 있는 것입니다. 이 객체의 인스턴스를 생성하기 위해서는 CreateObject를 사용합니다.

Set WshShell = CreateObject("WScript.Shell") 가 바로 그것이지요... 이렇게 WshShell  객체의 인스턴스를 만들었다면.. 이제 여러분은 WshShell 라는 이름으로 쉘 객체의 여러 메소드를 사용할 수 있게 된 겁니다.

 

해서 위의 예제에서는  wshshell.run  "calc"  라고..  윈도우의 내장 프로그램인 "계산기"를 실행하기 위해 wshshell 객체의 Run메소드를 사용했습니다. 가장 중요하고도, 자주 쓰이는 메소드이지요

 

이 Run메소드를 통해서 서버측의 실행파일등을 동작시킬 수 있습니다. 어떤가요? 대단히 흥미롭지 않나요??

 

WSH의 또한 멋진 것중의 하나는 VBscript, JavaScript(JScript)등 여러분이 편리한 스크립트를 그대로 사용해서 파일을 만들어 그것을 웹이 아닌 로컬에서도 동작시킬 수 있다는 것입니다. VBscript로 코딩한 파일은 .VBS라는 확장자로 저장하면 되구요.  JavaScript(Jscript)로 만든 파일은 .js 로 저장하시면 됩니다. 

 

그러므로,  vbs라는 확장자를 갖는 파일은 그 안의 구문이 VBScript이어야 합니다. 해서 위의 예제는 안의 구문이 VB 문법이지요???  그렇다면 이제 내용을 볼까요??

 

set WshShell = WScript.CreateObject("WScript.Shell")

 

여기서는 WScript.CreateObject()를 사용해서 객체를 만들었습니다. WSH를 설치하면 제공되는 Wscript 개체의 CreateObject 를 통해서 WSH관련 여러가지 객체들의 인스턴스를 생성할 수 있습니다. 마치 ASP 의 Server 개체처럼 말이지요..  ^^

 

그리고, WshShell.Run "calc" 를 통해서 계산기 프로그램을 실행 시키고 있구요...  WScript.Sleep 100 를 통해서 0.1초 동안 현재의 어플리케이션을 멈추게 하고 있지요..  이 Sleep라는 메소드는 Cpu를 잠시 잠재우는(?) 역할을 하는 메소드인데.... WScript객체에서만 제공하는 메소드랍니다...   ^__^

 

SendKeys 라는 메소드가 상당히 재미있는 메소드인데,  이 메소드는 우리가 지정한 키를 그 프로그램에게 전달하는 기능을 합니다. WshShell.SendKeys "1{+}" 라는 것은 1 이라는 키보드와 + 라는 키를 눌린 것으로 하라는 것이지요..

 

일반 키는 그냥 써주어도 되지만, +, Enter, F1 등등의 특수키들은 그것을 인식시키게 하는 코드방법이 따로 존재합니다. 대부분 { } 로 둘러주어 사용합니다만.... 자세한 내용은 역시나 MSDN사이트에서 얻을 수가 있습니다. ... 그 표를 여기다가 다 보여드리고 싶긴 하지만 꽤나 양이 많아서요.. 직접 그 MS페이지에서 보시는 것이 나을 것 같네요...

 

그렇다면 "%{F4}" 는 무엇일까요?  그러씁니다...히!~~~  alt + F4 이지요... 이것은 무엇인가요? 계산기 프로그램의 종료 단축키랍니다... 그래서, 이 조합키를 SendKey하면 이 프로그램이 종료하는 것이지요... 이제 소스가 이해가 갈 겁니다... 가시지요? 가야 하는데...  T.T  제가 일일히 모든 것을 설명드릴 수는 없으니 말입니다요...

 

잘 이해가 안 가시는 분은 제 강좌와 위의 사이트를 번갈아보면서 공부해 보세요.. 그럼 분명히 언 정도 내공의 상승을 하실 겁니다....   ^___^  참 재미있지 않나요???   ^___^

다음 강좌는 무엇일까요??  바로 NT서버(2000포함)의 스케쥴링 기능과... CDONTS 를 사용해서.. 지정된 시간에 메일을 발송하게 하는 것을 해보려 합니다.  ^^

조금쯤은 기대를 해주세용...


출처 : http://cafe.naver.com/q69/5364