2

Delphi XE でやりたいことは次のとおりです。
別のアプリケーションでダブルクリックをキャプチャし、ダブルクリックが発生してマウスの下のテキストが強調表示されると、強調表示されたテキストに基づいてアプリケーションで一連のイベントがトリガーされます。

システム全体のマウス フックを使用してこれを行う方法は認識していますが... 多くの場合、私のアプリケーションと他のアプリケーションはターミナル サービスまたは citrix 環境でホストされるため、マウスでこれを行うのはかなり気が進まない資源コストが気になるのでフック。(私は、ユーザーごとに 1 つずつ、何百ものマウス フックをホストしているサーバーを想像しています...身震い)。私は慎重すぎますか?マウスフックのパフォーマンスと安定性はどのくらいですか? TS または citrix 環境ではどうですか? 私の直感が正しく、複数のフックのコストが高すぎる場合、これを行う別の方法はありますか?

他のアプリケーションのソース コードにアクセスすることはできません。テキストが見つかったサード パーティのリッチエディット コントロールは、すべての認識を超えて変更されており、公開されたときに API に応答しません。ヘルプ?

4

1 に答える 1

4

これは、システム全体のマウスフック、AFAIK を使用しないと不可能です。

オーバーヘッドについて心配するのは当然です。マウス フック ( MouseProcPeekMessage ) は、ウィンドウがorを呼び出しGetMessage、取得するマウス メッセージがあるたびに呼び出され、実行中のすべてのアプリケーションのすべてのウィンドウに対して呼び出されます。フックを使用してイベントを次のハンドラーに渡すだけでもCallNextHookEx()、システムに影響を与えます。TS の下で複数のセッションを実行するのはかなり厄介なことだと思います。

于 2012-04-10T04:16:19.733 に答える