2010-11-24 4 views
11

Windows上でLoadLibraryを使用してプラグインを動的にロードするアプリケーションがあります。ただし、一部のプラグインには、データベースクライアントDLLなどの他の依存DLLがあります。 このようなDLLを読み込もうとすると、依存するDLLの1つが存在しないと、不快なWindowsダイアログが表示されます。依存DLLが見つからないときにLoadLibraryを使用してWindowsにDLLをロードしようとしています

"xxx.ddlがコンピュータに存在しないため、プログラムを開始できません。この問題を解決するためのプログラムです

このダイアログを簡単に回避する方法はありますか?私はLoadLibraryExを使用し、 "迷惑なダイアログを私に与えない"というフラグを渡すことを望んでいましたが、それはそのようには見えません。

私が望むのは、アプリケーションのエラーを処理するのではなく、Windowsの処理ではなく、特にメッセージのテキストが間違っているからです(プログラムが起動できないという問題ではありません。プログラムはとても楽しく走っていますが、このプラグインをロードできません)。

私が避けたいのは、これらの外部依存関係を持つプラグインを書き直して、依存モジュールの動的ロードを実行してからエントリポイントをクエリすることです。

とにかく、どんな提案も感謝して受け取ります。 MSDNから

+0

'LoadLibraryEx'には多くのフラグがあります。 – ruslik

+0

ruslik:LoadLibraryExには多くのフラグが含まれていますが、少なくともMSDNには記載されていないものはありません。この動作を制御します。 –

答えて

13

使用SetErrorMode()。 DLLをロードする前にSEM_NOOPENFILEERRORBOX | SEM_FAILCRITICALERRORSで使用し、直後に0と使用してください。

+1

それはうまくいくでしょう。 LoadLibraryのドキュメントを実際に読んでいないのは悪いです! 「備考」セクションの最初の文。 Doh。 –

5

有効または無効にDLLのロード時にローダーが表示されたエラーメッセージを、SetErrorMode関数を使用します。

Link here

関連する問題