Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Seltsame Probleme beim Start eines externen Programms mit Paramterübergabe aus Catia

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Seltsame Probleme beim Start eines externen Programms mit Paramterübergabe aus Catia (2523 mal gelesen)
joerka
Mitglied


Sehen Sie sich das Profil von joerka an!   Senden Sie eine Private Message an joerka  Schreiben Sie einen Gästebucheintrag für joerka

Beiträge: 2
Registriert: 26.05.2011

erstellt am: 26. Mai. 2011 20:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


Sehen Sie sich das Profil von HoBLila an!   Senden Sie eine Private Message an HoBLila  Schreiben Sie einen Gästebucheintrag für HoBLila

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 27. Mai. 2011 09:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für joerka 10 Unities + Antwort hilfreich

Setz mal die Umgebungsvariable

CNEXTOUTPUT=console

vielleicht zeigt sich dann etwas in der CATIA-Ausgabe.

Bezweifle es aber, mit fällt dazu nur auch nichts ein. :-(

Edit: Vielleicht hilft Dir dieses Thema weiter http://ww3.cad.de/foren/ubb/Forum137/HTML/000815.shtml

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

[Diese Nachricht wurde von HoBLila am 27. Mai. 2011 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

joerka
Mitglied


Sehen Sie sich das Profil von joerka an!   Senden Sie eine Private Message an joerka  Schreiben Sie einen Gästebucheintrag für joerka

Beiträge: 2
Registriert: 26.05.2011

erstellt am: 30. Mai. 2011 09:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Jetzt hab ichs herausbekommen, worans lag! Vielleicht hilfts mal wem anderem weiter:
Das Problem lag daran, dass für die erfolgreiche Ausführung von meinem Programm (vielleicht auch noch von anderen) nicht nur die .exe gestartet werden muss, sondern in dem Funktionsaufruf auch noch das Arbeitsverzeichnis mitangegeben werden musste, also:

Code:
ShellExecute 0, "open", "C:\Verzeichnis\test.exe", "Parameter", "C:\Verzeichnis", StartMode

Die zweite Angabe des Verzeichnisses ist dann das Ausführungs-/Arbeitsverzeichnis.
Das war also gar kein Catia VBA Problem, sondern ein allgemeines Problem in VBA.

Probleme gabs bei mir deshalb, weil man in einigen der anderen "Starte externes Programm"-Befehlen eben gar kein Ausführungsverzeichnis angeben konnte, also bei

Code:
StartExternStatus = CATIA.SystemService.ExecuteBackgroundProcessus("C:\Verzeichnis\test.exe")
gehts dann natürlich nicht, bei
Code:
Dim ID As Variant: ID = Shell.Run("C:\Verzeichnis\test.exe")


logischerweise ebenfalls nicht... Deshalb man braucht dann wirklich den ShellExecute Befehl und das wusste ich eben nicht.
Hoffentlich konnte ich damit irgendwem mal weiterhelfen  .
lg, joerka

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ballazolo
Mitglied
Entwicklungsengineure


Sehen Sie sich das Profil von ballazolo an!   Senden Sie eine Private Message an ballazolo  Schreiben Sie einen Gästebucheintrag für ballazolo

Beiträge: 36
Registriert: 20.08.2013

HP Z420
Intel(R), Xeon(R), CPU E5-1620, 3,60 GHz
Arbeitsspeicher: 16GB

erstellt am: 30. Mrz. 2021 12:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für joerka 10 Unities + Antwort hilfreich

Hallo Joerka,
danke für die Mitteilung der Lösung. es hat mir gerade viel geholfen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz