5

ユーザー入力 (マウスとキー) をシミュレートするためのフレームワークを作成しています。

このフレームワークは、DUnit テストを簡単に実装するための API を提供します。

現在の私の大きな問題の 1 つは、アプリケーションがアイドル状態になるのを待つことです。

「テキストを入力」、「キーを押す」、「XY でクリック」などのコマンドを受信するサーバー (TCP) があります。これらのコマンドが処理されるのを待ち、クライアント API に戻って実行を続ける必要があります。テストの次のステップ。

私のサーバーはスレッドを介してアクションを受信して​​実行するため、モーダル メッセージを表示するボタンをクリックする場合のように、実行をキャッチするリスクはありません。

私は現在 ApplicationEvents.OnIdle を使用して支援していますが、場合によってはうまく機能しません。

また、WaitForInputIdle を使用してみましたが、ユーザー入力の処理後にアプリケーションがまだアクションを処理している可能性があるため、問題は解決しません...

誰かが私を助けることができますか?

4

2 に答える 2

0

ユーザー入力をどのようにシミュレートしていますか? PostMessage 経由でプログラム メッセージを送信していますか? もしそうなら、プログラムが送信されたメッセージを処理するまでブロックする SendMessage に切り替えることができます。

于 2012-07-03T17:51:46.077 に答える
0

あなたはターゲットアプリケーションを制御しているので (ApplicationEvents の OnIdle イベントに言及しているため、これを想定しています)、RegisterWindowMessage を調べて、メッセージを応答させます (たとえば、テスト システムの HWND を LParam または WParam として渡します)。アプリケーションが何も実行されなくなったとき。

カスタム メッセージは中央のメッセージ キューに入れられるため、入力イベントをシミュレートして開始した操作がアプリケーションで完了するとすぐに、応答が返されます。

于 2012-07-03T20:25:51.483 に答える