SendKeys メソッド

キーボードから入力したときのように、1 つ以上のキー ストロークをアクティブなウィンドウに送ります。

object.SendKeys(string)

引数

object
WshShell オブジェクトです。
string
送信するキーストロークを文字列式で指定します。

解説

SendKeys メソッドは、オートメーション インターフェイスを持たないアプリケーションにキーストロークを送信する場合に使用します。キーボードの文字のほとんどは単一のキーで表現されます。キーボードの文字の中には、Ctrl+Shift+Home などのように、いくつかのキーの組み合わせで表現されるものもあります。キーボードの文字を 1 つ送信するには、その文字自身を string 引数に指定します。たとえば、X キーを送信するには、string 引数に文字列 "X" を指定します。

メモ   空白を送信するには文字列 " " を指定します。

SendKeys を使って複数のキーを一度に送信できます。これを行うには、各キーを順に並べます。たとえば、A キー、B キー、C キーを順に押すには、"ABC" と指定します。SendKeys メソッドではいくつかの文字が (表示される値のまま使用されるのではなく) ほかの文字のモディファイアとして使用されます。この特殊文字セットには、かっこ、角かっこ、中かっこ、および ":" があります。

  • プラス記号       "+"
  • カレット             "^"
  • パーセント記号 "%"
  • ティルダ       "~"

上記の文字を送信するには中かっこ "{}" で囲みます。たとえば、プラス記号を送信するには "{+}" を指定します。角かっこ "[ ]" は SendKeys では特殊な意味を持ちませんが、DDE (Dynamic Data Exchange) などのように角かっこが特殊な意味を持つアプリケーションにも対応できるように中かっこで囲んでください。中かっこを指定するには "{{}" と "{}}" を使用します。

  • 角かっこ文字の左側を送信するには "{[}" を、右側を送信するには "{]}" を、それぞれ指定します。
  • 中かっこ文字の左側を送信するには "{{}" を、右側を送信するには "{}}" を、それぞれ指定します。

キーの中には、Enter キー や Tab キーなどのように文字を生成しないものや、BackSpace キーや Break キーなどのようにアクションを表現するものもあります。これらのキーを送信するには、次の表に示すコードを使用します。

キーコード
BACKSPACE{BACKSPACE}、{BS}、または {BKSP}
BREAK{BREAK}
CAPS LOCK{CAPSLOCK}
DEL or DELETE{DELETE} または {DEL}
DOWN ARROW{DOWN}
END{END}
ENTER{ENTER} または ~
ESC{ESC}
HELP{HELP}
HOME{HOME}
INS or INSERT{INSERT} または {INS}
LEFT ARROW{LEFT}
NUM LOCK{NUMLOCK}
PAGE DOWN{PGDN}
PAGE UP{PGUP}
PRINT SCREEN{PRTSC}
RIGHT ARROW{RIGHT}
SCROLL LOCK{SCROLLLOCK}
TAB{TAB}
UP ARROW{UP}
F1{F1}
F2{F2}
F3{F3}
F4{F4}
F5{F5}
F6{F6}
F7{F7}
F8{F8}
F9{F9}
F10{F10}
F11{F11}
F12{F12}
F13{F13}
F14{F14}
F15{F15}
F16{F16}

通常のキーと Shift キー、Ctrl キー、または Alt キーとの組み合わせを送信するには、キーの組み合わせを表現する文字列を引数に指定します。これを行うには、通常のキーの前に次の特殊文字を 1 つまたは複数個付加します。

キーコード
SHIFT+
CTRL^
ALT%
メモ   この場合、これらの特殊文字は中かっこで囲みません。

Shift キー、Ctrl キー、および Alt キーの任意の組み合わせを押したままほかの複数のキーを押すには、修飾されるキーをかっこで囲みます。次に例を示します。

  • Shift キーを押したまま、E キー、C キーを順に押すには、"+(EC)" と指定します。
  • Shift キーを押したまま E キーを押した後、Shift キーを離して C キーを押すには、"+EC" と指定します。

SendKeys メソッドでは、1 行で 1 つのキーを複数回押すキーストロークのパターンを送信できます。これを行うには、キーの後に繰り返し回数を指定する文字列を使用します。キーの繰り返しは、{キー 回数} という形式で指定します。たとえば、X キーを 10 回押すには、"{X 10}" と指定します。キーと回数の間には空白を 1 つ入れます。

メモ   キーストロークのパターンを送信できるのは、単一のキーを複数回押す場合だけです。たとえば、X キーを複数回繰り返すことはできますが、Ctrl+X の組み合わせを複数回繰り返すことはできません。
メモ   アプリケーションに PrintScreen キー ("{PRTSC}") を送ることはできません。

使用例

次のコードは、1 つの .wsf ファイルを使用して、異なるスクリプト言語 (VBScript および JScript) で記述された 2 つのジョブを実行する例です。ジョブの機能はどちらも同じで、Windows の電卓を起動して簡単な計算を実行するキーストロークを送ります。

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         WshShell.Run "calc"
         WScript.Sleep 100
         WshShell.AppActivate "Calculator"
         WScript.Sleep 100
         WshShell.SendKeys "1{+}"
         WScript.Sleep 500
         WshShell.SendKeys "2"
         WScript.Sleep 500
         WshShell.SendKeys "~"
         WScript.Sleep 500
         WshShell.SendKeys "*3"
         WScript.Sleep 500
         WshShell.SendKeys "~"
         WScript.Sleep 2500
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         WshShell.Run("calc");
         WScript.Sleep(100);
         WshShell.AppActivate("Calculator");
         WScript.Sleep(100);
         WshShell.SendKeys ("1{+}");
         WScript.Sleep(500);
         WshShell.SendKeys("2");
         WScript.Sleep(500);
         WshShell.SendKeys("~");
         WScript.Sleep(500);
         WshShell.SendKeys("*3");
         WScript.Sleep(500);
         WshShell.SendKeys("~");
         WScript.Sleep(2500);
      </script>
   </job>
</package>

参照

WshShell オブジェクト | Run メソッド

表示: