需要VBS对象:' [string:""]'

时间:2017-03-21 03:52:30

标签: vbscript runtime-error

我有代码

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

它输入" a"在记事本中,但它会给出错误,"对象要求:' [string:""]' "并且它将阻止运行后的任何代码。

如果有人知道如何解决这个问题并在将来阻止这种做法会很棒。

1 个答案:

答案 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

或者像这样,如果你想要它参数化:

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

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