2017-03-21 1 views
0

내가 코드VBS 개체가 필요합니다 : '[문자열 : ""]'

set WshShell = CreateObject("WScript.Shell") 
Set ie = CreateObject("InternetExplorer.Application") 
ie.Offline = True 
ie.Navigate "about:blank" 
ie.Height  = 200 
ie.Width  = 425 
ie.MenuBar = False 
ie.StatusBar = False 
ie.AddressBar = False 
ie.Toolbar = False 
ie.Visible = True 
WshShell.Run "%windir%\notepad.exe" 
WshShell.AppActivate "Notepad" 
WScript.Sleep 3000 
set a = WshShell.SendKeys("a") & Wscript.Sleep("100") 
a 
이 그것은 입력 않는

"는 필수 오브젝트"메모장, 그러나 그것은 오류가 있습니다 ": '[문자열 : ""] ' "그리고 실행 후 코드를 막을 것입니다.

누구든지이 문제를 해결하고 미래에 막을 수있는 방법을 알고 있다면 좋을 것입니다.

+0

당신이 * 명령'에 * 연결하여'이 아닌'&'(즉,이 * 문자열을 연결하는 데 사용됩니다 *) –

답변

1

개체가 아닌 assign something to a variable as an object (Set a = ...)을 시도하고 있습니다. 그러지 마. SendKeys()도 아니고 Sleep()도 출력되지 않으므로 어쨌든 그 비 출력을 할당 할 필요가 없습니다. 또는 VBScript string concatenation operator&과 배치 명령 체인 연결 연산자 &을 혼동하는 것이 좋습니다.

변경이이에

Set a = WshShell.SendKeys("a") & WScript.Sleep("100") 

:

WshShell.SendKeys("a") 
WScript.Sleep(100) 

하고 문제가 사라집니다.


약식으로 호출 할 수있는 절차를 구현하려는 경우, 예를 들어 다음과 같이 할 수 있습니다. 같은 :

Sub k 
    WshShell.SendKeys("a") 
    WScript.Sleep(100) 
End Sub 

k 'sends keystroke "a" and waits 100 ms 

또는 같은

, 당신은 그것을 매개 변수화하려면 : VBScript로

Sub k(keys) 
    WshShell.SendKeys(keys) 
    WScript.Sleep(100) 
End Sub 

k "b" 'sends keystroke "b" and waits 100 ms 
+0

일반적으로 나는 그것을 할 것이지만,이 스크립트로하려는 것은 알파벳의 문자를 입력 할 수 있도록 만들어서 출력하고 나서 100ms 동안 자게됩니다. 이것은 내가 신속하게 sendkey를하고 각 문자에 필요한 가장 적은 문자로 잠을 자면됩니다. – EternalMonologue

+0

내 제안 된 변경이 그 일을 정확히하지 않을 것이라고 생각하는 이유는 무엇입니까? 아니면 키 스트로크를 보내기 위해 호출 할 수있는 * procedure *를 정의한 다음 100ms를 기다렸습니까? –

+0

나는 그것을 시험해 보았다. 그리고 절차는 정확하게 내가보고 있었던 것이다. 모든 세트를 잠수함으로 변경했고 이제는 완벽하게 작동합니다! – EternalMonologue