EDN Admin
Well-known member
Ive modified an example ActiveX control using C# so that it calls an event from a new thread; the full code can be found here:
http://www.codeproject.com/KB/cs/CreateActiveXDotNet.aspx
http://www.codeproject.com/KB/cs/CreateActiveXDotNet.aspx
I have no problem accessing methods/properties of the ActiveX control, and it handles events fired by the main thread as well. But Ive put the code that fires the event on a new thread and the control crashes Internet Explorer every time its run; Im unable
to generate an exception or any sort of warning it just crashes. I was wondering if anyone else has run into this problem, knows what might be going on here, or knows how to fix it. Any help would be greatly appreciated.
Thanks
Eric
Below is the C# code and Javascript code used to access it; it must be registered using regasm before it loads. The bug should be easy to reproduce for anyone interested.
<div style="color:Black;background-color:White; <pre>
<span style="color:Blue; using System;
<span style="color:Blue; using System.Reflection;
<span style="color:Blue; using System.Runtime.InteropServices;
<span style="color:Blue; using System.Text;
<span style="color:Blue; using System.Threading;
<span style="color:Blue; using System.Windows.Forms;
<span style="color:Blue; using Microsoft.Win32;
<span style="color:Blue; namespace Kosmala.Michal.ActiveXTest
{
<span style="color:Gray; /// <span style="color:Gray; <summary>
<span style="color:Gray; ///<span style="color:Green; Summary description for Class1.
<span style="color:Gray; /// <span style="color:Gray; </summary>
[ProgId(<span style="color:#A31515; "Dendrite.WebForce.MMP.Web.OurActiveX")]
[ClassInterface(ClassInterfaceType.AutoDual), ComSourceInterfaces(<span style="color:Blue; typeof(ControlEvents))] <span style="color:Green; //Implementing interface that will be visible from JS
[Guid(<span style="color:#A31515; "121C3E0E-DC6E-45dc-952B-A6617F0FAA32")]
[ComVisible(<span style="color:Blue; true)]
<span style="color:Blue; public <span style="color:Blue; class ActiveXObject
{
<span style="color:Blue; private <span style="color:Blue; string myParam = <span style="color:#A31515; "Empty";
<span style="color:Blue; public ActiveXObject()
{
}
<span style="color:Blue; public <span style="color:Blue; event ControlEventHandler OnClose;
<span style="color:Gray; /// <span style="color:Gray; <summary>
<span style="color:Gray; ///<span style="color:Green; Opens application. Called from JS
<span style="color:Gray; /// <span style="color:Gray; </summary>
[ComVisible(<span style="color:Blue; true)]
<span style="color:Blue; public <span style="color:Blue; void Open()
{
<span style="color:Green; //TODO: Replace the try catch in aspx with try catch below. The problem is that js OnClose does not register.
<span style="color:Blue; try
{
<span style="color:Green; //MessageBox.Show(myParam); //Show param that was passed from JS
<span style="color:Green; //Thread.Sleep(2000); //Wait a little before closing. This is just to show the gap between calling OnClose event.
<span style="color:Green; //Close(); //Close application
Thread CaptureThread = <span style="color:Blue; new Thread(<span style="color:Blue; new ThreadStart(<span style="color:Blue; this.CloseThread));
CaptureThread.Start();
}
<span style="color:Blue; catch (Exception e)
{
<span style="color:Green; //ExceptionHandling.AppException(e);
<span style="color:Blue; throw e;
}
}
<span style="color:Blue; public <span style="color:Blue; void CloseThread()
{
<span style="color:Green; //Thread.Sleep(2000);
<span style="color:Green; // close application
Close();
}
<span style="color:Gray; /// <span style="color:Gray; <summary>
<span style="color:Gray; ///<span style="color:Green; Parameter visible from JS
<span style="color:Gray; /// <span style="color:Gray; </summary>
[ComVisible(<span style="color:Blue; true)]
<span style="color:Blue; public <span style="color:Blue; string MyParam
{
<span style="color:Blue; get
{
<span style="color:Blue; return myParam;
}
<span style="color:Blue; set
{
myParam = value;
}
}
[ComVisible(<span style="color:Blue; true)]
<span style="color:Blue; public <span style="color:Blue; void Close()
{
<span style="color:Blue; if(OnClose != <span style="color:Blue; null)
{
OnClose(<span style="color:#A31515; "test http://otherwebsite.com"); <span style="color:Green; //Calling event that will be catched in JS
}
<span style="color:Blue; else
{
MessageBox.Show(<span style="color:#A31515; "No Event Attached"); <span style="color:Green; //If no events are attached send message.
}
}
<span style="color:Gray; /// <span style="color:Gray; <summary>
<span style="color:Gray; ///<span style="color:Green; Register the class as a control and set its CodeBase entry
<span style="color:Gray; /// <span style="color:Gray; </summary>
<span style="color:Gray; /// <span style="color:Gray; <param name="key <span style="color:Green; The registry key of the control</param>
[ComRegisterFunction()]
<span style="color:Blue; public <span style="color:Blue; static <span style="color:Blue; void RegisterClass ( <span style="color:Blue; string key )
{
<span style="color:Green; // Strip off HKEY_CLASSES_ROOT from the passed key as I dont need it
StringBuilder sb = <span style="color:Blue; new StringBuilder ( key ) ;
sb.Replace(<span style="color:#A31515; @"HKEY_CLASSES_ROOT",<span style="color:#A31515; "") ;
<span style="color:Green; // Open the CLSID{guid} key for write access
RegistryKey k = Registry.ClassesRoot.OpenSubKey(sb.ToString(),<span style="color:Blue; true);
<span style="color:Green; // And create the Control key - this allows it to show up in
<span style="color:Green; // the ActiveX control container
RegistryKey ctrl = k.CreateSubKey ( <span style="color:#A31515; "Control" ) ;
ctrl.Close ( ) ;
<span style="color:Green; // Next create the CodeBase entry - needed if not string named and GACced.
RegistryKey inprocServer32 = k.OpenSubKey ( <span style="color:#A31515; "InprocServer32" , <span style="color:Blue; true ) ;
inprocServer32.SetValue ( <span style="color:#A31515; "CodeBase" , Assembly.GetExecutingAssembly().CodeBase ) ;
inprocServer32.Close ( ) ;
<span style="color:Green; // Finally close the main key
k.Close ( ) ;
MessageBox.Show(<span style="color:#A31515; "Registered");
}
<span style="color:Gray; /// <span style="color:Gray; <summary>
<span style="color:Gray; ///<span style="color:Green; Called to unregister the control
<span style="color:Gray; /// <span style="color:Gray; </summary>
<span style="color:Gray; /// <span style="color:Gray; <param name="key <span style="color:Green; Tke registry key</param>
[ComUnregisterFunction()]
<span style="color:Blue; public <span style="color:Blue; static <span style="color:Blue; void UnregisterClass ( <span style="color:Blue; string key )
{
StringBuilder sb = <span style="color:Blue; new StringBuilder ( key ) ;
sb.Replace(<span style="color:#A31515; @"HKEY_CLASSES_ROOT",<span style="color:#A31515; "") ;
<span style="color:Green; // Open HKCRCLSID{guid} for write access
RegistryKey k = Registry.ClassesRoot.OpenSubKey(sb.ToString(),<span style="color:Blue; true);
<span style="color:Green; // Delete the Control key, but dont throw an exception if it does not exist
k.DeleteSubKey ( <span style="color:#A31515; "Control" , <span style="color:Blue; false ) ;
<span style="color:Green; // Next open up InprocServer32
<span style="color:Green; //RegistryKey inprocServer32 =
k.OpenSubKey ( <span style="color:#A31515; "InprocServer32" , <span style="color:Blue; true ) ;
<span style="color:Green; // And delete the CodeBase key, again not throwing if missing
k.DeleteSubKey ( <span style="color:#A31515; "CodeBase" , <span style="color:Blue; false ) ;
<span style="color:Green; // Finally close the main key
k.Close ( ) ;
MessageBox.Show(<span style="color:#A31515; "UnRegistered");
}
}
<span style="color:Gray; /// <span style="color:Gray; <summary>
<span style="color:Gray; ///<span style="color:Green; Event handler for events that will be visible from JavaScript
<span style="color:Gray; /// <span style="color:Gray; </summary>
<span style="color:Blue; public <span style="color:Blue; delegate <span style="color:Blue; void ControlEventHandler(<span style="color:Blue; string redirectUrl);
<span style="color:Gray; /// <span style="color:Gray; <summary>
<span style="color:Gray; ///<span style="color:Green; This interface shows events to javascript
<span style="color:Gray; /// <span style="color:Gray; </summary>
[Guid(<span style="color:#A31515; "68BD4E0D-D7BC-4cf6-BEB7-CAB950161E79")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
<span style="color:Blue; public <span style="color:Blue; interface ControlEvents
{
<span style="color:Green; //Add a DispIdAttribute to any members in the source interface to specify the COM DispId.
[DispId(0x60020001)]
<span style="color:Blue; void OnClose(<span style="color:Blue; string redirectUrl); <span style="color:Green; //This method will be visible from JS
}
}
[/code]
<div style="color:Black;background-color:White; <pre>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<span style="color:Blue; <<span style="color:#A31515; html<span style="color:Blue; >
<span style="color:Blue; <<span style="color:#A31515; head<span style="color:Blue; >
<span style="color:Blue; <<span style="color:#A31515; title<span style="color:Blue; >WebForm1<span style="color:Blue; </<span style="color:#A31515; title<span style="color:Blue; >
<span style="color:Blue; <<span style="color:#A31515; meta <span style="color:Red; name<span style="color:Blue; =<span style="color:Blue; "GENERATOR" <span style="color:Red; Content<span style="color:Blue; =<span style="color:Blue; "Microsoft Visual Studio .NET 7.1"<span style="color:Blue; >
<span style="color:Blue; <<span style="color:#A31515; meta <span style="color:Red; name<span style="color:Blue; =<span style="color:Blue; "CODE_LANGUAGE" <span style="color:Red; Content<span style="color:Blue; =<span style="color:Blue; "C#"<span style="color:Blue; >
<span style="color:Blue; <<span style="color:#A31515; meta <span style="color:Red; name<span style="color:Blue; =<span style="color:Blue; vs_defaultClientScript <span style="color:Red; content<span style="color:Blue; =<span style="color:Blue; "JavaScript"<span style="color:Blue; >
<span style="color:Blue; <<span style="color:#A31515; meta <span style="color:Red; name<span style="color:Blue; =<span style="color:Blue; vs_targetSchema <span style="color:Red; content<span style="color:Blue; =<span style="color:Blue; "http://schemas.microsoft.com/intellisense/ie5"<span style="color:Blue; >
<span style="color:Blue; </<span style="color:#A31515; head<span style="color:Blue; >
<span style="color:Blue; <<span style="color:#A31515; body <span style="color:Red; onload<span style="color:Blue; =<span style="color:Blue; "OpenActiveX()"<span style="color:Blue; >
<span style="color:Green; <!-- Our activeX object -->
<span style="color:Blue; <<span style="color:#A31515; OBJECT <span style="color:Red; id<span style="color:Blue; =<span style="color:Blue; "OurActiveX" <span style="color:Red; name<span style="color:Blue; =<span style="color:Blue; "OurActiveX" <span style="color:Red; classid<span style="color:Blue; =<span style="color:Blue; "clsid:121C3E0E-DC6E-45dc-952B-A6617F0FAA32" <span style="color:Red; VIEWASTEXT <span style="color:Red; codebase<span style="color:Blue; =<span style="color:Blue; "OurActiveX.cab"<span style="color:Blue; ><span style="color:Blue; </<span style="color:#A31515; OBJECT<span style="color:Blue; >
<span style="color:Green; <!-- Attaching to an ActiveX event-->
<span style="color:Green; <!-- <script language="javascript
function OurActiveX::OnClose(redirectionUrl)
{
alert(redirectionUrl);
//window.location = redirectionUrl;
}
</script> -->
<span style="color:Blue; <<span style="color:#A31515; script <span style="color:Red; language<span style="color:Blue; =<span style="color:Blue; "javascript"<span style="color:Blue; >
<span style="color:Green; //Passing parameters to ActiveX object and starting application
<span style="color:Blue; function OpenActiveX()
{
document.OurActiveX.attachEvent(<span style="color:#A31515; OnClose, <span style="color:Blue; function(redirectionUrl) { alert(<span style="color:#A31515; redirct: + redirectionUrl) });
<span style="color:Blue; try
{
document.OurActiveX.MyParam = <span style="color:#A31515; "Hi I am here." <span style="color:Green; //Passing parameter to the ActiveX
document.OurActiveX.Open(); <span style="color:Green; //Running method from activeX
}
<span style="color:Blue; catch(Err)
{
alert(Err.description);
}
}
<span style="color:Blue; </<span style="color:#A31515; script<span style="color:Blue; >
<span style="color:Blue; </<span style="color:#A31515; body<span style="color:Blue; >
<span style="color:Blue; </<span style="color:#A31515; html<span style="color:Blue; >
[/code]
View the full article
http://www.codeproject.com/KB/cs/CreateActiveXDotNet.aspx
http://www.codeproject.com/KB/cs/CreateActiveXDotNet.aspx
I have no problem accessing methods/properties of the ActiveX control, and it handles events fired by the main thread as well. But Ive put the code that fires the event on a new thread and the control crashes Internet Explorer every time its run; Im unable
to generate an exception or any sort of warning it just crashes. I was wondering if anyone else has run into this problem, knows what might be going on here, or knows how to fix it. Any help would be greatly appreciated.
Thanks
Eric
Below is the C# code and Javascript code used to access it; it must be registered using regasm before it loads. The bug should be easy to reproduce for anyone interested.
<div style="color:Black;background-color:White; <pre>
<span style="color:Blue; using System;
<span style="color:Blue; using System.Reflection;
<span style="color:Blue; using System.Runtime.InteropServices;
<span style="color:Blue; using System.Text;
<span style="color:Blue; using System.Threading;
<span style="color:Blue; using System.Windows.Forms;
<span style="color:Blue; using Microsoft.Win32;
<span style="color:Blue; namespace Kosmala.Michal.ActiveXTest
{
<span style="color:Gray; /// <span style="color:Gray; <summary>
<span style="color:Gray; ///<span style="color:Green; Summary description for Class1.
<span style="color:Gray; /// <span style="color:Gray; </summary>
[ProgId(<span style="color:#A31515; "Dendrite.WebForce.MMP.Web.OurActiveX")]
[ClassInterface(ClassInterfaceType.AutoDual), ComSourceInterfaces(<span style="color:Blue; typeof(ControlEvents))] <span style="color:Green; //Implementing interface that will be visible from JS
[Guid(<span style="color:#A31515; "121C3E0E-DC6E-45dc-952B-A6617F0FAA32")]
[ComVisible(<span style="color:Blue; true)]
<span style="color:Blue; public <span style="color:Blue; class ActiveXObject
{
<span style="color:Blue; private <span style="color:Blue; string myParam = <span style="color:#A31515; "Empty";
<span style="color:Blue; public ActiveXObject()
{
}
<span style="color:Blue; public <span style="color:Blue; event ControlEventHandler OnClose;
<span style="color:Gray; /// <span style="color:Gray; <summary>
<span style="color:Gray; ///<span style="color:Green; Opens application. Called from JS
<span style="color:Gray; /// <span style="color:Gray; </summary>
[ComVisible(<span style="color:Blue; true)]
<span style="color:Blue; public <span style="color:Blue; void Open()
{
<span style="color:Green; //TODO: Replace the try catch in aspx with try catch below. The problem is that js OnClose does not register.
<span style="color:Blue; try
{
<span style="color:Green; //MessageBox.Show(myParam); //Show param that was passed from JS
<span style="color:Green; //Thread.Sleep(2000); //Wait a little before closing. This is just to show the gap between calling OnClose event.
<span style="color:Green; //Close(); //Close application
Thread CaptureThread = <span style="color:Blue; new Thread(<span style="color:Blue; new ThreadStart(<span style="color:Blue; this.CloseThread));
CaptureThread.Start();
}
<span style="color:Blue; catch (Exception e)
{
<span style="color:Green; //ExceptionHandling.AppException(e);
<span style="color:Blue; throw e;
}
}
<span style="color:Blue; public <span style="color:Blue; void CloseThread()
{
<span style="color:Green; //Thread.Sleep(2000);
<span style="color:Green; // close application
Close();
}
<span style="color:Gray; /// <span style="color:Gray; <summary>
<span style="color:Gray; ///<span style="color:Green; Parameter visible from JS
<span style="color:Gray; /// <span style="color:Gray; </summary>
[ComVisible(<span style="color:Blue; true)]
<span style="color:Blue; public <span style="color:Blue; string MyParam
{
<span style="color:Blue; get
{
<span style="color:Blue; return myParam;
}
<span style="color:Blue; set
{
myParam = value;
}
}
[ComVisible(<span style="color:Blue; true)]
<span style="color:Blue; public <span style="color:Blue; void Close()
{
<span style="color:Blue; if(OnClose != <span style="color:Blue; null)
{
OnClose(<span style="color:#A31515; "test http://otherwebsite.com"); <span style="color:Green; //Calling event that will be catched in JS
}
<span style="color:Blue; else
{
MessageBox.Show(<span style="color:#A31515; "No Event Attached"); <span style="color:Green; //If no events are attached send message.
}
}
<span style="color:Gray; /// <span style="color:Gray; <summary>
<span style="color:Gray; ///<span style="color:Green; Register the class as a control and set its CodeBase entry
<span style="color:Gray; /// <span style="color:Gray; </summary>
<span style="color:Gray; /// <span style="color:Gray; <param name="key <span style="color:Green; The registry key of the control</param>
[ComRegisterFunction()]
<span style="color:Blue; public <span style="color:Blue; static <span style="color:Blue; void RegisterClass ( <span style="color:Blue; string key )
{
<span style="color:Green; // Strip off HKEY_CLASSES_ROOT from the passed key as I dont need it
StringBuilder sb = <span style="color:Blue; new StringBuilder ( key ) ;
sb.Replace(<span style="color:#A31515; @"HKEY_CLASSES_ROOT",<span style="color:#A31515; "") ;
<span style="color:Green; // Open the CLSID{guid} key for write access
RegistryKey k = Registry.ClassesRoot.OpenSubKey(sb.ToString(),<span style="color:Blue; true);
<span style="color:Green; // And create the Control key - this allows it to show up in
<span style="color:Green; // the ActiveX control container
RegistryKey ctrl = k.CreateSubKey ( <span style="color:#A31515; "Control" ) ;
ctrl.Close ( ) ;
<span style="color:Green; // Next create the CodeBase entry - needed if not string named and GACced.
RegistryKey inprocServer32 = k.OpenSubKey ( <span style="color:#A31515; "InprocServer32" , <span style="color:Blue; true ) ;
inprocServer32.SetValue ( <span style="color:#A31515; "CodeBase" , Assembly.GetExecutingAssembly().CodeBase ) ;
inprocServer32.Close ( ) ;
<span style="color:Green; // Finally close the main key
k.Close ( ) ;
MessageBox.Show(<span style="color:#A31515; "Registered");
}
<span style="color:Gray; /// <span style="color:Gray; <summary>
<span style="color:Gray; ///<span style="color:Green; Called to unregister the control
<span style="color:Gray; /// <span style="color:Gray; </summary>
<span style="color:Gray; /// <span style="color:Gray; <param name="key <span style="color:Green; Tke registry key</param>
[ComUnregisterFunction()]
<span style="color:Blue; public <span style="color:Blue; static <span style="color:Blue; void UnregisterClass ( <span style="color:Blue; string key )
{
StringBuilder sb = <span style="color:Blue; new StringBuilder ( key ) ;
sb.Replace(<span style="color:#A31515; @"HKEY_CLASSES_ROOT",<span style="color:#A31515; "") ;
<span style="color:Green; // Open HKCRCLSID{guid} for write access
RegistryKey k = Registry.ClassesRoot.OpenSubKey(sb.ToString(),<span style="color:Blue; true);
<span style="color:Green; // Delete the Control key, but dont throw an exception if it does not exist
k.DeleteSubKey ( <span style="color:#A31515; "Control" , <span style="color:Blue; false ) ;
<span style="color:Green; // Next open up InprocServer32
<span style="color:Green; //RegistryKey inprocServer32 =
k.OpenSubKey ( <span style="color:#A31515; "InprocServer32" , <span style="color:Blue; true ) ;
<span style="color:Green; // And delete the CodeBase key, again not throwing if missing
k.DeleteSubKey ( <span style="color:#A31515; "CodeBase" , <span style="color:Blue; false ) ;
<span style="color:Green; // Finally close the main key
k.Close ( ) ;
MessageBox.Show(<span style="color:#A31515; "UnRegistered");
}
}
<span style="color:Gray; /// <span style="color:Gray; <summary>
<span style="color:Gray; ///<span style="color:Green; Event handler for events that will be visible from JavaScript
<span style="color:Gray; /// <span style="color:Gray; </summary>
<span style="color:Blue; public <span style="color:Blue; delegate <span style="color:Blue; void ControlEventHandler(<span style="color:Blue; string redirectUrl);
<span style="color:Gray; /// <span style="color:Gray; <summary>
<span style="color:Gray; ///<span style="color:Green; This interface shows events to javascript
<span style="color:Gray; /// <span style="color:Gray; </summary>
[Guid(<span style="color:#A31515; "68BD4E0D-D7BC-4cf6-BEB7-CAB950161E79")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
<span style="color:Blue; public <span style="color:Blue; interface ControlEvents
{
<span style="color:Green; //Add a DispIdAttribute to any members in the source interface to specify the COM DispId.
[DispId(0x60020001)]
<span style="color:Blue; void OnClose(<span style="color:Blue; string redirectUrl); <span style="color:Green; //This method will be visible from JS
}
}
[/code]
<div style="color:Black;background-color:White; <pre>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<span style="color:Blue; <<span style="color:#A31515; html<span style="color:Blue; >
<span style="color:Blue; <<span style="color:#A31515; head<span style="color:Blue; >
<span style="color:Blue; <<span style="color:#A31515; title<span style="color:Blue; >WebForm1<span style="color:Blue; </<span style="color:#A31515; title<span style="color:Blue; >
<span style="color:Blue; <<span style="color:#A31515; meta <span style="color:Red; name<span style="color:Blue; =<span style="color:Blue; "GENERATOR" <span style="color:Red; Content<span style="color:Blue; =<span style="color:Blue; "Microsoft Visual Studio .NET 7.1"<span style="color:Blue; >
<span style="color:Blue; <<span style="color:#A31515; meta <span style="color:Red; name<span style="color:Blue; =<span style="color:Blue; "CODE_LANGUAGE" <span style="color:Red; Content<span style="color:Blue; =<span style="color:Blue; "C#"<span style="color:Blue; >
<span style="color:Blue; <<span style="color:#A31515; meta <span style="color:Red; name<span style="color:Blue; =<span style="color:Blue; vs_defaultClientScript <span style="color:Red; content<span style="color:Blue; =<span style="color:Blue; "JavaScript"<span style="color:Blue; >
<span style="color:Blue; <<span style="color:#A31515; meta <span style="color:Red; name<span style="color:Blue; =<span style="color:Blue; vs_targetSchema <span style="color:Red; content<span style="color:Blue; =<span style="color:Blue; "http://schemas.microsoft.com/intellisense/ie5"<span style="color:Blue; >
<span style="color:Blue; </<span style="color:#A31515; head<span style="color:Blue; >
<span style="color:Blue; <<span style="color:#A31515; body <span style="color:Red; onload<span style="color:Blue; =<span style="color:Blue; "OpenActiveX()"<span style="color:Blue; >
<span style="color:Green; <!-- Our activeX object -->
<span style="color:Blue; <<span style="color:#A31515; OBJECT <span style="color:Red; id<span style="color:Blue; =<span style="color:Blue; "OurActiveX" <span style="color:Red; name<span style="color:Blue; =<span style="color:Blue; "OurActiveX" <span style="color:Red; classid<span style="color:Blue; =<span style="color:Blue; "clsid:121C3E0E-DC6E-45dc-952B-A6617F0FAA32" <span style="color:Red; VIEWASTEXT <span style="color:Red; codebase<span style="color:Blue; =<span style="color:Blue; "OurActiveX.cab"<span style="color:Blue; ><span style="color:Blue; </<span style="color:#A31515; OBJECT<span style="color:Blue; >
<span style="color:Green; <!-- Attaching to an ActiveX event-->
<span style="color:Green; <!-- <script language="javascript
function OurActiveX::OnClose(redirectionUrl)
{
alert(redirectionUrl);
//window.location = redirectionUrl;
}
</script> -->
<span style="color:Blue; <<span style="color:#A31515; script <span style="color:Red; language<span style="color:Blue; =<span style="color:Blue; "javascript"<span style="color:Blue; >
<span style="color:Green; //Passing parameters to ActiveX object and starting application
<span style="color:Blue; function OpenActiveX()
{
document.OurActiveX.attachEvent(<span style="color:#A31515; OnClose, <span style="color:Blue; function(redirectionUrl) { alert(<span style="color:#A31515; redirct: + redirectionUrl) });
<span style="color:Blue; try
{
document.OurActiveX.MyParam = <span style="color:#A31515; "Hi I am here." <span style="color:Green; //Passing parameter to the ActiveX
document.OurActiveX.Open(); <span style="color:Green; //Running method from activeX
}
<span style="color:Blue; catch(Err)
{
alert(Err.description);
}
}
<span style="color:Blue; </<span style="color:#A31515; script<span style="color:Blue; >
<span style="color:Blue; </<span style="color:#A31515; body<span style="color:Blue; >
<span style="color:Blue; </<span style="color:#A31515; html<span style="color:Blue; >
[/code]
View the full article