【问题标题】:Assigned the key to variable and pass variable as key in vbs将键分配给变量并将变量作为 vbs 中的键传递
【发布时间】:2013-05-11 21:05:34
【问题描述】:
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 ted 语句结束

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

【问题讨论】:

    标签: vbscript


    【解决方案1】:

    您的脚本中有 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
      

    【讨论】:

      【解决方案2】:

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

      sn = f
      

      被这件事激怒了:

      Dim sn As String
      

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

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

      Dim sn

      【讨论】:

      • 感谢您的回复。我尝试使用上述解决方案,但现在它打开记事本应用程序但没有通过 alt+f 键。传递密钥时出现以下错误,“ E:\vbs\test2.vbs(15, 4) Microsoft VBScript 运行时错误:无效的过程调用或参数”
      猜你喜欢
      • 1970-01-01
      • 2022-01-25
      • 2021-09-17
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 2018-10-04
      • 1970-01-01
      相关资源
      最近更新 更多