キーボードから入力したときのように、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>