Hey Leute,
ich hab hier ein sehr spezielles Problem, habe zumindest bei meiner Suche keine anderen damit gefunden… Und zwar programmiere ich gerade an einem CatVBA, das u.a. auch eine externe (von mir geschriebene) .exe mit Parametern aufrufen soll, also z.B. „C:\test.exe 0 0 0 15 15 15 …“. Mein Programm hat seine Ausgabe einfach über Kommandozeile, es öffnet sich also immer das Kommandozeilenfenster (wird ab jetzt einfach schwarzes Fenster genannt
) und meldet entweder, dass er keine Parameter hat (wenn ohne oder mit zu wenig gestartet wurde), oder berechnet eben los und zeigt andauernd den aktualisierten Status an. Andere Fälle gibt es beim direkten Start aus Windows heraus nicht bzw. sind mir nie begegnet, auch aus dem Start aus Autodesk 3dsMax (Grafiksoftware) hat die letzten Monate damit alles ohne Probleme funktioniert.
Jetzt habe ich schon ausführlich rumprobiert, aber da passt irgendwie überhaupt nichts zusammen:
1. Über bla = CATIA. SystemService.ExecuteBackgroundProcessus(“C:\test.exe”) wird das Programm zwar gestartet, aber ohne irgend etwas anzuzeigen, es kommt ein leeres schwarzes Fenster (statt in dem schwarzen Fenster = Kommandozeilenfenster zu meckern, dass er keine Parameter bekommen hat). Wenn ich über diesen Befehl nun eine .bat Datei öffne, die einfach nur die .exe starten soll, funktioniert das nur, wenn in der .bat Datei der absolute Pfad zur Datei angegeben ist, ein relativer (also einfach „\test.exe“) funktioniert über den Execute… Befehl nicht (über direkte Windows Ausführung aber schon).
2. Ich habs dann mal mit
Dim Shell As Object
Set Shell = CreateObject("WScript.Shell")
Dim ID As Variant: ID = Shell.Run("C:\test.exe”)
probiert, da gibt er korrekt die Fehlermeldung aus, wenn ichs ohne Parameter starte (also schonmal besser als der obere Start über ExecuteBackgroundProcessus), wenn ichs aber mit Parametern starte, kommt wieder dieses ominöse leere Fenster. Jetzt habe ich mir zum testen noch eine Bat-Datei angelegt, die meine exe mit Parametern startet. Wenn ich diese nun direkt in Windows starte, funktioniert auch alles wie gedacht. Sobald ich diese nun aber über Catia starte, kommt wieder das schwarze/leere Fenster!
3. Dann habe ichs mit
Dim sh2, oFSO
Set sh2 = CreateObject("WScript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim envVars
Set envVars = sh2.Environment("PROCESS")
envVars("JT_CGR_ENABLED") = "1"
Dim z
Dim String1 As String
String1 = "25 25 25 50 25 25 -4933.25 -3430.48 880.176 -4459.52 -3584.4 923.754 -4802.57 -3071.22 1510.73 -4538.33 -3478.1 1631.69 0 25 25 25 25 25"
z = sh2.Run("C:\test.exe ", 1, True)
probiert, hier ähnliches Ergebnis wie beim Shell.Run Befehl – die exe ohne Parameter gestartet funktioniert, mit Parametern kommt nur das schwarze leere Fenster. (also mit Parameter wäre der Aufruf dann „C:\test.exe “ & String1, 1, True)
4. Weitere Beobachtungen:
Das normale schwarze Fenster schließt sich automatisch nach einigen Sekunden, wenn es keine Parameter bekommt (und meldet davor eben noch, dass es welche benötigt). Das schwarze leere Fenster schließt sich ebenfalls nach einigen Sekunden (allerdings nach einer längeren Zeit), als ob es keine Parameter bekommen hätte, meldet aber garnichts.
Gleichzeitig, und das passt jetzt wirklich nicht mehr zusammen, verbraucht das Fehlermeldungsfenster keine CPU-Last. Das funktionierende Fenster (indem dann live der Status sich verändert) braucht dauerhaft 50% CPU. Das leere Fenster verbraucht die ersten Sekunden 50% CPU, als ob es rechnen würde, geht dann aber runter auf 0 und schließt sich anschließend. Es wurde aber nichts berechnet, denn in den Ergebnistextdateien hat sich nichts verändert.
Jetzt könnte man ja denken, dass an meinem externen Programm irgendwas nicht funktioniert, aber solange man es direkt oder per Bat-Dateien oder per Verknüpfung aus Windows aufruft, funktionierts ja ohne Probleme! D.h. es muss von Catia aus irgendwelche Dinge geben, die den korrekten Funktionsablauf behindern, ja sogar nach dem (eigentlich ja externen Start) über eine externe Bat Datei den Ablauf verhindern.
Ich weiß, dass das hier extrem seltsam klingt, das wundert mich auch schon massiv, aber nachdem ich mich jetzt den gesamten Nachmittag damit rumgeschlagen habe, hat vielleicht wer von euch eine Idee… Freu mich auf eure Antworten
Lg, joerka
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP