DLL同士の通信について、質問があります。
開発環境は、Visual Studio .NET(VC++)、
Windowsフォームを使って行います。
まず、
親画面上に、PictureBox1, PictureBox2を2つ作成し、
そのPictureBoxのそれぞれで非同期呼び出し(BeginInvoke()使用)で、
DLLをコールし、子画面1、2を作成します。
そして、
子画面上には、TextBox1、2を作成します。
そこで、
子画面2から子画面1中のTextBox1のTextを取得しようと思っていましたが、
TextBox1のインスタンスはNULLになってしまい、
うまく取得することが出来ませんでした。
このようなDLL同士のデータ通信を行なうには、
どのような方法がありますか?
宜しくお願いいたします。
DLLも、.NETで作成されたものですか?
そのことが明記されていないので、C++.NETのみと書かれても
解決のしようがありません。
無茶な書き方するならば、相互の2本のDLLで、画面を表示
するフォームがあると言うことであれば、ウィンドウクラスが
存在しますので、FindWindowとかで画面のhWndを探して、その
リソースの子供にあたる、TextBox1のhWndを探し、そこに、
PostMessageで、テキスト情報を送り込む・・・
と言うような具合でできます。
ですが・・・
自分の自作プログラムであれば、DLLの中身を呼び出す段階
で、親の何らかのグローバル情報をDLLに渡して、そのオブ
ジェクト経由で、道後のDLLを通信させると言う方法も可能
かと・・・要はDLLを呼び出す親が、相互のDLLの通信の
仲立ちをする・・・と言うことになりますが・・・
制約を受けないようにするならば、ウィンドウハンドルを探し
て行う方法が無難ですが・・・
ご検討下さい。
以上。
タイプミス・・・道後でなく、『相互』です。
以上。
ツイート | ![]() |