Published: 20 Apr 2007
By:
An ActiveX control is an object that supports a customizable programmatic interface. Using the methods, events and properties exposed by the control, web developers can automate their web pages to give the functionality which is equivalent to that of a desktop application.
Introduction
As web application developers, we want to give our users a highly functional application. We want to provide our users with functionality like printing streams, local socket programming ,local threading, cross domain scripting etc., but as we know that due to the disconnected architecture of the Internet and security restrictions of any standard browser, this task becomes difficult. That's when the ActiveX
comes to the rescue. This is mostly for web applications where the users would not be apprehensive about doing a one time installation of the component. Also, in an intranet application these components can be a big boost to the functionality of the application.
Writing ActiveX Class in C#
We will first write an interface called ASignatures
which holds the signatures of the methods and properties. These methods and properties can then be accessed via JavaScript at the browser level. By default all members of an interface
are abstract
and public
. The main ActiveX
class AClass
will inherit from this interface
. Above the main ActiveX
class we will mention the ClassInterfaceType
as AutoDual
. This will indicate the type of the interface
generated for the main class which will automatically be generated and exposed to the COM
. Normally AutoDual
is not recommended because it has some versioning limitations. We will use the ClassIntrefaceType
as AutoDual
because the purpose of this code is instructional. In the main class we will write two methods FName()
, and SName()
and one property Age
. In our example we will return the basic datatypes
but this can be implemented for complex datatypes
too.
using System;
using System.Runtime.InteropServices;
namespace ANamespace
{
public interface ASignatures
{
string FName();
string SName();
int Age { get;}
}
[ClassInterface(ClassInterfaceType.AutoDual)]
public class AClass :ASignatures
{
public string FName()
{
return "Imran";
}
public string SName()
{
return "Nathani";
}
public int Age
{
get { return 24; }
}
}
}
Compiling the ActiveX control
For those who do not know how to compile out of Visual Studio IDE, you need to search for the c#
compilercsc.exe
in the folder:
Place your AClass.cs file in the folder where the csc.exe exists. Then by command (DOS) interface go to that particular folder and execute the following command:
csc /t:library AClass.cs
Registering the Assembly with the client
You can register the assembly in multiple ways of implementation and it mostly depends on the target users. For example, creating a setup file for download or having a self extractor file which could prompt in the browser, depends totally on the functionality requirement. However for our example we would register the assembly by using the command prompt which is the easiest and could be done by a batch file too. Therefore, in same folder as above immediately after the compilation step we execute the following command:
regasm AClass.dll /tlb /codebase
Also we must note that the .NET Framework needs to be installed on the client for registration and working.
Using the ActiveX control
We can then access our newly created ActiveX
control via JavaScript. We will simply display the data returned by the methods and property in alert boxes. The below code demonstrates how we can access the properties in the ActiveX
control.
This will work like a charm in Internet Explorer but may need an API plugin for other browsers like FireFox or Safari.
Summary
In this article you have seen how we can increase the functionality of our web application by implementation of ActiveX
controls in C#
. The practical applications of ActiveX
are limitless especially for graphics and multimedia.
No comments:
Post a Comment