0
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 编译错误:预期语句结束

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

4

2 回答 2

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}for{F10}for F10),而不是用于变量扩展。有关详细信息,请参阅文档。要发送Alt+F您需要以下内容:

    objShell.SendKeys "%" & sn
    
于 2013-05-11T23:16:03.473 回答
1

我认为您的错误在这一行(E:\vbs\test2.vbs(3, 8)):

sn = f

由这个引起的:

Dim sn As String

来自MSDN:“在 VBScript 中,变量始终属于一种基本数据类型,即 Variant

VBScript 本身不支持数据类型,因此请从您的声明中删除所有数据类型。例如,该行应该是:

Dim sn

于 2013-05-11T21:13:13.687 回答