Announcement

Collapse
No announcement yet.

Externes programm starten und wieder beenden

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

  • Externes programm starten und wieder beenden

    Ich wollte mal wissen wie ich in Borland c++ eine externe *.exe starten kann, die ich auch wieder beenden kann(beides mit einem programm das ich in borland erstellen will).

    ich hab zwar schon überall gesucht aber da ich mich noch net so gut mit c++ auskenn versteh ich das was ich gefunden ha einfach nicht

    währe nett von euch wenn ihr mir ein beispiel mit erklärung geben könntet

    MFG
    Pascal

  • #2
    Hallo Pascal,

    um ein Programm nur zu starten kann man ShellExecute() verwenden. Wenn du mehr Kontrolle brauchst, mußt Du CreateProcess() verwenden.

    Beispiel gibt's hier: http://www.bcbdev.com/faqs/faq71.htm

    Grüße Joche

    Comment


    • #3
      Danke

      Aber ich weis immer noch net wie ich das Prog beenden kann nachdem ich es gestartet hab

      währe net wenn das mir auch einer sagen könnte

      MFG

      Pasca

      Comment


      • #4
        Mit SendMessage ein WM_CLOSE sende
        Christian

        Comment


        • #5
          Ich hab eine Bitte an euch

          Ich will ein Prog schreiben das anstatt der explorer.exe gestartet wir und wenn ich einen button anklick soll die explorer.exe starten und wenn ich einen anderen anklicke soll sie wieder geschlossen werden. (ich mein nicht den explorer sondern die taskleiste und den desktop)

          wenn ich aber mit dem material das ihr mir gegen hab ein Prog mach dann kommt eine fehler meldung und das prog stürzt ab.

          hier der sourcecode:
          <PRE>PROCESS_INFORMATION ProcInfo; //struktur zum empfangen der prozess-daten
          HANDLE hProc; //Temporaervariable zum speichern des Prozess Handles
          CreateProcess("myapp.exe", "", NULL, NULL, false, 0, NULL, NULL, NULL, &ProcInfo); //Prozess starten
          hProc = OpenProcess(PROCESS_TERMINATE, false, ProcInfo.dwProcessId); //Handle des Prozesses aus der ProzessID abfragen und berechtigungen anfordern
          TerminateProcess(hProc, -1); //Prozess mit rückgabecode -1 abschießen.
          </PRE&gt

          Comment


          • #6
            ich nutze CreateProcess so:
            <pre>
            String rt;
            STARTUPINFO si;
            PROCESS_INFORMATION pi;
            memset(&si,0,sizeof(STARTUPINFO));
            si.cb=sizeof(STARTUPINFO);
            si.dwFlags=STARTF_USESHOWWINDOW;
            si.wShowWindow=SW_SHOW;
            rt="filepaster.exe";
            if(!CreateProcess(NULL,rt.c_str(),NULL,NULL,false, 0,0,0,&si,&pi))
            {
            Application->MessageBox("Fehler beim Aufruf vom Programm","Programm",MB_APPLMODAL|MB_ICONSTOP|MB_O K);
            return;
            }
            WaitForSingleObject(pi.hProcess,INFINITE);
            CloseHandle(pi.hThread);
            </pre>

            Nach meiner WIN32 API darf STARTUPINFO (der vorletzte Parameter) nicht leer sein. Im obigen Beispiel wird mit WAITFOR.. gewartet, bis der Prozess sich selbst beendet hat. Auch bekommst du die Processinformationen in der Adresse pi (in meinem Programm) zurück. Nach meinem Vorschlag müsstet du jetzt mit einem anderen Button ein SendMessage mit WM_CLOSE mache
            Christian

            Comment

            Working...
            X