반응형

해당 글은 군대에 있을 때 작성한 글을 기반으로 작성되었습니다.


한창 전입 초에 국방망에서 공부할 수 있는 프로그래밍 언어가 뭐가 있을까 찾다가 알게 된 언어입니다.

여기서 설명하는 vbs는 한셀에서 사용하는 vbs가 아닌 윈도우에서 사용하는 vbs입니다.


윈도우는 자체적으로 두 가지 스크립트 언어가 내장되어 있습니다.

하나는 베이직 덕후 빌게이츠 답게 베이직을 기반으로 한 VBS(비주얼 베이직 스크립트)

다른 하나는 옛날에 자바스크립트가 처음 나왔을 때 이에 대항하기 위해 나온 JS(제이 스크립트, 자바스크립트를 따라 만든 거지만 미묘하게 다르고 사실 구버전 익스플로러에선 자바스크립트를 지원한 게 아니라 j스크립트를 지원하고 있었다는 웹개발자들 화나게 하는 스토리가..)

그리고 이외에도 다양한 스크립트 언어들을 통합 관리하기 위한 WSF라는 것도 있는데 사실 저 두 개가 끝이라 의미 없겠죠..? (하도 생소해서 랜섬웨어들이나 사용하는 확장자)


아무튼 보안 쪽에 관심이 많으셨던 분이나 수동으로 윈도우 인증 깔짝이셨던 분들은 한 번쯤 보셨을 확장자일겁니다.

사지방에 검색했을 때 js, wsf에 대한 정보는 거의 제로이고 그나마 vbs가 몇 개 나오더라고요.


저는 오래전에 이미 영 적응이 안되는 베이직 문법과 없다싶이 한 정보들 때문에 vbs 공부를 때려치웠지만 그중에서 매크로로 활용할 수 있는 기능이 있어서 이걸 여러분들께 알려드리려 합니다.

한글문서 자동화로 써먹으려고 했지만 큰 문제점 하나 때문에 일찌감치 자바스크립트로 넘어갔습니다. (이건 나중에 기회되면 글 쓸게요.)


조건문과 반복문에 대해선 여러 한셀 스크립트 강좌가 있으니 그쪽을 참고하시면 됩니다.


바로 예제코드로 시작하죠.


Dim wsh
Set wsh = WScript.createObject("WScript.Shell")
wsh.Run "calc"	' 계산기 실행
WScript.Sleep 1000
wsh.SendKeys "1{+}2"	' 1+2 입력
WScript.Sleep 500
wsh.SendKeys "*3"	' *3 입력
WScript.Sleep 500
wsh.SendKeys "{enter}"	' 엔터 입력

위 코드를 메모장에 붙혀넣고 확장자를 vbs로 저장한 다음 실행하면 저절로 계산기가 실행되면서 1+2*3을 계산했을 겁니다.

(일반용이면 9, 공학용이면 7이라고 뜰 겁니다)


코드 설명이야 주석에 있으니 생략하고 핵심인 SendKeys 함수에 대해서만 설명하겠습니다.

1. 일반적인 숫자나 알파벳은 그냥 그대로 입력하시면 됩니다.
2. Ctrl 키는 ^입니다.
ex) 컨트롤+c: ^c
3. Alt 키는 %입니다. ex) 알트+f4: %{f4}
4. Shift 키는 +입니다. ex) 시프트+왼쪽: +{left}
5. 특수문자들도 그대로 입력하면되지만 ^%+ 같은 애들은 {}로 묶어 줘야합니다. ex) {^}, {%}, {+}
6. 특수한 키들(f1~f12라든지 엔터, 방향키 등)은 {키이름}입니다. ex) {enter}, {left}, {f5}
7. 같은 키를 반복입력할 때 {키 숫자} 이렇게 입력하면 숫자 만큼 반복입력됩니다. ex) a 열번 입력: {a 10}, 시프트+왼쪽 10번: +{left 10}
8. Chr(키코드) 함수를 이용해서 키코드 값으로 키입력도 가능합니다. ex) wsh.SendKeys Chr(22) ` 붙여넣기?
9. 한글입력은 안됩니다!

중요한 점은 한글입력이 안된다는 겁니다. 뭔 짓을 해도 한글 입력이 안돼서 제가 원했던 걸 만들 수가 없어 포기했지만 유용하게 활용하는 분이 있었으면 좋겠습니다.

ps. 찾다보니 AppActivate 명령어로 창 활성화도 되는 거 같은데 제가 테스트할 땐 잘 안되네요.


wsh.AppActivate "계산기"
반응형

+ Recent posts