Hauptprocess killen



  • Hillllllffffffffffffffeeeeeeeeeeeeeeeeee!

    Der Prozess wird doch nicht beendet!!! 😡

    Ich weiß echt nicht mehr weiter.
    Ich möchte mein Programm beenden und wieder neu starten.

    CString strPath = GetCommandLine(); // Pfad + Name der Exe holen  
    strPath.Delete(0, strPath.ReverseFind( '\\') +1); // letztes '\' finden  
    strPath.Remove('"'); 
    strPath.TrimLeft(); 				
    m_bDestroy = TRUE;     
    ShellExecute(0,0, strPath, 0, 0, SW_NORMAL); 
    this->SendMessage(WM_CLOSE, 0, 0);
    

    Das funktioniert optisch ja auch. Leider bleibt der Prozess im Taskmanager immer noch offen. 😞
    Wie kann man sowas abstellen?
    Bitte helft mir. Ich verzweifel langsam.



  • Servus,

    mhmm ich glaube da muss jemand ran der hier mehr Hintergrundwissen hat *g*. Ne aber komisch ist das trotzdem. Ich würde dann mal sagen dein Prog beendet sich nicht richtig bzw. nicht sauber.

    Wenn ich den kram aufrufe wird mein Prog geschlossen und gleichzeitig wieder neu aufgerufen. Das dann der selber Name im Taskmanager einmal auftaucht ist doch dann klar *g*.

    Liest du irgendwelche großen Daten ein? oder schreibst du in Arrays die richtig groß werden? In dem Fall brauch der natürlich was länger bis er sich beendet hat.

    *winke*
    Hellsgore



  • Hellsgore schrieb:

    Wenn ich den kram aufrufe wird mein Prog geschlossen und gleichzeitig wieder neu aufgerufen. Das dann der selber Name im Taskmanager einmal auftaucht ist doch dann klar *g*.

    Sicher ist das klar *g*. Aber mein Prog steht dann zweimal im Taskmanager. 😞
    Ich lasse übrigens einen Stream in meinem Prog laufen.
    Aber alle Pointer setze ich auf NULL. Es ist zum verzweifeln.

    Gibt es ne Möglichkeit, ein Programm im Taskmanager zu killen?
    Manuell geht es ja auch. Ich hab nur keine Ahnung wie ich darauf zugreifen kann.



  • warum willste das denn Killen wenn er nicht mal richtig beendet wurde? Machste denn auch ordentlich die Dateien oder Datenbanken zu?

    Warum willst du überhaupt dein Programm neustarten????

    *winke*
    Hellsgore



  • Also, ich sende (wie eben geschrieben) einen Stream zu einem Media Server.
    Wenn meine Funktion festgestellt hat dass dieser Stream unterbrochen wurde, läßt sich der Stream nicht neustarten. Ich habe auch schon komplett neue Pointer auf den Encoder ausprobiert, aber es klappt nicht. Wenn mein Programm einen Neustart hat, funktioniert es. Allerdings nur, wenn ich das Programm im Taskmanager richtig gekillt habe. Ich vermute das es mit diesem Problem zusammen hängt http://www.c-plusplus.net/forum/viewtopic.php?t=63205,
    aber bisher konnte mir noch keiner dabei helfen. Wenn das gelöst ist, dürfte mein Programm komplett fertig sein.



  • Hi

    beim IE klappts nur wenn du PostMessage anstatt SendMessage verwendest 🙂

    Grüße Rapha



  • Rapha schrieb:

    beim IE klappts nur wenn du PostMessage anstatt SendMessage verwendest 🙂

    Ne klappt leider net. Es bleibt das gleiche. Programm ist zweimal geöffnet.



  • Servus,

    machen wir es mal anders.
    Starte mal nicht dein Programm beim zweiten Durchlauf und beende das erste wenn "wasweissich" passiert. Beende es einfach mal mit z.B. CDialog::OnCancel() und dann gucke mal ob das Programm eigentlich sauber beendet wird. Das glaube ich nämlich zum verrecken nicht.

    *winke*
    Hellsgore

    PS: Ansonsten wenns geht poste mal die Stelle an der er abnippelt.



  • Ich habe mir das gerade mal durchgesehen und nicht ganz genau verfolgt will ich gestehen, aber warum machst du nicht einfach nachdem Du alles aufgeräumt hast nen exit();?

    Dann sollte der doch weg sein.



  • exit();
    ist der Hammer, den ich die ganze Zeit gesucht habe.
    Danke.
    Somit läuft mein Programm jetzt. 🙂
    Leider ist es noch nicht ganz das non + ultra 🙄

    Könntet ihr vieleicht mal hierauf einen Blick werfen?
    http://www.c-plusplus.net/forum/viewtopic.php?t=63205
    Sowas muß man doch sauber trennen können, oder?


Anmelden zum Antworten