Y
Yury Kudryashov
Hello,
I am developing a C# Outlook addin for .NET 1.1. I display some part of plugin's
GUI in a "web view" folder (Outlook allows to specify custom HTML pages
for its folders, contents of these pages is shown when user selects such
a folder). My GUI is implemented as an ActiveX control that is loaded in
the HTML set for the custom folder (via "object" tag). So, the scenario is
the following: Outlook starts the addin, it is initialized. Then user goes
to the special custom folder and sees the plugin's GUI.
It all worked fine when my addin was working without the unmanaged shim (both
addin and ActiveX were loaded into the default application domain). After
I introduced shim (for the purposes of security), Addin is loaded into its
own application domain and ActiveX is still loaded into the default domain.
So, it stopped working as it is now impossible to exchange information between
the domains (ActiveX relies heavily on the addin, it subscribes to its events,
addin also subscribes to events of the ActiveX, a lot of data is transferred
between these two). I know data can be marshaled, but still have no idea
how to marshal events or objects that are not inherited from MarshalByRefObject.
Is there any way to load ActiveX in the same domain as the addin itself,
or are there any other ways to establish communications between the addin
and the ActiveX?
I am developing a C# Outlook addin for .NET 1.1. I display some part of plugin's
GUI in a "web view" folder (Outlook allows to specify custom HTML pages
for its folders, contents of these pages is shown when user selects such
a folder). My GUI is implemented as an ActiveX control that is loaded in
the HTML set for the custom folder (via "object" tag). So, the scenario is
the following: Outlook starts the addin, it is initialized. Then user goes
to the special custom folder and sees the plugin's GUI.
It all worked fine when my addin was working without the unmanaged shim (both
addin and ActiveX were loaded into the default application domain). After
I introduced shim (for the purposes of security), Addin is loaded into its
own application domain and ActiveX is still loaded into the default domain.
So, it stopped working as it is now impossible to exchange information between
the domains (ActiveX relies heavily on the addin, it subscribes to its events,
addin also subscribes to events of the ActiveX, a lot of data is transferred
between these two). I know data can be marshaled, but still have no idea
how to marshal events or objects that are not inherited from MarshalByRefObject.
Is there any way to load ActiveX in the same domain as the addin itself,
or are there any other ways to establish communications between the addin
and the ActiveX?