我有代码
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:""]' "并且它将阻止运行后的任何代码。
如果有人知道如何解决这个问题并在将来阻止这种做法会很棒。
答案 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