C#でキーボード入力をエミュレートする方法

C#からWindows APIを叩いてキーボードの入力をエミュレートする方法を紹介する。

使うAPIは、SendInputだけ。

マウスポインタを移動させる方法を紹介する記事で説明したようにビルドの警告を回避するために次のようにNativeMethodsクラスをつくり、その中でこれらAPIを読み込む。

構造体や共用体の定義が多いのでびびるかもしれないけど、使うAPIは1つだけで、使う構造体もツリー構造でつながっていたりするので迷うポイントは少ないと思う。(もちろん、APIの公式ドキュメントで定義は確認しておくべき)

そしてこのNativeMethodsクラスを次のように使う。この例ではキーボードで「a」と打ち込む。

もしもSystem.Windows.Forms名前空間が使える場合は、Keys列挙体でちょっと実装しやすくなる。

ネットで検索するとkeybd_event関数を使う方法が多数見つかるけど、この関数は既にSendInput関数に置き換えられたという公式情報があるので注意。


関連ページ:マウス・キーボード操作の自動化機能をつくろう

コメントする