ActiveX控件默认属性发现
时间:2020-03-05 18:46:58 来源:igfitidea点击:
是否可以确定ActiveX控件的哪个属性是默认属性?例如,VB6控件CommandButton的默认属性是什么,我将如何找到其他控件的默认属性!
/ EDIT:没有对象本身的来源
解决方案
回答
我不使用VB,但是可以了。
我发现使用控件的值,但这不是编程解决方案。
如果我们有权访问该代码,请查找
Attribute Value.VB_UserMemId = 0
使用记事本。
回答
you have access to the code, look for
不幸的是,我无法访问大多数控件的代码。但是,该链接对于Microsoft控件很有用,但是我仍然希望了解其他控件。
回答
这取决于我们何时要确定。我们可以将标签控件(不具有" value"属性)的"值"打印到调试器,例如:
debug.print "Value for cmdTest is ["+format(cmdTest)+"]"
这会给你类似的东西:
Value for cmdTest is [False]
事实证明,命令按钮的默认值是其状态(是否按下),因此,如果将上面的代码示例放在控件的click事件中,则在其他地方执行时将看到" True" ,我们将看到" False"。
对于其他结果,此方法至少会向我们显示所需的属性。我们可以使用:
debug.print "cmdTest's value is of type ["+TypeName(oObject) +"]"
告诉我们实际的类型,即:
cmdTest's value is of type [Boolean]
我们可以使用各种方法来缩小范围,例如设置值并查看会发生什么。
回答
使用随Microsoft Visual Studio一起分发的OLE / Com对象查看器。
转到类型库,然后找到控件所在的库,例如CommandButton存储在Microsoft Forms 2.0 Object Library中。右键单击库,然后选择视图。找到代表控件的子类并选择它:
可以看出,CommandButton的默认接口是ICommandButton,当我们检查ICommandButton时,请查找DISPID为0的属性。CommandButton的DISPID 0属性的IDL为:
[id(00000000), propput, bindable, displaybind, hidden, helpcontext(0x001e8d04)] void Value([in] VARIANT_BOOL rhs); [id(00000000), propget, bindable, displaybind, hidden, helpcontext(0x001e8d04)] VARIANT_BOOL Value();
向我们显示默认属性。