<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.artinsoft.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Mauricio Rojas Blog : OLE, Server</title><link>http://blogs.artinsoft.net/mrojas/archive/tags/OLE/Server/default.aspx</link><description>Tags: OLE, Server</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>ActiveX Server Migration to .NET</title><link>http://blogs.artinsoft.net/mrojas/archive/2009/12/14/activex-server-migration-to-net.aspx</link><pubDate>Mon, 14 Dec 2009 21:01:00 GMT</pubDate><guid isPermaLink="false">871fd81c-a111-489f-851d-e9637b8e2ce4:2070</guid><dc:creator>Mrojas</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.artinsoft.net/mrojas/rsscomments.aspx?PostID=2070</wfw:commentRss><comments>http://blogs.artinsoft.net/mrojas/archive/2009/12/14/activex-server-migration-to-net.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;In VB6 ActiveX-EXEs or ActiveX OLE Server where used for several
reasons. Sometimes it was performance (because it allowed you to run
your code in another process) and sometimes as way to share resources
between several applications, like connection information, database
connections, mainframe info, etc.&lt;/p&gt;&lt;p&gt;During migration some of this ActiveX-Exes can be migrated as simple
Assembly DLLs, but other require more attention. Specially if they have
global variables that hold state shared by several programs.&lt;/p&gt;&lt;p&gt;In that is your case what are your options then?&lt;/p&gt;&lt;h1&gt;1. Convert those ActiveX-Exes to Windows Services.&lt;/h1&gt;&lt;p&gt;This option is simple. You modify your migrated assembly to work as a Windows Service. The easier way to do that is:&lt;/p&gt;&lt;h3&gt;a) Start Microsoft Visual Studio 2005\2008&lt;/h3&gt;&lt;h3&gt;b) Go to File\New…\Project… and Select Windows Service&lt;/h3&gt;&lt;p&gt;That will generated code like:&lt;/p&gt;&lt;p&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;using&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;System;&lt;br /&gt;
&lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;using &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;System.Collections.Generic;&lt;br /&gt;
&lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;using &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;System.ComponentModel;&lt;br /&gt;
&lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;using &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;System.Data;&lt;br /&gt;
&lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;using &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;System.Diagnostics;&lt;br /&gt;
&lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;using &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;System.Linq;&lt;br /&gt;
&lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;using &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;System.ServiceProcess;&lt;br /&gt;
&lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;using &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;System.Text;&lt;br /&gt;
&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;font color="#3366ff"&gt;&lt;span&gt;namespace &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;WindowsService1&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;
{&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;font color="#3366ff"&gt;public&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;partial&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;class&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;font color="#33cccc"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;Service1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; : &lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;font color="#33cccc"&gt;ServiceBase&lt;/font&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;{&lt;br /&gt;
&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;font color="#3366ff"&gt;public&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; Service1()&amp;nbsp; &lt;/span&gt;{&amp;nbsp;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;InitializeComponent();&amp;nbsp;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;}&lt;br /&gt;
&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;protected&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;override&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt; OnStart(&lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;[] args)&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;
&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;protected&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;override&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt; OnStop()&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;c) Add a reference to the Remoting Assemblies: System.Runtime.Remoting;&lt;/h3&gt;
&lt;h3&gt;d) Modify the previous code:&lt;/h3&gt;
&lt;p&gt;Add two using statements like:&lt;/p&gt;



