The JScript listing below shows how to open documents, set a document as the active document, iterate through the open documents, and generate C++ code.
// Initialize application's COM object. This will start a new instance of the application and // return its main COM object. Depending on COM settings, a the main COM object of an already // running application might be returned. try { objMapForce = WScript.GetObject("", "MapForce.Application"); } catch(err) {} if( typeof( objMapForce ) == "undefined" ) { try { objMapForce = WScript.GetObject("", "MapForce_x64.Application") } catch(err) { WScript.Echo( "Can't access or create MapForce.Application" ); WScript.Quit(); } } // if newly started, the application will start without its UI visible. Set it to visible. objMapForce.Visible = true; // **************************** code snippet for "Simple Document Access" ************************ // Locate examples via USERPROFILE shell variable. The path needs to be adapted to major release versions. objWshShell = WScript.CreateObject("WScript.Shell"); majorVersionYear = objMapForce.MajorVersion + 1998 strExampleFolder = objWshShell.ExpandEnvironmentStrings("%USERPROFILE%") + "\\Documents\\Altova\\MapForce" + majorVersionYear + "\\MapForceExamples\\"; objMapForce.Documents.OpenDocument(strExampleFolder + "CompletePO.mfd"); //objMapForce.Documents.OpenDocument(strExampleFolder + "Altova_Hierarchical_DB.mfd"); objMapForce.Documents.NewDocument(); // **************************** code snippet for "Simple Document Access" ************************ // **************************** code snippet for "Iteration" ************************************ objText = ""; // go through all open documents using a JScript Enumerator and generate c++ code for (var iterDocs = new Enumerator(objMapForce.Documents); !iterDocs.atEnd(); iterDocs.moveNext()) { objText += "Generated c++ code result for document " + iterDocs.item().Name + " :\n"; objErrorMarkers = iterDocs.item().generateCodeEx(1); // ENUMProgrammingLanguage.eCpp = 1 bSuccess = true; for (var iterErrorMarkers = new Enumerator(objErrorMarkers); !iterErrorMarkers.atEnd(); iterErrorMarkers.moveNext()) { bSuccess = false; objText += "\t" + iterErrorMarkers.item().Text + "\n"; } if (bSuccess) objText += "\tCode generation completed successfully.\n"; objText += "\n"; } WScript.Echo(objText); // go through all open documents using index-based access to the document collection for (i = objMapForce.Documents.Count; i > 0; i--) objMapForce.Documents.Item(i).Close(); // **************************** code snippet for "Iteration" ************************************ //objMapForce.Visible = false; // will shutdown application if it has no more COM connections objMapForce.Visible = true; // will keep application running with UI visible |
The code listed above is available as a sample file (see JScript Examples). To run the script, start it from a command prompt window or from Windows Explorer.