InterfaceInfo关于编译后出现错误问题

一如既往哈 2016-12-05 09:58:21
'''Form1窗体
Option Explicit
Private Sub Form_Load()
MsgBox GetNames
End Sub
Private Function GetNames() As String
On Error GoTo 100
Dim IFI As InterfaceInfo, Memb As MemberInfo, s As String
Dim MyClass As Class1, Ers As String
Set MyClass = New Class1
Ers = "101"
Set IFI = InterfaceInfoFromObject(MyClass)
Ers = "102"
For Each Memb In IFI.Members ''''错误出在这里>>IFI.Members
s = s & IIf(s <> "", vbCrLf, "") & Memb.Name
Next
GetNames = s
Exit Function
100:
GetNames = Err.Description & vbCrLf & Ers
End Function


'''''Class1----类
Option Explicit
Private clsName As String
Private classAge As Integer
Private Sub Class_Initialize()
clsName = "dddk"
classAge = 18
End Sub
Public Property Get Name() As String
Name = clsName
End Property
Public Property Get Age() As String
Age = classAge
End Property



上面代码在ide下能返回 Name和Age,但是编译后再运行,IFI.Members这里出错。

有知道怎么解决的吗?
...全文
2525 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
舉杯邀明月 2016-12-06
  • 打赏
  • 举报
回复
这恐怕不行吧! 估计编译后的 exe程序,那个“类”对象的“TypeLib信息”应该都不在了, 这样那个 InterfaceInfoFromObject() 再也无法获取到相关信息。
赵4老师 2016-12-06
  • 打赏
  • 举报
回复
regsvr32 oleview
Tiger_Zhao 2016-12-06
  • 打赏
  • 举报
回复
正常情况下只有 ActiveX Dll/Exe 中的公共类才有注册信息;标准 Exe 或私有类就不要想了。
至于 VB-IDE 中可以获取信息,仅仅是因为调试状态下有“临时注册信息”,这是特例,不能当真。

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