&lt;p&gt;&lt;font size="1" color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;using&lt;/span&gt;&lt;/span&gt; &lt;/font&gt;&lt;span style="font-size:x-small;"&gt;System.Runtime.Remoting.Channels.Http;&lt;br /&gt;
&lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;using &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;System.Runtime.Remoting.Channels;&lt;br /&gt;
&lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;using &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;System.Runtime.Remoting;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;Add a simple event log for tracing:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;private&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;static&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;font color="#33cccc"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;EventLog&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;&lt;font color="#33cccc"&gt; &lt;/font&gt;evt = &lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;/font&gt;&lt;font color="#33cccc"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;EventLog&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;(&lt;/span&gt;&lt;font color="#ff0000"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;“Application”&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;);&lt;br /&gt;
&lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;private&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;static&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt; SVC_NAME = &lt;/span&gt;&lt;font color="#ff0000"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;“ActiveX Server Example Svc”&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;A&lt;span style="font-size:x-small;"&gt;nd modify the OnStart and OnStop methods to look like:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;protected&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;override&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt; OnStart(&lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;[] args)&lt;br /&gt;
{&lt;br /&gt;
&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#33cccc"&gt;HttpChannel&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; chnl = &lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;/font&gt;&lt;font color="#33cccc"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;HttpChannel&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;(1234);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="#33cccc"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;ChannelServices&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;.RegisterChannel(chnl,&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="#33cccc"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;RemotingConfiguration&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;.RegisterWellKnownServiceType(&lt;/span&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;typeof&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;(&lt;/span&gt;&lt;font color="#33cccc"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;MyClass&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;), &lt;/span&gt;&lt;font color="#ff0000"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;“MyClass.soap”&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;, &lt;/span&gt;&lt;font color="#33cccc"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;WellKnownObjectMode&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;.Singleton);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; evt.WriteEntry(SVC_NAME + ” Started”);&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;
}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#3366ff"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;protected&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;override&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt; OnStop() &lt;/span&gt;{ evt.WriteEntry(SVC_NAME +&lt;font color="#ff0000"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;” Stoppped”&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:x-small;"&gt;); }&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;Also make sure that MyClass extends MarshalByRefClass&lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;2. Convert those ActiveX-Exes using the Artinsoft ActiveX migration helpers.&lt;/h1&gt;
&lt;p&gt;&amp;nbsp;Sometimes, you need your migrated application to replicate some of
the original ActiveX EXE \OLE DLL VB6 characteristics. For example you
need your ActiveX-EXE to start just when the first instance is created
and to resemble the VB6 logic for Process creation\destruction.&lt;/p&gt;
&lt;p&gt;For that purpose Artinsoft has created some helpers that our
migration tool is able to automatically use in the generated code if it
detects that this functionality is needed.&lt;/p&gt;
&lt;p&gt;The code will then be changed from:&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Dim myInstance As New MyProject.MyClass&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;To the following Helper method:&lt;/p&gt;
&lt;p&gt;&lt;i&gt;myInstance&lt;/i&gt;&lt;i&gt; = &lt;/i&gt;&lt;i&gt;MyProjectFactory&lt;/i&gt;&lt;i&gt;.Create&amp;lt;&lt;/i&gt;&lt;i&gt; MyProject.&lt;/i&gt;&lt;i&gt;MyClass&lt;/i&gt;&lt;i&gt;&amp;gt;(&lt;/i&gt;&lt;i&gt;myInstance&lt;/i&gt;&lt;i&gt;);&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;And destroy calls can be changed to the following Helper method:&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;i&gt;myInstance&lt;/i&gt;&lt;i&gt;= &lt;/i&gt;&lt;i&gt;MyProjectFactory&lt;/i&gt;&lt;i&gt;.Dispose&amp;lt;&lt;/i&gt;&lt;i&gt;MyProject.&lt;/i&gt;&lt;i&gt;MyClass&lt;/i&gt;&lt;i&gt; &amp;gt;(&lt;/i&gt;&lt;i&gt; myInstance&lt;/i&gt;&lt;i&gt;);&lt;/i&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;The migration tool will modify your ActiveX-EXEs or OLE Servers to
be Windows EXE and the helper will then locate the assembly that
contains the desired Class, create an instance and initilize a Remoting
channel to the desired classes. Settings as SingleUse and MultiUse are
also taken care by the helpers.&lt;/p&gt;
&lt;h1&gt;3. Other possible alternatives are using WFC and COM+ that I will comment in another post.&lt;/h1&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.artinsoft.net/aggbug.aspx?PostID=2070" width="1" height="1"&gt;</description><category domain="http://blogs.artinsoft.net/mrojas/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.artinsoft.net/mrojas/archive/tags/ActiveX/default.aspx">ActiveX</category><category domain="http://blogs.artinsoft.net/mrojas/archive/tags/migration/default.aspx">migration</category><category domain="http://blogs.artinsoft.net/mrojas/archive/tags/VB.NET/default.aspx">VB.NET</category><category domain="http://blogs.artinsoft.net/mrojas/archive/tags/Vb6/default.aspx">Vb6</category><category domain="http://blogs.artinsoft.net/mrojas/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.artinsoft.net/mrojas/archive/tags/global+variables/default.aspx">global variables</category><category domain="http://blogs.artinsoft.net/mrojas/archive/tags/Out-of-process/default.aspx">Out-of-process</category><category domain="http://blogs.artinsoft.net/mrojas/archive/tags/Server/default.aspx">Server</category><category domain="http://blogs.artinsoft.net/mrojas/archive/tags/OLE+Server/default.aspx">OLE Server</category><category domain="http://blogs.artinsoft.net/mrojas/archive/tags/OLE/default.aspx">OLE</category></item></channel></rss>