将变量赋值给变量并将变量作为密钥传递给vbs

时间:2013-05-11 21:05:34

标签: vbscript

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 声明的结尾

我应该如何将键分配给变量并将变量作为键传递。

2 个答案:

答案 0 :(得分:2)

您的脚本中有3个错误:

  1. Dim sn As String

    正如Adrien Lacroix已经指出的那样,VBScript不像VBA那样支持类型化变量声明。将该行改为:

    Dim sn
    
  2. sn = f

    您想将字符f分配给变量sn,因此您必须将前者设置为双引号之间的实际字符串:

    sn = "f"
    
  3. 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