'Computer/VBS (Visual Basic Script)'에 해당되는 글 4건

  1. 2019.06.11 [VBS] Space 포함된 파일 실행하기
  2. 2019.05.23 [VBS] WshShell.SendKeys
  3. 2019.05.23 [VBS] Process Find and Activate
  4. 2019.05.22 VB스크립트란 (VBS란)
2019.06.11 00:06


[VBS] Space 포함된 파일 실행하기

Space가 포함된 파일을 VBS 의 WScript.Run 을 수행하여 호출하면 정상적으로 동작이 수행되지 않고 에러가 발생한다.

이유는 파일 경로상에 공백이 존재하는 경우 이를 Script에서 인지하지 못하고 에러가 발생한다.

(VBS 문법 자체가 띄어쓰기만으로 매게변수를 구분함)

따라서 쌍따옴표 (Double Quotes) 로 묶어주면 정상적으로 동작이 가능하다.

 

아래 스크립트는 띄어쓰기가 포함된 파일명을 매게변수로 전달받으면

전체 띄어쓰기를 Argument 값에 넣지 못하므로 ::: 이라는 띄어쓰기 대체용 문자를 교체하고

파일 전체 경로 양쪽 끝에 Quote 으로 묶어서 수행해주는 동작을 하는 예제이다.

 

# Example.vbs

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

