Mit Hilfe von WMI-Scripting lassen sich die Prozessdaten zu allen mit CATStart geöffneten Catia-Sitzungen auslesen.
Bas-Modul hier. Den Code in ein VBA-Modul kopieren.
Das Ergebnis sieht so aus:
Nachfolgend der Code:
Sub CATMain()
Dim Process As Object
Dim arrArgs() As String
Dim strTmp As String
Dim n As Integer
Dim strEnv As String
Dim strEnvDir As String
Dim strDummy As String
'use wmi-scripting to find all processes where caption is 'CATStart'; read all process info
'check https://msdn.microsoft.com/de-de/library/ms974579.aspx#ID0ESC for more info
For Each Process In GetObject("winmgmts:").ExecQuery("Select * from Win32_Process where caption='CATSTART.EXE'")
strDummy = Replace(Process.CommandLine, Chr(34), Chr(32)) 'get rid of ' " '
arrArgs = Split(strDummy, "-") 'split commandline into single parms
For n = 0 To UBound(arrArgs)
strTmp = strTmp & vbCrLf & "Arg " & CStr(n) & ": " & arrArgs(n)
If InStr(arrArgs(n), "direnv") Then 'find environ dir
strEnvDir = Trim(Right(arrArgs(n), Len(arrArgs(n)) - Len("direnv")))
ElseIf InStr(arrArgs(n), "env") Then 'find environ file
strEnv = Trim(Right(arrArgs(n), Len(arrArgs(n)) - Len("env"))) 'trim the blanks
End If
Next
MsgBox "Process caption: " & Process.Caption & vbCrLf _
& "Process command line arguments: " & strTmp & vbCrLf & vbCrLf _
& "Environment: " & strEnv & vbCrLf _
& "Environment Dir: " & strEnvDir & vbCrLf _
& "Process handle: " & Process.Handle & vbCrLf _
& "Creation date: " & Left(Process.creationdate, 8) & vbCrLf _
& "Creation time: " & Mid(Process.creationdate, 9, 6), _
vbOKOnly Or vbInformation, "Catia V5 Process Information"
strTmp = ""
Next
If strDummy = "" Then 'no commandline(no catstart;no parms)
MsgBox "CATSTART.exe not found" & vbCrLf _
& "No environment detected.", _
vbOKOnly Or vbCritical, "Get Catia Command Line Arguments"
End If
End Sub