DOWNLOAD THE CODE:
Download the Code Listing_01.txt

Download the Code Listing_02.txt

Download the Code Listing_03.txt

Step 3: Define and Expose the Object's Methods and Properties
The most delicate step in the process is editing the %TypeLib hash. You use the %TypeLib hash to express the aspects of your implementation that you want to expose to the outside world. What makes this step so delicate is that the %TypeLib hash is a complex data structure. Fortunately, you need to be concerned about only these few implementation aspects:

  • PackageName, the name of the package
  • ControlName, a friendly, possibly more descriptive name for the control
  • ControlVer, the control's version number
  • ProgID, the name you use to create instances of the object in other programming environments
  • DefaultMethod, the control's default method
  • Methods, a hash for each method the control exposes that contains keys describing the method's return type, total number of parameters, number of optional parameters, and parameter type
  • Properties, a hash for each property the control exposes that contains keys describing the property type and whether users can change the property

Listing 2 contains the edited %TypeLib hash. 'SysLog' is the PackageName, 'SysLog Control' is the ControlName, 1 is the ControlVer, 'SysLog' is the ProgID, and 'Write' is the DefaultMethod. Callout B in Listing 2 shows the Write method that the control will use. Notice that you must define the variable types as variants in the Properties section that follows the Write method. In COM and Object Linking and Embedding (OLE) automation, variants are the data types. Variants provide the mechanism for weakly typed programming environments (e.g., ASP, Perl, VBA, and WSH) to appropriately translate data. Table 1 lists the variant data types.

Step 4: Build the .dll File
After you've finished defining and developing your control, you can build it. To invoke the build process, you run PerlCtrl.exe, passing it the control's source and TypeLib filename by typing

C:\Perl\Source\Controls>perlctrl SysLog.pl

The build process first checks the syntax of the source file. If everything is OK, PerlCtrl creates the .dll file, as the following console messages indicate:

SysLog.pl syntax OK
Creating PerlCtrl SysLog.dll...all done.

Step 5: Register the .dll File
As is the case with most ActiveX controls, you must register your control before you can use it. You can use NT's regsvr32.exe utility to complete this task. Run regsvr32.exe, passing it the name of the .dll file to register by typing

C:\Perl\Source\Controls>regsvr32 SysLog.dll

You can get additional help on how to use this utility by running the command without arguments. If the registration succeeds, a message box displays the message DLLRegisterServer in SysLog.dll succeeded.

Step 6: Use the Control
The final step is to use the control. Listing 3, page 196, contains a short WSH VBScript example that uses the SysLog control.

The example script begins by declaring two variables, oSysLog and sProps. Next, the script creates a new SysLog object using CreateObject, which specifies the ProgID you defined in the %TypeLib hash. After creating the object, the script retrieves the object's default properties and displays them using VBScript's MsgBox function. The script then changes the properties and displays them a second time. Finally, the script invokes the object's Write method to enter information in the NT Application Log. When the script is done with the object, it uses VBScript's Nothing keyword to release the object.

Room for Improvement
PerlCtrl's online Help points out several limitations, including the ability to expose only one object per .dll file, the lack of support for automation events, and the lack of AutoComplete support in the VB development environment. According to ActiveState, a future release will address these limitations.

I encountered another obstacle that could potentially limit PerlCtrl's use. In my tests, I was unable to use PerlCtrl components on those machines I didn't install Perl on. I hope that ActiveState will address this limitation in its next version.

I also encourage ActiveState to provide a wizard that people can use to fill in the %TypeLib hash. A wizard would not only minimize programmer error, but also put the PerlCtrl development environment on par with other visual development systems. Providing that ActiveState addresses these limitations, I think PerlCtrl has the potential to elevate Perl to the level of reusable COM-based component software.

New Scripting Newsletter
Windows NT Magazine is launching Win32 Scripting Journal, a 16-page scripting and task-automation newsletter for Windows NT and Win95 system administrators. For more information, visit the Web site at http://www.winntmag.com/ newsletter/scripting.

End of Article

Prev. page     1 [2]     next page -->



You must log on before posting a comment.

If you don't have a username & password, please register now.

 
 

ADS BY GOOGLE