2013-05-11 46 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