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>