5

レガシーアプリケーションに機能を追加したいお客様と協力しています。ベンダーが役に立たないアプリケーションには、WindowsフォームUIがあります。私の顧客が望んでいるのは、ユーザーがアプリケーション内の情報をクリックしたときに、このアプリケーションの外部の特定の機能がトリガーされることです。

私はこれの簡単なバージョンが別の顧客のために行われるのを見てきました。この場合、を使用して最上位のウィンドウに設定されたフォームで構成されるアプリがありますSetWindowPos。ユーザーがこのフォームのボタンをクリックすると、アプリはレガシーアプリのウィンドウを見つけ、ウィンドウのキャプションから情報を取得します。エレガントではありません-レガシーアプリが開いていなくても消えることのないこのフローティングボタンがあります-しかし、それは機能します。

Topmostプロパティが設定されたボーダレスの透明なWPFウィンドウを使用して、これと同様のことを実行できるかどうか疑問に思いました。私が考えているアプリは、レガシーアプリのウィンドウのコンテンツを分析し、ホットスポットのリストを定義します。ホットスポットでのマウスクリックをインターセプトして処理し、残りのすべてのマウスクリックをレガシーアプリに渡します。

私はWindowsAPIの経験があまりないので、この種の機能を実装するのが簡単(または可能)かどうかはわかりません。そして、マルウェア対策ツールを作成しているとしたら、私が考えているアプリケーションは、まさに私が不自由にしようとしているようなものだと思います。

これが実際に実行可能なプロジェクトである場合、それを実行するための最善の方法は何ですか?どのような予期しない問題に注意する必要がありますか?

4

5 に答える 5

3

WH_CALLWNDPROCこれは、および/または WH_GETMESSAGEフックを使用してボタンをオーバーレイすることで、トリックなしで実行できます 。

于 2011-04-20T19:02:52.190 に答える
1

私は間違いなくUI Automationを試してみます。うまくいかないかもしれませんが、少なくとも、試すのはかなり簡単です。そして、ほとんどの場合、うまくいかない場合は、他に「簡単な」方法がないことを意味します。

UI オートメーションのルーツは、障害者向けの支援技術にあります。これは、ほとんどの場合、所有していないアプリでやりたいことです。つまり、実際には「標準的な方法」で行うことができずに、外部アプリケーションから何かを行います。 .

また、論理的にはイベントの概念もあります。公式ドキュメントの UI Automation Events Overviewを参照してください。

于 2011-04-24T07:02:03.317 に答える
0

また、davids の提案に代わる方法は、 を使用し、GetWindowLongアプリケーションウィンドウ プロシージャをフックすることです。「Windows フック」メソッドを使用するよりも少し簡単ですが、そのメソッドを介してフックしたり、再度サブクラス化したりすることができます。短い例については、msdn のウィンドウのサブクラス化を参照してください: http://msdn.microsoft.com/en-us/library/ms633570(v=vs.85).aspx#subclassing_windowSetWindowLongCallWindowProc

于 2011-04-24T06:22:52.343 に答える
0

dizを確認してください:http://www.autohotkey.com/

スクリプト可能で、ウィンドウ タイトルなどを読み取ることができます。 ebay のウェブページの選択から. また、私はそれを自分の通貨に変更しました. だから、アイテムの価格と p+p をマークし、キーを押すと出来上がり.)

于 2011-04-30T15:56:29.723 に答える