この記事の英語版を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語
このドキュメントはアーカイブされており、メンテナンスされていません。

SendKeys.Send メソッド

キーストロークをアクティブなアプリケーションに送信します。

名前空間:  System.Windows.Forms
アセンブリ:  System.Windows.Forms (System.Windows.Forms.dll 内)

public static void Send(
	string keys
)

パラメーター

keys
型: System.String
送信するキーストロークの文字列。

例外条件
InvalidOperationException

キーストロークの送信先となるアクティブなアプリケーションはありません。

ArgumentException

keys が有効なキーストロークを表していません。

各キーは 1 つ以上の文字で表されます。 1 文字のキーボード文字を指定するには、その文字自体を使用します。 たとえば、文字 A を表すには、文字 "A" をメソッドに渡します。 2 文字以上の文字を表すには、前の文字の後に追加する文字を付け加えます。 文字 A、B、および C を表すには、パラメーターに "ABC" を指定します。

プラス記号 (+)、カレット (^)、パーセント記号 (%)、ティルダ (~)、およびかっこ (( )) は、SendKeys で特別な意味を持ちます。 これらの文字の 1 つを指定するには、その文字を中かっこ ({}) で囲みます。 たとえば、プラス記号を指定する場合は "{+}" を使用します。 中かっこ文字を指定する場合は、"{{}" および "{}}" を使用します。 角かっこ ([ ]) は、SendKeys では特別な意味を持ちませんが、中かっこで囲む必要があります。 ほかのアプリケーションでは、角かっこはダイナミック データ エクスチェンジ (DDE: Dynamic Data Exchange) が発生したときに特別な意味を持ちます。

Caution メモ注意

国際対応のアプリケーションでは、Send の使用は避けてください。使用されるキーボードの種類が多岐にわたるため、予期しない結果が発生する可能性があります。

Enter キー、Tab キー、文字ではなく動作を表すキーなど、キーを押しても画面に表示されない文字を指定するには、次の表に示すコードを使用します。

キー

コード

BackSpace

{BACKSPACE}、{BS}、または {BKSP}

Break

{BREAK}

CapsLock

{CAPSLOCK}

Del または Delete

{DELETE} または {DEL}

{DOWN}

End

{END}

Enter

{ENTER} または ~

Esc

{ESC}

Help

{HELP}

Home

{HOME}

Ins または Insert

{INSERT} または {INS}

{LEFT}

NumLock

{NUMLOCK}

PageDown

{PGDN}

PageUp

{PGUP}

PrintScreen

{PRTSC} (今後使用するために予約されている)

{RIGHT}

ScrollLock

{SCROLLLOCK}

Tab

{TAB}

{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}

キーパッドの加算記号 (+) キー

{ADD}

キーパッドの減算記号 (-) キー

{SUBTRACT}

キーパッドの乗算記号 (*) キー

{MULTIPLY}

キーパッドの除算記号 (/) キー

{DIVIDE}

Shift キー、Ctrl キー、Alt キーの各キーの任意の組み合わせを、他のキーと組み合わせて指定するには、キー コードの前に次のコードを 1 つ以上指定します。

キー

コード

Shift

+

Ctrl

^

Alt

%

Shift キー、Ctrl キー、Alt キーの各キーの任意の組み合わせを押したまま、ほかの複数のキーを押すように指定するには、これらのキーのコードをかっこで囲みます。 たとえば、Shift キーを押しながら E キーと C キーを押すように指定する場合は、"+(EC)" を使用します。 Shift キーを押しながら E キーを押してから、Shift キーを押さずに C キーを押す場合は、"+EC" を使用します。

キーの繰り返しを指定するには、{key number} フォームを使用します。 キーと数値の間に空白を入れる必要があります。 たとえば、{LEFT 42} は、LeftArrow (←) キーを 42 回押すことを示し、{h 10} は H キーを 10 回押すことを示します。

メモメモ

ほかのアプリケーションをアクティブにするマネージ メソッドはありません。したがって、現在のアプリケーション内部でこのクラスを使用するか、または FindWindowSetForegroundWindow などのネイティブ Windows メソッドを使用して、ほかのアプリケーションに強制的にフォーカスを移すことができます。

メモメモ

SendKeys クラスは、.NET Framework 3.0 用に更新され、Windows Vista で実行されるアプリケーションで使用できるようになりました。 ユーザー アカウント制御 (UAC) として知られる Windows Vista のセキュリティ強化により、以前の実装は期待どおりに機能しません。

SendKeys クラスはタイミングに関する問題の影響を受けやすく、一部の開発者はこれを回避する必要がありました。 更新された実装では、まだタイミングに関する問題の影響を受けやすい状態ですが、若干高速になるため、回避策の変更が必要な場合があります。 SendKeys クラスは、最初に以前の実装を使用し、それに失敗した場合に新しい実装を使用します。 したがって、SendKeys クラスの動作は、オペレーティング システムによって異なる場合があります。 また、SendKeys クラスが新しい実装を使用する場合は、SendWait メソッドは、メッセージが別のプロセスに対して送信されたときに、そのメッセージが処理されるまで待機しません。

アプリケーションがオペレーティング システムに関係なく一定の動作に依存する場合、app.config ファイルに次のアプリケーション設定を追加することで SendKeys クラスに新しい実装を強制的に使用させることができます。

<appSettings>

<add key="SendKeys" value="SendInput"/>

</appSettings>

SendKeys クラスに以前の実装を強制的に使用させるには、値に "JournalHook" を使用します。

Send メソッドを使用する方法を次のコード例に示します。この例を実行するには、Button1 というボタンを配置した Form1 というフォームに次のコードを貼り付けます。 必ずクリック イベントをこの例のイベント処理メソッドに関連付けるようにしてください。 ボタン コントロールの TabIndex プロパティは 0 に設定する必要があります。 この例を実行するときは、フォームをダブルクリックしてボタンのクリック イベントを発生させます。



	// Clicking Button1 causes a message box to appear.
	private void Button1_Click(System.Object sender, System.EventArgs e)
	{
		MessageBox.Show("Click here!");
	}


	// Use the SendKeys.Send method to raise the Button1 click event 
	// and display the message box.
	private void Form1_DoubleClick(object sender, System.EventArgs e)
	{

		// Send the enter key; since the tab stop of Button1 is 0, this
		// will trigger the click event.
		SendKeys.Send("{ENTER}");
	}


.NET Framework

サポート対象: 4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

サポート対象: 4、3.5 SP1

Windows 7, Windows Vista SP1 以降, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core はサポート対象外), Windows Server 2008 R2 (SP1 以降で Server Core をサポート), Windows Server 2003 SP2

.NET Framework では、各プラットフォームのすべてのバージョンはサポートしていません。 サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。
表示: