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 キーを「untitled - Notepad」アプリケーションに渡そうとしていますが、キーを直接渡す代わりに、変数に割り当ててから変数を渡したいと考えていました。

しかし、上記のコードは、スクリプトの実行中に以下のエラーをスローしています。

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 では、変数は常に 1 つの基本的なデータ型である Variant です"

VBScript はデータ型自体をサポートしていないため、宣言からすべてのデータ型を削除してください。たとえば、その行は次のようになります。

Dim sn

于 2013-05-11T21:13:13.687 に答える