レガシーアプリケーションに機能を追加したいお客様と協力しています。ベンダーが役に立たないアプリケーションには、WindowsフォームUIがあります。私の顧客が望んでいるのは、ユーザーがアプリケーション内の情報をクリックしたときに、このアプリケーションの外部の特定の機能がトリガーされることです。
私はこれの簡単なバージョンが別の顧客のために行われるのを見てきました。この場合、を使用して最上位のウィンドウに設定されたフォームで構成されるアプリがありますSetWindowPos
。ユーザーがこのフォームのボタンをクリックすると、アプリはレガシーアプリのウィンドウを見つけ、ウィンドウのキャプションから情報を取得します。エレガントではありません-レガシーアプリが開いていなくても消えることのないこのフローティングボタンがあります-しかし、それは機能します。
Topmost
プロパティが設定されたボーダレスの透明なWPFウィンドウを使用して、これと同様のことを実行できるかどうか疑問に思いました。私が考えているアプリは、レガシーアプリのウィンドウのコンテンツを分析し、ホットスポットのリストを定義します。ホットスポットでのマウスクリックをインターセプトして処理し、残りのすべてのマウスクリックをレガシーアプリに渡します。
私はWindowsAPIの経験があまりないので、この種の機能を実装するのが簡単(または可能)かどうかはわかりません。そして、マルウェア対策ツールを作成しているとしたら、私が考えているアプリケーションは、まさに私が不自由にしようとしているようなものだと思います。
これが実際に実行可能なプロジェクトである場合、それを実行するための最善の方法は何ですか?どのような予期しない問題に注意する必要がありますか?