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

解決


たかしま  2005-05-27 19:53:13  No: 121994

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 20:26:22  No: 121995

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

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


たかしま  2005-05-27 23:58:21  No: 121996

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

>> 『obj.fncAction Me』

obj.fncAction Me
obj.fncAction frmMain

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

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

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

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


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

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






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