標準のwin32 dllで制御されているデバイスがあります。デバイスの応答は、アプリケーションウィンドウハンドル(接続時に必要)を介して返されます。 今、私がメッセージを見なければならない唯一の方法は、フォーム内のWndProcをオーバーライドすることです。これは非常に限定的です。CでDLLからのメッセージを聞くにはどうすればいいですか#
私の元の意図は、dllの中にすべてを置くことによって、デバイスの裸の取り扱いをアプリケーションからできるだけ分離することでしたが、この依存関係は私がそれを達成できないようにしています。
フォーム(a la WndProc)ではなく、私のdllから受け取ったメッセージを見ることができるフックが必要です。私が見たのは、dllからではなく、同じ形式のフックを示しています。
ああ、ところで、私はフックもWPFと互換性があることを理解しており、これもここでの要件です。
ご意見は大変ありがとうございます。
いいえ、それはそれを行う方法です。確かに、DLLにフォームインスタンスを作成できない理由はありません。そして、フォームクラスは他の.NETクラスのような単なるクラスです。それは、デバイスコードがそれを見つけることができる限り、可視ウィンドウである必要はありません。 –
ここに事があります。このデバイスは、ウィンドウがアプリケーションのメインフォームである場合にのみメッセージを送信するため、Application.Runを使用して作成するか、ShowDialogを使用して表示する必要があります。そのため、非表示にしたり、作成したり、クラス。 wndprcを使って試してみたところ、メッセージが表示されなくなりました。ああ、ところで、私はIMessageFilterを試してみました。何の理由もなく2つのメッセージをスキップします。 –