Windows で他のアプリケーションを自動化するには、いくつかの方法があります...
最も単純なレベルでは、PostMessage
キーボードとマウスのメッセージを別のアプリケーションのウィンドウにポストするために使用できます。これには、他のアプリケーションが最小化されていても機能するという利点があります。残念ながら、このアプローチでは入力処理ロジックの大部分がスキップされるため、キーの状態に直接アクセスするアプリケーションでは、GetAsyncKeyState
(たとえば)WM_KEYDOWN, vk=VK_CONTROL
送信するメッセージの数に関係なく、コントロール キーが「ダウン」していることがわかりません。
Hans Passant がコメントしたように、SendImput
入力イベントは低レベルの入力イベント キューに配置されるため、修飾キーを完全にシミュレートできます。ただし、これらの入力イベントはウィンドウにポストされないため、入力イベントを正常に配信するには、アクティブ化とフォーカスに関する通常の Windows ルールに従う必要があります。とはいえ、これはほとんどのテスト自動化ソフトウェアで使用されるアプローチです (そして、ほとんどのテスト自動化ソフトウェアがテスト対象のアプリケーションをアクティブなアプリケーションにする必要があるのはこのためです)。
最後に言及する自動化方法 (そして悲しいことに最も機能しそうにないもの) は、Microsoft UI Automation
フレームワークです。このフレームワークは、障害のあるユーザーや特別なニーズのあるユーザーがアプリケーションを使用できるようにすることを目的としています。残念ながら、自社製品にこの API をわざわざ実装しているソフトウェア プロバイダはほとんどありません。