キーストロークを送信する

注意:
この文書は以前「.NETでいきまっしょい!」で公開していたものですが、公開以降メンテナンスされていません。 今や古い情報となった内容が記載されている場合があるのでご注意ください。

 SendKeyクラスのSendメソッドを利用すると、文字列形式で表されたキーストロークをアプリケーションに送信することができる。 すなわち、キー入力をプログラム側から再現することができる。
VB.NET
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
Public Class Form1
    Inherits System.Windows.Forms.Form

    Private Sub buttonDoItNow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonDoItNow.Click

        ' テキストボックスにフォーカスを設定する
        textBox.Focus()

        SendKeys.Send("This is a si{BS}ample string.{ENTER}")

        ' シフトキーを押しながら
        SendKeys.Send("+(shift SHIFT Shift){ENTER}")

        ' シフトキーを押したりはなしたりする
        SendKeys.Send("+sh+if+t{ENTER}")

        '繰り返し
        SendKeys.Send("{A 3}{B 4}{C 2}{ENTER}")

    End Sub

End Class
C#
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
public class Form1 : Form
{
    private void buttonDoItNow_Click( System.Object sender, System.EventArgs e )
    {
        // テキストボックスにフォーカスを設定する
        textBox.Focus();

        SendKeys.Send( "This is a si{BS}ample string.{ENTER}" );

        // シフトキーを押しながら
        SendKeys.Send( "+(shift SHIFT Shift){ENTER}" );

        // シフトキーを押したりはなしたりする
        SendKeys.Send( "+sh+if+t{ENTER}" );

        // 繰り返し
        SendKeys.Send( "{A 3}{B 4}{C 2}{ENTER}" );
    }
}
実行結果
実行結果

 文字列で表すことができない特殊な文字は{ENTER}のように表す。 他のキーについてはこれ以下で表にまとめる。 また、SHIFT・ALT・CTRLの修飾キーはそれぞれ+, %, ^で表され、「+shift」としたときははじめの「s」のみSHIFTが押された状態になり、「+(shift)」とすると、「shift」のすべてに対してSHIFTが押された状態となる。
 また、キーの繰り返しは{A 3}のように、{キー 回数}で表す。 このメソッドは、他のアプリケーションやコントロールをアクティブにする機能はないので、特定のコントロール・アプリケーションに対してキーストロークを送信する場合は、先にその対象をアクティブにする必要がある。
特殊キーと対応するコード
キーコード
BackSpace{BACKSPACE}、{BS}、または {BKSP}
Break{BREAK}
CapsLock{CAPSLOCK}
Del または Delete{DELETE} または {DEL}
End{END}
Enter{ENTER} または ~
Esc{ESC}
Help{HELP}
Home{HOME}
Ins または Insert{INSERT} または {INS}
NUM LOCK{NUMLOCK}
PAGE DOWN{PGDN}
PAGE UP{PGUP}
PRINT SCREEN{PRTSC} (今後使用するために予約されている)
SCROLL LOCK{SCROLLLOCK}
Tab{TAB}
{DOWN}
{UP}
{LEFT}
{RIGHT}
テンキー +{ADD}
テンキー -{SUBTRACT}
テンキー *{MULTIPLY}
テンキー /{DIVIDE}
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}