Option Explicit
Dim objShell, intRetVal, intErrNum
Dim sn As String
Set objShell = CreateObject("WScript.Shell")
objShell.Run("c:\Windows\System32\notepad.exe")
WScript.Sleep 2000
sn = f
If objShell.AppActivate("Untitled - Notepad") Then
WScript.Sleep 500
objShell.SendKeys "%{sn}"
End If
在上面的vbs代码中,我试图将alt + f键传递给“无标题 - 记事本”应用程序,但不是直接传递密钥,而是希望将其分配给某个变量,然后传递变量。
但是上面的代码在执行脚本时会抛出以下错误,
E:\ vbs \ test2.vbs(3,8)Microsoft VBScript编译错误:Expec 声明的结尾
我应该如何将键分配给变量并将变量作为键传递。
答案 0 :(得分:2)
您的脚本中有3个错误:
Dim sn As String
正如Adrien Lacroix已经指出的那样,VBScript不像VBA那样支持类型化变量声明。将该行改为:
Dim sn
sn = f
您想将字符f
分配给变量sn
,因此您必须将前者设置为双引号之间的实际字符串:
sn = "f"
objShell.SendKeys "%{sn}"
VBScript不支持字符串内的变量扩展。如果要使用变量值构建字符串,则必须将变量与字符串文字连接起来。此外,花括号用于生成特殊击键(例如→的{Right}
或 F10 的{F10}
,而不是变量扩展。有关详细信息,请参阅documentation。要发送 Alt + F ,您需要以下内容:
objShell.SendKeys "%" & sn
答案 1 :(得分:1)
我认为您的错误就在这一行( E:\ vbs \ test2.vbs(3,8)):
sn = f
引起了这个:
Dim sn As String
来自MSDN: " 在VBScript中,变量总是一种基本数据类型,Variant "
VBScript不支持数据类型,因此请从声明中删除所有数据类型。 例如,该行应该只是:
Dim sn