2013-05-11 48 views
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键为“无标题 - 记事本”程序,但强似键直接我想赋予它给某个变量,然后传递该变量。分配的关键变量,并通过变量作为VBS

但上面的代码在执行脚本抛出下面的错误,

E:\ VBS \ test2.vbs(3,8)的Microsoft VBScript编译错误:声明

的EXPEC 特德结束

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

回答

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 
    
+0

太好了,非常感谢您的帮助。这对我有效。 – 2013-05-11 23:20:30

1

,我认为你的错误是在这条线(E:\ VBS \ test2.vbs(3,8)):

sn = f 

通过这一挑衅:

Dim sn As String 

MSDN: “在VBScript,变量总是一个基本的数据类型,变

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

Dim sn

+0

感谢您的答复。我试过使用上面的解决方案,但现在它打开记事本应用程序,但没有通过alt + f键。在传递密钥“E:\ vbs \ test2.vbs(15,4)时出现以下错误:Microsoft VBScript运行时错误:无效的过程调用或参数” – 2013-05-11 21:24:21