0

シナリオ:

サードパーティの C++ SDK を DLL としてラップして、組織内の他の開発者がこの機能を独自のアプリ (.net、delphi など) に簡単に統合できるようにする作業に取り組んでいます。

基になるシステムは、Windows メッセージを送信して、システムで発生するイベントを通知します。これらのイベントは、システムの状態と次に何ができるかを示す可能性があるため、対処する必要があります。

質問:

私たちが採用しているアプローチ (つまり、サードパーティ SDK をラップする DLL) のコンテキスト内でこれらのメッセージを処理する最善の方法は何でしょうか? 頭に浮かぶいくつかのアイデア:

  1. DLL を使用するアプリケーションでメッセージをトラップし、処理のために関数呼び出しを介して DLL に戻します。呼び出し元のアプリケーションがこれらのメッセージをトラップすることは可能ですか?
  2. 基になるシステムからのこれらのメッセージを処理し、独自のカスタム メッセージをバブルアップするメッセージ ポンプを実装する DLL 内からスレッドを生成しますか?

SDK 用に指定されたすべてのサンプル コードは、メッセージ ポンプを実装し、アプリケーションのコンテキスト内でメッセージを処理する単一の Win32 アプリを使用します。

ネイティブの Win32 を使用して Windows 開発を行ってから何年も経ちましたが、アドバイスをいただければ幸いです。

4

1 に答える 1

2

最も簡単な方法は、プロキシ DLL を作成することです。基本的な考え方は、API DLL を独自のものに置き換え、必要な関数を置き換えて、残りを元の API DLL に転送することです。元の DLL の名前を変更し、API DLL の元の名前で を配置します。これを行うには、関数をエクスポートする必要があります。Microsoft は、Visual Studio を使用してこれをかなり簡単にしました。

関数をエクスポートする方法は次のとおりです。 http://msdn.microsoft.com/en-us/library/z4zxe9k8%28v=VS.100%29.aspx

彼らが使用している API の関数呼び出しがわからない場合は、PE Explorer というユーティリティがあり、関数についてすべて知ることができます。1 つのビジネス ライセンスに 229 ドルかかりますが、それだけの価値があるようです: http://pe-explorer.com/peexplorer-tour-function-view.htm

メモリ内の API 呼び出しを置き換える方法はいくつかありますが、複雑であり、(システムを注意深く監視している場合を除き) API が既にアクティブになっている必要があり、ウイルス対策プログラムを起動する可能性があります。

于 2010-12-23T19:03:19.587 に答える