2009-04-27 52 views
1

ターゲットプログラムのユーザークリックをシミュレートするSendMessageを、SendMessageがトリガーするイベントが処理されるまでブロックするように使用する必要があります。この理由は、このブロックによって、クリックの結果として開いたダイアログがあるかどうかを検出する機会が与えられるからです。私の問題は、現在、モデルのダイアログを開く模擬的なフォームのボタンにWM_LBUTTONDOWNとWM_LBUTTONUPのメッセージを連続して使用するクリックを得ることはできますが、標準のWindowsアプリケーションでメニューやメニュー項目を操作することはできませんメモ帳)。どのような方法でメニュー項目のクリックを実行する能力を得ることに役立つどんなに役立つでしょう。私はすでにそれがメニュー項目であるかどうかを検出することができ、SendMessageを使ってブロックすることでクリックをシミュレートできるだけでよい。SendMessageを使用してユーザーマウスのクリックをシミュレートする

乾杯

ロス

+0

私はquを完全に理解していますか:ブロックしたいのですかブロックしたくないですか? SendInputを試してみましたか?マウス/キーボードの入力をシミュレートする通常の方法です。通常、入力の結果を検出する他の方法とペアリングする必要があります。 WinEventsを使用して、ダイアログまたはメニューが表示されたことを検出します。この作業の多くを行うテストフレームワークもあります。 – BrendanMcK

答えて

2

残念ながら、win32 hooks上のこのページでは

シミュレート、マウスとキーボード入力(WH_JOURNALPLAYBACK)と言います。フックはこれらのアクティビティをシミュレートする唯一の信頼できる方法を提供します。メッセージを送信または投稿してこれらのイベントをシミュレートしようとすると、Windows内部でキーボードまたはマウスの状態が更新されず予期しない動作につながる可能性があります。フックを使用してキーボードイベントまたはマウスイベントを再生すると、これらのイベントは実際のキーボードまたはマウスイベントとまったく同じように処理されます。

あなたはWH_JOURNALRECORDWH_JOURNALPLAYBACKを使用して、自動テストのためのマクロレコーダーのような機能のいくつかの種類に頼らする必要がありますようだから、見えますか?

+0

リンクは最新ではありません。新しいものがあります: http://msdn.microsoft.com/en-us/library/windows/desktop/ms644959(v=vs.85).aspx – Qwerty01

関連する問題