2016-07-03 2 views
0

私はC++アンマネージドDLLをロードし、その関数を呼び出すC#プログラムを持っています。 dllはいくつかの操作を実行し、エラーまたは例外が発生した場合は、Windowsのメッセージボックスを表示します。したがって、エラーが発生しなければ、メッセージボックスは表示されません。私はdllのソースを持っていないことに言及する価値があります。C#でメッセージボックス呼び出しを検出する方法

C#でdllの関数を呼び出すと、呼び出しが正常に実行されたことを確認する唯一の方法は、呼び出し中にメッセージボックスが表示されているかどうかを確認することです。私の質問は、私はこれをどうすればできるのですか?すなわち、dllによるメッセージボックス呼び出しを検出するか?

+1

アプリケーションが関数を呼び出しているので、 'WndProc'に' WM_INITDIALOG'を取り込みます。 –

+0

詳細を教えてください。私はc#@GillBates –

+0

でそれほど経験はありません例外に応答してメッセージボックスを表示することは、実際にはDLLのための妥当な動作のようには思えません。 DLLは例外をスローし、* client *コードでそれを処理させます。デフォルトの未処理の例外ハンドラがメッセージボックスを表示する場合、クライアントがそれを処理しない場合のみ。 DLLを間違って使用していることを伝えるメッセージを単にデバッグするだけではないのですか(たとえば間違ったパラメータを渡すなど)。 –

答えて

0

DLLは、標準メッセージボックスの手順を使用している場合は、MessageBoxシリーズWINAPIをフックして、それを達成することができます。(グーグルWINAPI hook c#

しかし、DLLは、標準的なメッセージボックスを使用しない場合、あなたはCreateWindowかなどをフックする必要があるかもしれません

関連する問題