Altova XMLSpy 2024 Professional Edition

COM definiert einen Client, der sich über den Connection Point-Mechanismus als Server für Callbacks registrieren muss. Das Automation Interface für XMLSpy definiert die dafür erforderlichen Event Interfaces. Wie eine Verbindung zu diesen Events hergestellt wird, hängt von der Programmiersprache ab, die Sie auf Ihrem Client verwenden. Im folgenden Codefragment wird gezeigt, wie dies im VBScript erfolgt.

 

Die Methode WScript.ConnectObject dient zum Empfangen von Events.

 

Um diesen Code auszuführen, fügen Sie ihn in eine Datei mit der Erweiterung .vbs ein und doppelklicken Sie entweder in Windows Explorer darauf oder führen Sie die Datei über die Befehlszeile aus.

 

' the event handler function
FunctionDocEvent_OnBeforeCloseDocument(objDocument)
CallWScript.Echo("received event - before closing document")
EndFunction
 
' create or connect to XmlSpy
SetobjWshShell = WScript.CreateObject("WScript.Shell")
SetobjFSO = WScript.CreateObject("Scripting.FileSystemObject")
SetobjSpy = WScript.GetObject("", "XMLSpy.Application")
' If only Authentic is installed (and XMLSpy is not installed) use:
' Set objSpy = WScript.GetObject("", "AuthenticDesktop.Application")
' If only XMLSpy 64-bit is intalled, use:
' Set objSpy = WScript.GetObject("", "XMLSpy_x64.Application")
 
' create document object and connect to its events
objSpy.Visible = True
 
' Find out user's personal folder and locate one of the installed examples.
personalFolder = objWshShell.ExpandEnvironmentStrings("%UserProfile%")
majorVersionYear = objSpy.MajorVersion + 1998
xmlspyExamplesFolder = personalFolder & "\Documents\Altova\XMLSpy" & majorVersionYear  & "\Examples\"
docPath = xmlspyExamplesFolder & "ExpReport.xml"
 
' open a document
SetobjDoc = objSpy.Documents.OpenFile (docPath, False)
CallWScript.ConnectObject(objDoc, "DocEvent_")
 
' keep running while waiting on the event
' in the meantime close the document in XMLSPY manually
CallWScript.Echo ("sleeping for 10 seconds ...")
CallWScript.Sleep (10000)
 
SetobjDoc = Nothing
CallWScript.Echo ("stopped listening for event")
CallobjSpy.Quit

 

 

 

Anmerkung:Für die 32-Bit-Version von XMLSpy ist der registrierte Name oder der programmatische Identifier (ProgId) des COM-Objekts XMLSpy.Application. Für die 64-Bit-Version von XMLSpy ist der Name XMLSpy_x64.Application. Beachten Sie jedoch, dass das aufrufende Programm die CLASSES Registry-Einträge in seiner eigenen Registry Hive oder -Gruppe (32-Bit oder 64-Bit) aufruft. Wenn Sie daher Skripts über die Standardbefehlszeileneingabe und mit Windows Explorer auf einem 64-Bit-Windows-System ausführen, werden die 64-Bit-Registry-Einträge, welche auf die 64-Bit-Version von XMLSpy verweisen, aufgerufen. Wenn daher sowohl XMLSpy 32-Bit als auch die 64-Bit-Version installiert ist, ist eine spezielle Behandlung erforderlich, damit die 32-Bit-Version von XMLSpy aufgerufen wird. Angenommen, der Windows Skripting Host ist das aufrufende Programm, so gehen Sie folgendermaßen vor:

 

1.Wechseln Sie in das Verzeichnis C:\Windows\SysWOW64.

2.Geben Sie in der Befehlszeile wscript.exe gefolgt vom Pfad zum gewünschten Skript ein, z.B:

 

wscript.exe "C:\Users\...\Documents\Altova\StyleVision2024\StyleVisionExamples\API\JScript\start.js"wscript.exe "C:\Users\...\Documents\Altova\XMLSpy2024\Examples\API\JScript\start.js"

© 2017-2023 Altova GmbH