Announcement

Collapse
No announcement yet.

Problem bei Ausführung externes Programm

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem bei Ausführung externes Programm

    Hallo, ich habe ein Problem mit der Ausführung eines externen Programmes.
    Das Programm, das ich mit meinem Formular öffnen will, erstellt automatisch eine .txt Datei. Mit dieser Datei muss ich auch weiterarbeiten.
    Immer wenn ich das Programm starte (aus dem Explorer, Shell usw.) tut er das auch (.txt Datei erstellen). Aber nicht wenn ich von meinem Programmformular die .exe starte. Da läuft das Programm zwar auch wunderbar, aber erstellt halt eben keine .txt, wie es das Programm normalerweise immer tut.
    Woran liegt das??
    An dem externen Programm kann es doch nicht liegen, wenn es überall läuft, außer wenn ich es von meinem Formular aus starte.
    Hier ist mal der Code, den ich habe um das externe Programm zu starten und zu beenden:
    Code:
            Dim oProcess As Process
    
            '.exe Starten
            oProcess = System.Diagnostics.Process.Start("C:\Programmname.exe")
    
    If oProcess.WaitForExit(100) = False Then
    
                oProcess.Kill()
    
    MsgBox(“Anwendung wurde vom Programm beendet!”)
    
            Else
                MsgBox("Anwendung wurde beendet")
            End If
    Bin echt am Verzweifeln!!!
    Würde mich über jede Hilfe freuen!!!


    Liebe Grüße

  • #2
    Wo wird die Datei erstellt? Direkt unter C:\ Und hast du als OS Windows Vista oder neuer?

    Comment


    • #3
      Ich habe es unter C:\ gespeichert und ich habe Windows Vista.... Ist das ein Problem?

      Comment


      • #4
        Originally posted by Angelika_25 View Post
        Ich habe es unter C:\ gespeichert und ich habe Windows Vista.... Ist das ein Problem?
        Unter C:\ darfst du nix mehr (bei aktiven UAC) speichern. Je nach App (entsprechendes Vista-Manifest) wird das Anlegen verhindert oder per Virtualisierten Dateisystem woanders erzeugt und virtuell eingeblent.

        Siehe auch Wiki-Artikel

        Comment


        • #5
          Mmh, schade. Ich habe es jetzt in D: gelegt und da geht es leider auch nicht. Das Programm erstellt nicht wie üblich eine .txt Datei. Ich flipp gleich aus....................

          Comment


          • #6
            Also ich hab jetzt zusätzlich noch eine .bat Datei geschrieben, die das Programm aufruft. Ich rufe jetzt also die .bat Datei mit meinem Formular auf und diese öffnet dann sofort das externe Programm. So erstellt das externe Programm die .txt Datei. Warum auch immer....

            Nur habe ich jetzt ein anderes Problem. Ich kann jetzt nicht mehr das Programm schließen...

            Ich habe jetzt folgenden Code:
            Code:
            'Deklaration
                    Dim oProcess As Process
             
             
                    '.exe Starten
                    oProcess = System.Diagnostics.Process.Start("C:\test.bat")
             
             
             
                    If oProcess.WaitForExit(100) = False Then
             
                    oProcess.Kill()
            MsgBox("Programm wurde geschlossen!")
             
             
                    Else
                    MsgBox("Anwendung wurde beendet")
                    End If
            Durch die test.bat wird ja das externe Programm aufgerufen.
            Wenn ich nur die .bat beende, beendet sich ja nicht das externe Programm.
            Aber wie kriege ich das jetzt nur zum Beenden?

            Liebe Grüße

            Comment


            • #7
              Hi,

              da ich deine Lösung mit der .bat für sehr unsauber halte mal die Frage hast du zugriff auf den Source code der .exe Datei welche die .txt erstellt den wenn ja baue doch mal ein Try Except um das erstellen den da muss ja irgend ein Fehler oder ähnliches auflaufen den normalerweise sollte das Problem los funktionieren

              und falls dir das zu umständlich ist und die Lösung mit deiner .bat Datei gut findest ("Stehe zu dein Fehlern") kannst du dir natürrlich anhand des .exes Namens den Process von deiner Anwendung hollen und den genauso killen wie deine .bat

              Comment


              • #8
                Ich selbst finde die Lösung auch nicht toll, viel zu umständlich wie du schon sagst. Ich habe aber keinerlei Zugriff auf den Sourcecode dieses Programmes. Wie müsste ich denn, in dem letzten geposteten Code, den Code verändern, damit ich das Programm schließen kann?

                Ich habe glaub ich schon alles ausprobiert, aber nichts funktioniert! Wie als streikt das Programm!

                Comment


                • #9
                  Hallo ,

                  mit

                  Code:
                  System.Diagnostics.Process.GetProcessesByName(processname)
                  kannst du den Process Catchen und dann dementsprechend killen.

                  Comment


                  • #10
                    Wo soll ich diese Zeile hinsetzen? Anstatt von was?
                    Ich habe diese Zeile mal unter meinen Kill-Befehl gesetzt und er unterstreicht mir dabei den Projektnamen, er sagt, der Name xyz wurde nicht deklariert.
                    Was nun?

                    Comment


                    • #11
                      Hallo, da die Textdatei offenbar nicht erstellt wird, wäre ich mir nicht mal 100% sicher, ob die exe korrekt aufgerufen wird. daher würde ich mal eine mini-exe erstellen, die ein paar Infos in ein 100% offenes Verzeichnis schreibt. Damit kannst du zumindest testen, wie das aktuelle Working-Directory ist. Unklar ist auch, warum denn der Kill erforderlich sein soll, bei korrektem Abschluss sollte die Datei ja erzeugt worden sein. Kann es sein, dass beim Aufruf ein Parameter fehlt und das Programm eine Benutzereingabe erwartet?

                      Comment

                      Working...
                      X