次の方法で共有


My.Computer.Keyboard.SendKeys メソッド

更新 : 2007 年 11 月

キーボードで入力しているかのように、1 つ以上のキーストロークをアクティブなウィンドウに送信します。

' Usage
My.Computer.Keyboard.SendKeys(keys)
My.Computer.Keyboard.SendKeys(keys ,wait)
' Declaration
Public Sub SendKeys( _
   ByVal keys As String _
)
' -or-
Public Sub SendKeys( _
   ByVal keys As String, _
   ByVal wait As Boolean _
)

パラメータ

  • keys
    送信するキーを定義する String です。

  • wait
    省略可能です。キーストロークが処理されるまで待ってから、アプリケーションが実行を継続するかどうかを指定する Boolean です。既定では True です。

例外

例外を引き起こす可能性のある状態を次に示します。

  • ユーザーが部分的に信頼されており、必要なアクセス許可を持っていません (SecurityException)。

解説

My.Computer.Keyboard.SendKeys メソッドは、Send メソッドおよび SendWait メソッドと同様の機能を提供します。

wait 引数は、他のアプリケーションが終了しなければ自分のアプリケーションを継続できないようにする場合に便利です。

メモ :

他のアプリケーションをアクティブにするためのマネージ メソッドはありません。このクラスを現在のアプリケーションで使用して、キーを送信するウィンドウを手動で選択するか、FindWindow や SetForegroundWindow などの Windows API メソッドを使用して、他のアプリケーションにフォーカスを移してください。詳細については、「チュートリアル : Windows API の呼び出し」を参照してください。

keys 引数には単一のキー、またはキーと Alt、Ctrl、Shift との組み合わせ (またはこれらのキーの組み合わせ) を指定できます。各キーは 1 つ以上の文字で表現されます。たとえば、a は "a" の文字を表現し、{ENTER} であれば Enter キーを表現します。

キーと Shift を組み合わせるには、キー コードの前に + (正符号) を付けます。キーと Ctrl を組み合わせるには、キー コードの前に ^ (キャレット) を付けます。キーと Alt を組み合わせるには、キー コードの前に % (パーセント記号) を付けます。キーの繰り返しを指定するには、{key number} の形式を使用します。key と number の間には、空白を入れる必要があります。たとえば、{LEFT 42} は "← キーを 42 回押す" という意味になり、{h 10} は "'h' を 10 回押す" という意味になります。

キーを押しても表示されない文字 (Eneter や Tab など) を指定する際に使うコードを、次の表に示します。

キー

コード

BackSpace

{BACKSPACE} または {BS}

Break

{BREAK}

CapsLock

{CAPSLOCK}

Clear

{CLEAR}

Delete

{DELETE} または {DEL}

{DOWN}

End

{END}

Enter (テンキー)

{ENTER}

Enter

~

Esc

{ESCAPE} または {ESC}

Help

{HELP}

Home

{HOME}

Ins

{INSERT}

{LEFT}

NumLock

{NUMLOCK}

PageDown

{PGDN}

PageUp

{PGUP}

Return

{RETURN}

{RIGHT}

ScrollLock

{SCROLLLOCK}

Tab

{TAB}

{UP}

F1 ~ F15

{F1} ~ {F15}

使用例

次の例は My.Computer.Keyboard.SendKeys メソッドを使用して、Shell 関数を使って起動した外部の電卓アプリケーションにキーストロークを送信します。

Dim ProcID As Integer
' Start the Calculator application, and store the process id.
ProcID = Shell("CALC.EXE", AppWinStyle.NormalFocus)
' Activate the Calculator application.
AppActivate(ProcID)
' Send the keystrokes to the Calculator application.
My.Computer.Keyboard.SendKeys("22", True)
My.Computer.Keyboard.SendKeys("*", True)
My.Computer.Keyboard.SendKeys("44", True)
My.Computer.Keyboard.SendKeys("=", True)
' The result is 22 * 44 = 968.

要求されたプロセスの識別子を持つアプリケーションが見つからない場合は、ArgumentException 例外が発生します。

Shell 関数の呼び出しは、完全に信頼されている必要があります (SecurityException クラス)。

必要条件

名前空間 : Microsoft.VisualBasic.Devices

クラス : Keyboard

アセンブリ : Visual Basic ランタイム ライブラリ (Microsoft.VisualBasic.dll 内)

使用可能なプロジェクトの種類

プロジェクトの種類

使用可/不可

Windows アプリケーション

クラス ライブラリ

コンソール アプリケーション

Windows コントロール ライブラリ

Web コントロール ライブラリ

不可

Windows サービス

Web サイト

不可

アクセス許可

次のアクセス許可が必要になる可能性があります。

アクセス許可

説明

FileIOPermission

ファイルとフォルダへのアクセス許可を制御します。関連する列挙値 : Unrestricted

UIPermission

ユーザー インターフェイスとクリップボードに関連するアクセス許可を制御します。関連する列挙値 : AllWindows

詳細については、「コード アクセス セキュリティ」および「アクセス許可の要求」を参照してください。

参照

処理手順

チュートリアル : Windows API の呼び出し

参照

My.Computer.Keyboard オブジェクト

Send

SendWait

Keyboard.SendKeys