v4.0
ProgID のスクリプトによって指定された ActiveX オブジェクトを作成して戻します(例:"XSI.Collection")。このメソッドは、NetView ベースの HTML ページのコンテキスト内で使用すると便利です。"Scripting.FileSystemObject"オブジェクトのようなオートメーションオブジェクト(COm オブジェクト)を作成する場合に NetView の警告ダイアログが表示されません。また、他のスクリプト言語(JScript、Python、PerlScript など)を使用して ActiveX オブジェクトを作成するさまざまな方法を覚えるよりも、このメソッドを使う方が便利です。
各種スクリプト言語では、オートメーションオブジェクトを作成する機能がサポートされています(たとえばJScript の"new ActiveXObject"など)。ただし、Netview から呼び出すと、ネイティブメソッドでは警告メッセージが表示されてしまいます。これは、多くの ActiveX オブジェクト("Scripting.FileSystemObject"や"Microsoft.XMLDOM"などのオブジェクト)が Web ページに含まれると問題が生じる可能性があると判断されるためです。ただし、Softimage で Netviewページを実行するうえでは、これらのセキュリティに関する警告は意味をなさないため、このメカニズムを用いて警告を省略することができます。
Softimage のオートメーションオブジェクト(Application、XSIFactory、XSIMath など)はすべて安全と判断されるため、作成時にこのメソッドを使用する必要はありません。
Object XSIFactory.CreateActiveXObject( String Name ); |
oReturn = XSIFactory.CreateActiveXObject( ProgID ); |
新しく作成されたオブジェクト
パラメータ | タイプ | 説明 |
---|---|---|
ProgID | String | ProgID としてのオブジェクトの名前("servername.typename")。たとえば、"Scripting.FileSystemObject"や"Excel.Sheet"となります。 |
' ' 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" |
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 ; } |
import win32com.client my_xsifactory = win32com.client.Dispatch( "XSI.Factory" ) my_fso = my_xsifactory.CreateActiveXObject( "Scripting.FileSystemObject" ) Application.LogMessage( my_fso.FolderExists( 'C:\\temp' ) ) |