Dim ArgCount, FilePath, temp
Const Quote = """"

Set Arg = WScript.Arguments
ArgCount = WScript.Arguments.Count

If ArgCount >= 1 Then
	temp = Arg(0)
	FilePath = Replace(temp, ":::"," ")
End If

WshShell.Run(Quote & FilePath & Quote)
WScript.Sleep(2000)

Set WshShell = Nothing

 

 > Example.vbs C:\Users\choi\Desktop\Test 1 2 3\music.mp3

 위와같이 수행할 목적이나 띄어쓰기를 전송시에 Arguement 구분이 힘들기 때문에 아래와 같이 Space를 ::: 으로 변경해주는 사전 동작이 필요하다. (만약 띄어쓰기 포함된 Arguement 만으로 수행하려면 이와 다른 방안으로 구현 필요)

 > Example.vbs C:\Users\choi\Desktop\Test:::1:::2:::3\music.mp3

 위와 같이 변경해서 스크립트 수행시 잘 동작 한다.

 

'Computer > VBS (Visual Basic Script)' 카테고리의 다른 글

[VBS] Space 포함된 파일 실행하기  (0) 2019.06.11
[VBS] WshShell.SendKeys  (0) 2019.05.23
[VBS] Process Find and Activate  (0) 2019.05.23
VB스크립트란 (VBS란)  (0) 2019.05.22


Posted by injunech
2019.05.23 02:51


[VBS]  WshShell.SendKeys

 

WshShell.SendKeys

Send one or more keystrokes to the active window as if they were typed at the keyboard. This method is similar to the VB SendKeys method.

WshShell.SendKeys "Character_string_and/or_SendKeys"

Most ASCII characters can be represented simply by the character itself. 
E.g, the key sequence FRED can be represented by "FRED". 
Some special keys, such as the control keys, function keys etc are encoded in a string enclosed by {braces} 
See the table below

Key/CharacterSendKeyDescription

~ {~} Send a tilde (~)
! {!} Send an exclamation point (!)
^ {^} Send a caret (^)
+ {+} Send a plus sign (+)
Backspace {BACKSPACE} or {BKSP} or {BS} Send a Backspace keystroke
Break {BREAK} Send a Break keystroke
Caps Lock {CAPSLOCK} Press the Caps Lock Key (toggle on or off)
Clear {CLEAR} Clear the field
Delete {DELETE} or {DEL} Send a Delete keystroke
Insert {INSERT} or {INS} Send an Insert keystroke
Cursor control arrows {LEFT} / {RIGHT} / {UP} / {DOWN} Send a Left/Right/Up/Down Arrow
End {END} Send an End keystroke
Enter {ENTER} or ~ Send an Enter keystroke
Escape {ESCAPE} Send an Esc keystroke
F1 through F16 {F1} through {F16} Send a Function keystroke
Help {HELP} Send a Help keystroke
Home {HOME} Send a Home keystroke
Numlock {NUMLOCK} Send a Num Lock keystroke
Page Down
Page Up
{PGDN}
{PGUP}
Send a Page Down or Page Up keystroke
Print Screen {PRTSC} Send a Print Screen keystroke
Scroll lock {SCROLLLOCK} Press the Scroll lock Key (toggle on or off)
TAB {TAB} Send a TAB keystroke

To specify keys combined with any combination of SHIFT, CTRL, and ALT keys, precede the key code with one or more of the following:

For SHIFT prefix with + For CTRL prefix with ^ For ALT prefix with %

Example

' Open notepad Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "notepad.exe", 9 ' Give Notepad time to load WScript.Sleep 500 ' Type in Hello World WshShell.SendKeys "Hello World!" WshShell.SendKeys "{ENTER}" ' Add the date WshShell.SendKeys "{F5}"

'Computer > VBS (Visual Basic Script)' 카테고리의 다른 글

[VBS] Space 포함된 파일 실행하기  (0) 2019.06.11
[VBS] WshShell.SendKeys  (0) 2019.05.23
[VBS] Process Find and Activate  (0) 2019.05.23
VB스크립트란 (VBS란)  (0) 2019.05.22


Posted by injunech
2019.05.23 02:48


[VBS] Process Find and Activate

고생해서 작업한 vbs script 입니다.

Process ID 를 찾아서 Activate 해주니까 쉽게 동작합니다.

예제는 PotPlayer 라는 동영상 재생용 멀티미디어 프로그램이고

현재 실행된 프로세스를 Name을 통해 찾고

가장 마지막에 실행되어있는 프로세스를 활성화시켜서 SendKeys 로 전체화면 설정,

프로세스가 없으면 새롭게 실행시켜 주고 SendKeys로 전체화면 설정.

 

Set WshShell = WScript.CreateObject("WScript.Shell")
Dim oWMI, oQuery, oProc, iCount, LastProc
Set oWMI = GetObject("winmgmts:")
Const ProcessName = "PotPlayer"
Set oQuery = oWMI.ExecQuery("SELECT * FROM win32_process WHERE Name LIKE '%" & ProcessName & "%'")

iCount = 0
For Each oProc In oQuery
	Set LastProc = oProc
	iCount = iCount + 1
Next

If iCount = 0 Then
	WshShell.Run "PotPlayer64.exe"
	WScript.Sleep(3000)
	WshShell.AppActivate "PotPlayer"
	WScript.Sleep(500)
	WshShell.SendKeys "%{ENTER}"
Else
	WshShell.AppActivate LastProc.ProcessId
	WScript.Sleep(1000)
	WshShell.SendKeys "%{ENTER}"
End If

 

'Computer > VBS (Visual Basic Script)' 카테고리의 다른 글

[VBS] Space 포함된 파일 실행하기  (0) 2019.06.11
[VBS] WshShell.SendKeys  (0) 2019.05.23
[VBS] Process Find and Activate  (0) 2019.05.23
VB스크립트란 (VBS란)  (0) 2019.05.22


Posted by injunech
2019.05.22 21:21


VB스크립트란 (VBS란) Visual Basic Script

VB스크립트(VBScript)는 마이크로소프트가 개발한 액티브 스크립트 언어이다. 이 언어의 구문은 마이크로소프트의 비주얼 베이직 프로그래밍 언어 계통의 일부를 반영한다.

VB스크립트는 윈도우 98 이후의 여러 윈도우 운영 체제에서 기본으로 설치되어 있으며[1], 윈도우 서버 운영 체제의 경우 윈도우 NT 4.0 옵션 팩 이후로 이용이 가능하다.[2] 또, 실행 중인 장치의 목적과 구성에 따라 윈도우 CE에서도 선택적으로 이용이 가능하다.

초기에는 1970년대 말에 처음 개발된 배치 언어보다 더 강력한 자동화 도구 검색에 대한 지원을 윈도우 관리자로부터 받았다. VB스크립트는 호스트 환경 안에서 실행되어야 하며, 어떠한 환경에서는 마이크로소프트 윈도우의 표준 설치(윈도우 스크립트 호스트, 윈도우 인터넷 익스플로러) 위에 제공된다. 게다가 VB스크립트 호스트 환경은 마이크로소프트 스크립트 컨트롤(msscript.ocx)과 같은 기술을 통해 다른 프로그램에 이식되는 경우가 있다.

 

 

예제[편집]

다음 예제는 Microsoft Windows NT 시스템의 WMI(Windows Management Instrumentation) 서비스를 이용하여 메모장 프로그램의 프로세스(notepad.exe)를 종료시킨다. 

test.vbs 와같은 확장자를 이용하여 편집후 윈도우 프로그램 CMD 혹은 PowersShell에서 실행하면 테스트 가능하다.

 

Option Explicit ' 변수 선언 요구 
On Error Resume Next ' 오류가 발생해도 속행 
Const ProcessToKill = "notepad.exe" ' 종료할 프로세스 명 지정 (notepad.exe) 
Dim oWMI, oQuery, oProc, iCount ' 변수 선언 
Set oWMI = GetObject("winmgmts:") ' 로컬 컴퓨터의 WMI 서비스에 접속하여 WMI 서비스 개체 취득 
If Not IsObject(oWMI) Or oWMI Is Nothing Then ' WMI 서비스 개체를 얻는 데에 실패했다면 
    ' 오류 메시지 출력 
    MsgBox "WMI 서비스가 실행 중이 아닙니다." & vbCrLf & vbCrLf & _ 
    "이 스크립트는 윈도우 NT 이상, WMI 서비스가 실행 중인 컴퓨터에서만 실행 가능합니다.", vbCritical 

    ' 종료 코드 1번으로 스크립트 실행 종료 
    WScript.Quit 1 
End If 

' WMI 서비스에 쿼리를 보내 ProcessToKill 상수에 지정된 프로세스와 같은 프로세스 개체를 검색함 
Set oQuery = oWMI.ExecQuery("SELECT * FROM win32_process WHERE Name = '" & ProcessToKill & "'") 
iCount = 0 ' 프로세스 카운트 변수 초기화 
' 쿼리 내에 검색된 각각의 모든 개체(프로세스 개체) oProc 들에 대해 
For Each oProc In oQuery 
    oProc.Terminate ' 프로세스를 강제로 종료 
    iCount = iCount + 1 ' 프로세스 카운트를 하나 증가 
Next ' oProc 

' 결과를 사용자에게 출력 
If iCount > 0 Then 
    WScript.Echo "총 " & iCount & " 개의 메모장 프로세스가 종료되었습니다." 
Else 
    WScript.Echo "컴퓨터에 실행 중인 메모장 프로세스를 발견할 수 없었습니다." 
End If 

' 개체의 인스턴스를 해제함 
Set oProc = Nothing 
Set oQuery = Nothing 
Set oWMI = Nothing

'Computer > VBS (Visual Basic Script)' 카테고리의 다른 글

[VBS] Space 포함된 파일 실행하기  (0) 2019.06.11
[VBS] WshShell.SendKeys  (0) 2019.05.23
[VBS] Process Find and Activate  (0) 2019.05.23
VB스크립트란 (VBS란)  (0) 2019.05.22


Posted by injunech