CreateActiveXObject (XSIFactory)

Introduced

4.0

Description

Creates and returns an ActiveX object specified by a scripting ProgID for example "XSI.Collection". This method can be useful within the context of NetView based html pages as it can be used to create Automation Object (COM object) such as the "Scripting.FileSystemObject" object without any NetView warning dialogs. It is also more convenient method than having to remember the various different ways of creating activeX objects with other scripting languages such as JScript, Python and PerlScript.

Each scripting language natively supports the ability to create Automation Objects, for example "new ActiveXObject" in JScript. However, when called from Netview, the native methods may result in a warning message being displayed. This is because many ActiveX objects, including objects like "Scripting.FileSystemObject", and "Microsoft.XMLDOM", are not marked as being safe to be part of a web page. However in the context of a Netview page running within XSI these security warnings do not make sense, so this mechanism makes it possible to bypass them.

All XSI Automation objects, such as Application, XSIFactory and XSIMath are marked as safe so this method is not required to create them.

Scripting Syntax

XSIFactory.CreateActiveXObject( ProgID )

C# Syntax

Object XSIFactory.CreateActiveXObject( String Name );

Parameters

Parameter

Type

Description

ProgID

String

Name of the object as a ProgID, in the format "servername.typename". For example "Scripting.FileSystemObject", or "Excel.Sheet".

Return Value

The newly created object

Examples

1. VBScript Example

' 
' This function is a useful tool within Netview Scripts that want to use 
' Automation objects like "Scripting.FileSystemObject"
' 
function SafeCreateObject( in_ProgID )
   on error resume next

   ' First create our ActiveX (which is marked as safe)
   set oXSIFactory = CreateObject( "XSI.Factory" )

   ' Use xsifactory to create the object
   set oOBj = oXSIFactory.CreateActiveXObject( in_ProgID )

   if err.number <> 0 then
       ' Problem might be that user is running an older version of XSI, so try the old
       ' version (this method might pop a ActiveX warning dialog)
       err.Clear
       set oObj = CreateObject( in_ProgID )
   end if

   set SafeCreateObject = oObj

end function

' Example use
set oXML = SafeCreateObject( "Microsoft.XMLDOM" )
oXML.load "c:\info.xml"

2. JScript Example

function getFileSystemObject()
{
   // Avoid the warning dialog that will appear NetView
   // by getting XSI to create the object for us

   var oXSIFactory = new ActiveXObject( 'XSI.Factory' );
   var fso = oXSIFactory.CreateActiveXObject( 'Scripting.FileSystemObject' );
          
   return fso ;
          }

3. Python Example

import win32com.client
my_xsifactory = win32com.client.Dispatch( "XSI.Factory" )
my_fso = my_xsifactory.CreateActiveXObject( "Scripting.FileSystemObject" )
Application.LogMessage( my_fso.FolderExists( 'C:\\temp' ) )

4. PerlScript Example

$xsifactory = Win32::OLE->new( "XSI.Factory" );
$fso = $xsifactory->CreateObject( "Scripting.FileSystemObject" ) ;
$Application->LogMessage( $fso->FolderExists( 'C:\\temp' ) ) ;


SOFTIMAGE|XSI v6.01     

Return to Softimage XSI Index