我的程式中是一個VBG,里面包含很多個VBP,如附圖中的:

A:MainExecPp(TopPpExeProject.vbp)
B:TopPpExecDll(TopPpExecProject.vbp)---> 這是一個dll
D:TopPpfanucDll(topppfanucProject.vbp)--->這是一個dll
E:toppfanucE264Dll(topppfanucE264Project.vbp)--->這是一個dll
我主要的作業是在E:toppfanucE264Dll(topppfanucE264Project.vbp) 下面的類模塊中topppfanucE264(topppfanucE264.cls)中寫代碼做一些二次開發。
現在我遇到一個問題:由于作業的需要,我在類模塊topppfanucE264(topppfanucE264.cls)中加了注冊機代碼:如果未注冊就終止程式,本來我用END陳述句,結果VB報錯說“dll模塊不支持此功能”。所以我就想用其它方法來卸載主視窗FormMain(附圖中C處),可是問題又來了:怎么在類模塊F:topppfanucE264(topppfanucE264.cls)中呼叫B:TopPpExecDll(TopPpExecProject.vbp)中視窗FormMain然后將其卸載呢?
各位高手有這方面經驗的請指導一下。
小弟先謝過。
uj5u.com熱心網友回復:
你那幾個 dll ,應該都是ActiveX DLL的吧!這ActiveX DLL至少有一個 “公共類”的,你把這個操作視窗的“介面”做在相應的類中,
用它的Public Sub 或 Function 來“中轉一下”,就能很方便的操作DLL中的視窗了。
uj5u.com熱心網友回復:
只要專案之間是參考關系,就如同它們是一個專案一樣,只是被參考的無法直接呼叫參考的代碼。uj5u.com熱心網友回復:
版大說的是對的,我的F:topppfanucE264(topppfanucE264.cls)是被參考的,難道不能通過一些方法操作B:TopPpExecDll(TopPpExecProject.vbp) 中的FormMain視窗嗎?如果不行的話,那我該怎么在F:topppfanucE264(topppfanucE264.cls)中寫什么代碼讓我的程式運行終止呢。請版大給點思路……
uj5u.com熱心網友回復:
將視窗作為實體傳進來。
或者使用介面讓依賴關系倒置。
uj5u.com熱心網友回復:
你那幾個 dll ,應該都是ActiveX DLL的吧!
這ActiveX DLL至少有一個 “公共類”的,你把這個操作視窗的“介面”做在相應的類中,
用它的Public Sub 或 Function 來“中轉一下”,就能很方便的操作DLL中的視窗了。
uj5u.com熱心網友回復:
版大說的是對的,我的F:topppfanucE264(topppfanucE264.cls)是被參考的,難道不能通過一些方法操作B:TopPpExecDll(TopPpExecProject.vbp) 中的FormMain視窗嗎?如果不行的話,那我該怎么在F:topppfanucE264(topppfanucE264.cls)中寫什么代碼讓我的程式運行終止呢。
只要專案之間是參考關系,就如同它們是一個專案一樣,只是被參考的無法直接呼叫參考的代碼。
請版大給點思路……
將視窗作為實體傳進來。
1:嘗試著將FormMain 匯入TopPpExec.cls:Private WithEvents oFormMain As FormMain
2:然后在TopPpExec.clsZ中用:
Public Sub moCancel()
Set oFormMain = new FormMain
Unload oFormMain
END SUB
3:在TopPpfanucE264中參考 moCancel() ,結果FormMain還是沒能卸載。此時FormMain是凍結狀態。
我想還有其它我沒處理對的地方吧。
改天我整理下把原始碼發上來。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/131253.html
標籤:VB基礎類
上一篇:vb 串口通信
