XSIFactory.CreateActiveXObject

Introduced

v4.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 Softimage these security warnings do not make sense, so this mechanism makes it possible to bypass them.

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

C# Syntax

Object XSIFactory.CreateActiveXObject( String Name );

Scripting Syntax

oReturn = XSIFactory.CreateActiveXObject( ProgID );

Return Value

The newly created object

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".

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 Softimage, 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 Softimage 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' ) )