Announcement

Collapse
No announcement yet.

DOS programm starten & steuern

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

  • DOS programm starten & steuern

    Hi,

    Ich habe herausgefunden, dass es ein paar wege gibt wie man aus C#.Net eine Konsolenanwendung zu starten.
    zB.: ApplicationUnderTest(Path, AltPath, Arguments)
    Das ist recht nett, allerdings fehlt dabei die Möglichkeit mit dieser Anwendung dann zu kommunizieren.
    Gibt es da etwas einfaches oder muss man sich mit irgendwelchen low level Methoden helfen?
    Welche wären das?

  • #2
    TCP, UPD, Named Pipes. Der Möglichkeiten sind da viele.

    Wenn du einen Überblick möchtest google einfach nach C# und IPC (InterProcess Communication).

    Comment


    • #3
      Um was für Apps geht es denn überhaupt?
      Einige Apps bieten ein API über das sie gesteuert werden können.

      Für die Konsolenanwendungen die es in Windows gibt, gibt es ein sehr mächtige API (PowerShell und nachfolger) die von einem .NET-Programm sehr gut ansprechbar sind.

      Comment


      • #4
        Es ist eine nicht Standard Anwendung (von Windows).
        In die Anwendung selbst (also den Code) kann ich nicht eingreifen um so IPC ein zu bauen.

        Ich dachte eben daran ob es möglich ist "intern" eine Kommandozeile zu öffnen
        um in dieser das Programm zu starten und wie manuell auf der Konsole eingaben an dies ab zu setzen.
        (sind nicht viele Eingaben: Aufruf des Programms, 2 Einstellungen, Start und Stopp)

        Comment


        • #5
          Schau Dir mal Process.Start() in Zusammenspiel mit ProcessStartInfo an. Speziell das hier http://msdn.microsoft.com/de-de/libr...dardinput.aspx

          Comment


          • #6
            Originally posted by fanderlf View Post
            Schau Dir mal Process.Start() in Zusammenspiel mit ProcessStartInfo an. Speziell das hier http://msdn.microsoft.com/de-de/libr...dardinput.aspx
            HI,

            Also das funktioniert scheinbar recht nett.
            Was ich jetzt aber nicht hinbekomme,
            ist es dann an die Anwendung ein {CTRL} + C zu senden um sie zu beenden.

            Jemand eine Idee wie das geht?
            Hab es als String probiert, als ASCII Zeichen, …

            Comment


            • #7
              Originally posted by TomasH View Post
              Es ist eine nicht Standard Anwendung (von Windows).
              Und welche? Wie schon angemerkt haben diese oft ein API in der PowerShell und Co.

              Comment


              • #8
                Originally posted by TomasH View Post
                Es ist eine nicht Standard Anwendung (von Windows).
                Und welche? Wie schon angemerkt haben diese oft ein API in der PowerShell und Co.

                Comment


                • #9
                  Was ich jetzt aber nicht hinbekomme,
                  ist es dann an die Anwendung ein {CTRL} + C zu senden um sie zu beenden.
                  Process.Kill()

                  Comment


                  • #10
                    Originally posted by Bernhard Geyer View Post
                    Und welche? Wie schon angemerkt haben diese oft ein API in der PowerShell und Co.
                    Naja es ist ja eben NICHT von Windows ... (RecPlyTool.exe)
                    In der Doku habe ich auch nichts von Powershell oder eine extra API gelesen (stehen nur die command line Argumente drin).
                    Außerdem soll es nachher womöglich auch noch bei 2 Anderen CMD-Tools funktionieren …

                    Originally posted by Ralf Jansen View Post
                    Process.Kill()
                    Naja das wäre die Holzhammer-Methode so wie ich das verstehe (forced, oder gibt es im ein „beende dich“ … na schön, wenn du nicht willst dann beende eben ICH dich …).
                    Aber normalerweise wenn man ein CTRL + C sendet, fängt das das Programm,
                    und kümmert sich noch darum dass alle Ressourcen freigegeben werden (Files richtig geschlossen werden, …).
                    Und das hätte ich gerne davor. Habe da noch das CloseMainWindow gefunden, aber das ist so wie ich das gelesen habe nur für GUI Anwendungen,
                    (kann aber auch sein, dass ich das falsch lese)

                    Comment


                    • #11
                      (kann aber auch sein, dass ich das falsch lese)
                      Nein, Konsolenanwendungen kann man nichts senden und sie empfangen auch keine Windowsbotschaften
                      Christian

                      Comment


                      • #12
                        Originally posted by TomasH View Post
                        Naja es ist ja eben NICHT von Windows ... (RecPlyTool.exe)
                        Autsch. Immer diese NICHT-Wörter die man überliest ...

                        Comment


                        • #13
                          Eine einfache Lösung (jenseits von Kill) gibt es nicht. Du könntest dir was mit der GenerateConsoleCtrlEvent API basteln. Das wird aber nicht einfach. Du bräuchtest vermutlich eine 3.te App (Konsole) die deine Konsolenapplikation startet und mit deiner eigentlichen Applikation kommuniziert(IPC). Die 3.te App teilt sich die Konsole mit deiner Konsolenapplikation (Parameter beim CreateProcess). Über die besagte API kannst du dann der Console eine CTRL+C senden das beide Apps beendet.

                          Comment


                          • #14
                            Ich war wegen dem Titel "DOS programm..." ein bissel verwirrt.
                            Es handelt sich ja doch um eine 32-Bit Konsolenanwendung, oder?

                            Comment

                            Working...
                            X