ActiveX DLLからフォームなどを操作

解決


たかしま  2005-05-27 10:53:13  No: 121994  IP: [192.*.*.*]

ActiveX DLL側からVB EXE側のフォームやフォーム上のオブジェクトなどを操作することはできないのでしょうか?

VB EXE側では当然のようにフォーム上のラベルの表記を変更したりできます。

  frmMain.lblName.Caption = "あいうえお"

同じことをActiveX DLL側から実行したりできないのでしょうか?

ActiveX DLLはレイトバインディングで参照しています。

Dim obj As Object
Set obj = CreateObject("Project2.Class1")
obj.fncAction    ← このDLL側の関数の中でEXE側のフォームを操作。


このようなことが ActiveX DLL で実現できるのでしょうか?
それとも、やはりセキュリティ上実現できない仕様になっているのでしょうか?

ご教授お願いいたします。

【環境】
    WIN2000 PRO SP4、WINXP HOME SP2
    VB6.0 SP5

編集 削除
魔界の仮面弁士  2005-05-27 11:26:22  No: 121995  IP: [192.*.*.*]

> obj.fncAction    ← このDLL側の関数の中でEXE側のフォームを操作。
とりあえず、『obj.fncAction Me』などとして、DLL側に、
引数やプロパティなどで、フォームオブジェクトを渡してみるとか。

ただ、フォームそのものを渡すという設計は、
個人的にはあまりお奨めしませんけど。

編集 削除
たかしま  2005-05-27 14:58:21  No: 121996  IP: [192.*.*.*]

魔界の仮面弁士 様  いつもお世話になっております。

>> 『obj.fncAction Me』

obj.fncAction Me
obj.fncAction frmMain

確かにいけました!
ありがとうござます。

>> 個人的にはあまりお奨めしませんけど。

確かにフォームのインスタンス(?)を丸ごと相手の関数に渡すのは怖いかもしれませんね。
DLL側関数の結果を判断してフォーム側の処理は本体EXEがやる方がいいのかも。

参考にさせていただきます。
ありがとうございました。

編集 削除