-1

タイトルは、私がやりたいことをかなり明確にしているようです。より正確には、マウスの位置を変更してクリックするなど、2 つの方法でマウスを操作するプログラム (C++ または Java が推奨されます) を作成したいと考えています。allegro (上記のものを操作するためのマウスルーチンがあります) または sdl (そのようなルーチンがあるかどうかはわかりません) を使用することを考えていました。アレグロで試してみましたがうまくいきませんでした。ここでの問題は、事実上クリックを「実行」できないことでした。また、プログラムによって変更されたものを他のウィンドウにリダイレクトすることもできませんでした。

任意のヒント?

4

1 に答える 1

2

Windows で他のアプリケーションを自動化するには、いくつかの方法があります...

最も単純なレベルでは、PostMessageキーボードとマウスのメッセージを別のアプリケーションのウィンドウにポストするために使用できます。これには、他のアプリケーションが最小化されていて機能するという利点があります。残念ながら、このアプローチでは入力処理ロジックの大部分がスキップされるため、キーの状態に直接アクセスするアプリケーションでは、GetAsyncKeyState(たとえば)WM_KEYDOWN, vk=VK_CONTROL送信するメッセージの数に関係なく、コントロール キーが「ダウン」していることがわかりません。

Hans Passant がコメントしたように、SendImput入力イベントは低レベルの入力イベント キューに配置されるため、修飾キーを完全にシミュレートできます。ただし、これらの入力イベントはウィンドウにポストされないため、入力イベントを正常に配信するには、アクティブ化とフォーカスに関する通常の Windows ルールに従う必要があります。とはいえ、これはほとんどのテスト自動化ソフトウェアで使用されるアプローチです (そして、ほとんどのテスト自動化ソフトウェアがテスト対象のアプリケーションをアクティブなアプリケーションにする必要があるのはこのためです)。

最後に言及する自動化方法 (そして悲しいことに最も機能しそうにないもの) は、Microsoft UI Automationフレームワークです。このフレームワークは、障害のあるユーザーや特別なニーズのあるユーザーがアプリケーションを使用できるようにすることを目的としています。残念ながら、自社製品にこの API をわざわざ実装しているソフトウェア プロバイダはほとんどありません。

于 2012-04-09T10:03:55.223 に答える