Windowsのコマンドでキーボード操作を行う方法

Windowsのコマンドでキーボード操作を行う方法

WindowsでバッチファイルやPowerShellスクリプトを作成していると、コマンドでキーボード操作を行いたいときがあります。そのようなときは、SendKeysが便利です。

そこでここでは、PowerShellでSendKeysを使ってキー入力などのキーボード操作を行う方法を解説します。

SendKeysの基本的な使い方

Windowsでコマンドでキーボード操作を行いたいときは、PowerShellでキーボード操作をアクティブなウィンドウに送信できるSendKeysクラスを使うのが一般的です。

SendKeysクラスを使うときは、まず、以下のコマンドを実行して.NETライブラリを読み込みます。

PS> Add-Type -AssemblyName System.Windows.Forms

ライブラリを読み込んだら、コマンド操作でアクティブウィンドウにさまざまなキー操作を送信できます。

たとえば、メモ帳を起動して「こんにちは」とキー入力させたいときは、以下のようにコマンドを実行します。

PS> Start-Process notepad; Start-Sleep -m 1000; [System.Windows.Forms.SendKeys]::SendWait("こ"); [System.Windows.Forms.SendKeys]::SendWait("ん"); [System.Windows.Forms.SendKeys]::SendWait("に"); [System.Windows.Forms.SendKeys]::SendWait("ち"); [System.Windows.Forms.SendKeys]::SendWait("は")

特殊キーの入力方法

SendKeysでは、文字以外にもCtrlキーやAltキー、Tabキー、Enterキーといった特殊キーも送信できます。主な特殊キーのコードは次のとおりです。

Tabキー:

PS> [System.Windows.Forms.SendKeys]::SendWait("{TAB}")

Enterキー:

PS> [System.Windows.Forms.SendKeys]::SendWait("{ENTER}")

Delキー:

PS> [System.Windows.Forms.SendKeys]::SendWait("{DEL}")

BackSpaceキー:

PS> [System.Windows.Forms.SendKeys]::SendWait("{BS}")

CapsLockキー:

PS> [System.Windows.Forms.SendKeys]::SendWait("{CAPSLOCK}")

Escキー:

PS> [System.Windows.Forms.SendKeys]::SendWait("{ESC}")

Homeキー:

PS> [System.Windows.Forms.SendKeys]::SendWait("{HOME}")

NumLockキー:

PS> [System.Windows.Forms.SendKeys]::SendWait("{NUMLOCK}")

PageUpキー:

PS> [System.Windows.Forms.SendKeys]::SendWait("{PGUP}")

PageDownキー:

PS> [System.Windows.Forms.SendKeys]::SendWait("{PGDN}")

PrintScreenキー:

PS> [System.Windows.Forms.SendKeys]::SendWait("{PRTSC}")

ファンクションキー:

PS> [System.Windows.Forms.SendKeys]::SendWait("{F1}")

上矢印キー:

PS> [System.Windows.Forms.SendKeys]::SendWait("{UP}")

下矢印キー:

PS> [System.Windows.Forms.SendKeys]::SendWait("{DOWN}")

Ctrlキー+hキー:

PS> [System.Windows.Forms.SendKeys]::SendWait("^h")

Shiftキー+hキー:

PS> [System.Windows.Forms.SendKeys]::SendWait("+h")

Altキー+hキー:

PS> [System.Windows.Forms.SendKeys]::SendWait("%h")

参考:SendKeys Class (System.Windows.Forms) | Microsoft Learn

キーの繰り返し

キーの繰り返しを指定するには、キーと回数を指定します。たとえば、Hキーを10回押したいときは、以下のようにコマンドを実行します。

PS> [System.Windows.Forms.SendKeys]::SendWait("{H 10}")