곰플레이어 자동 설치 vbs 샘플은 위의 출처 링크에서 가져왔습니다.
그러나 포커스가 해당 창이 아닐 경우에 키 입력을 계속 받는 문제점이 있었습니다.
그 부분만 보완해서 WaitFor3secActiveWindow() 함수를 추가하였습니다.
좋은 정보 블로그에 올려주신 영산님께 다시 한번 감사의 말씀 드립니다.
곰플레이어 자동 설치 버전 by TTF
XP SP3에서는 SendKeys()를 짧은 시간에 연속으로 입력하지 못하도록 제한한 것으로 추측됩니다.
Option Explicit ' 기본 Object 가져오기 Dim Shell : Set Shell = WScript.CreateObject("WScript.Shell") Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject") Dim WshEnv : Set WshEnv = Shell.Environment("Process") Dim ProgramDir : ProgramDir = WshEnv("ProgramFiles") 'CMD 윈도우 98에서도 적용 가능하게 COMSPEC으로 가져온다. Dim COMSPEC : COMSPEC = Shell.ExpandEnvironmentStrings("%comspec%") Const GOM_Player_ExeFile = "GOMPLAYERSETUP.EXE" '고정된 이름은 변수가 아닌 상수로 지정해도 무방.. If MsgBox ( "곰플레이어를 설치하시겠습니까? ", 36, "Setup - GomPlayer") = 6 Then Install GOM_Player_ExeFile, "" Const Step1 = "곰플레이어 설치" Const Step2 = "곰 주소창검색 소개" ' Step 1. "곰플레이어 설치" WaitForActiveWindow Step1, 10 SendKeys "{ENTER}" ' 다음> [엔터] SendKeys "{ENTER}" ' 동의함[엔터] WaitForActiveWindow Step1, 3 SendKeys "+{TAB}" ' 구성 요소 선택 (모든 동영상 확장자 등록 체크) SendKeys "{DOWN 6}" ' 화살표 아래키 6번 입력 SendKeys " " ' [SPACE는 공백] WaitForActiveWindow Step1, 3 SendKeys "{ENTER}" ' 다음> [엔터] SendKeys "{ENTER}" ' 키즈락 선택하지 않고, 다음> [엔터] SendKeys "{ENTER}" ' 설치 위치 선택, 설치> [엔터] Wscript.Sleep 14000 WaitForActiveWindow Step1, 3 SendKeys "{ENTER}" ' 곰 플레이어 설치 완료, 마침> [엔터] ' Step2 . "곰 주소창검색 소개" 설치 취소 WaitForActiveWindow Step2, 3 SendKeys "{TAB}" ' 취소 선택[탭] SendKeys "{ENTER}" ' 곰 주소창 검색 취소 완료, 마침> [엔터] Else Shell.Popup "곰플레이어 설치가 취소되었습니다. ", 3, "Cancle", 48 WScript.Quit End if Sub Install (InstallFile, Arguments) If (FSO.FileExists(InstallFile)) Then Shell.Run COMSPEC & " /c " & InstallFile & Arguments &" & Exit", 0 Else Shell.Popup InstallFile & " 을(를) 찾을 수 없습니다.", 3, "File dose not exist", 48 Wscript.Quit End if End Sub Sub WaitForActiveWindow(WindowName, Second) if Second < 0 Then Shell.Popup "음수 시간을 설정할 수 없습니다.", 3, "Error!", 48 Wscript.Quit End if Dim TimeOutCount : TimeOutCount = Second * 10 Wscript.Sleep 1 'Winxp SP3에서 AppActivate() 버그 임시 해결용 by TTF While ( Shell.AppActivate( WindowName ) = False ) if TimeOutCount < 0 Then Shell.Popup WindowName & " 윈도우를 찾을 수 없습니다. 실행을 종료합니다.", 5, "Can't Find Window", 48 Wscript.Quit End if Wscript.Sleep 100 TimeOutCount = TimeOutCount - 1 WEnd 'Winxp SP3에서 AppActivate() 버그 임시 해결용 by TTF Wscript.Sleep 1 End Sub 'Shell.SendKeys 위 아래를 Sleep(100)로 감싼다. XP SP3 버그 임시 해결 by TTF Sub SendKeys( Keys ) Wscript.Sleep 100 Shell.SendKeys Keys Wscript.Sleep 100 End Sub
덧글을 달아 주세요