[.NET]非同期呼び出しのDLL同士で、通信(データの受け渡し)を可能にするには?


優希  2004-02-03 18:37:10  No: 53109

DLL同士の通信について、質問があります。 
開発環境は、Visual Studio .NET(VC++)、
Windowsフォームを使って行います。 

まず、 
親画面上に、PictureBox1, PictureBox2を2つ作成し、 
そのPictureBoxのそれぞれで非同期呼び出し(BeginInvoke()使用)で、 
DLLをコールし、子画面1、2を作成します。 

そして、 
子画面上には、TextBox1、2を作成します。 

そこで、 
子画面2から子画面1中のTextBox1のTextを取得しようと思っていましたが、
TextBox1のインスタンスはNULLになってしまい、 
うまく取得することが出来ませんでした。 

このようなDLL同士のデータ通信を行なうには、
どのような方法がありますか?

宜しくお願いいたします。


岡田 之仁  2004-02-05 02:48:06  No: 53110

DLLも、.NETで作成されたものですか?
そのことが明記されていないので、C++.NETのみと書かれても
解決のしようがありません。

無茶な書き方するならば、相互の2本のDLLで、画面を表示
するフォームがあると言うことであれば、ウィンドウクラスが
存在しますので、FindWindowとかで画面のhWndを探して、その
リソースの子供にあたる、TextBox1のhWndを探し、そこに、
PostMessageで、テキスト情報を送り込む・・・

と言うような具合でできます。

ですが・・・
自分の自作プログラムであれば、DLLの中身を呼び出す段階
で、親の何らかのグローバル情報をDLLに渡して、そのオブ
ジェクト経由で、道後のDLLを通信させると言う方法も可能
かと・・・要はDLLを呼び出す親が、相互のDLLの通信の
仲立ちをする・・・と言うことになりますが・・・

制約を受けないようにするならば、ウィンドウハンドルを探し
て行う方法が無難ですが・・・

ご検討下さい。

以上。


岡田 之仁  2004-02-05 02:49:01  No: 53111

タイプミス・・・道後でなく、『相互』です。
以上。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加