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 メソッド