从interop UserControl访问VB6父窗体的AmbientProperties.UserMode属性

问题描述

在VB6窗体上托管的WinForms互操作UserControl是否可以通过这种方法来检索父窗体的AmbientProperties.usermode值?

UserControl的DesignMode属性为false,考虑到控件已被编译和注册,这是有道理的。

解决方法

这是一个有趣的问题。

根据此(https://docs.microsoft.com/en-us/windows/win32/com/ambient-properties),所有ActiveX控件容器都必须支持UserMode Ambient属性。

尝试使用InvokeMember通过IDispatch(https://docs.microsoft.com/en-us/dotnet/api/system.type.invokemember?view=netframework-4.8)调用UserMode属性。