CloseHandle ... Fehler meinerseits? Prozess lebt weiter
-
Ja ich habe WM_CLOSE auch ausprobiert, allerdings ohne die Erolgsabfrage..
Martin Richter schrieb:
Ich kann es nicht mehr sehen:
Super...
Also:
Du hast schon öfter geantwortet, dafür bin ich dankbar, aber ich Zitiere mal deinen Schulss vom PostMartin Richter schrieb:
Der richtige Weg ist und bleibt es das/alle Main Window(s) zu zerstören und entsprechend dann (im WM_DESTROY Handler) PostQuitMessage (AfxPostQuitMessage) auszuführen.
Super, was meinst du mit "(im WM_DESTROY Handler)"...
Ich bin nicht sooo der gieg im C-Programmieren,
könntest du dass nochmal ausführen,
evtl mit psoydo -schreibt man dass so?- Code.Ich erwarte von dir KEINEN fertigen Code, bitte, ich will ja auch irgendwo lernen

Eventuell nochmal ein part zur kreation dess Prozesses:
if( CreateProcess( NULL, name, NULL, NULL, FALSE, 0, NULL, NULL, &startUpInfo, &processInfo ) ) { WriteToLog( "Wait for complete start:" ); WriteToLog( "Complete start successfull." ); } else { WriteErrorToLog( GetLastError() ); error = 1; }Also weis ichnicht was du mit Fenster meinst oder so....
-
Evtl. interessant:
http://msdn.microsoft.com/msdnmag/issues/02/07/CQA/
-
Interessant bestimmt, aber nur in C++,
ich programmiere C
-
Aus einem fremden Programm heraus bleibt einem nur WM_CLOSE an das Main-Window zu posten.
Der Artikel, den ich schreib bezog sich nicht auf den Versuch von Extern ein Programm mit WM_QUIT zu schließen, was aber genau so verboten gehört wie der Versuch es von intern zu machen.
-
Ja ich habe es aber nicht mit WM_CLOSE geschaft den Prozess zu beenden, hast du da noch einen Tipp -du scheinst ja mächtig ahnung zu haben.-...
-
Dann geht es eben nicht, oder Du sendest an das falsche Fenster...
Nur mal als Beispiel: Sollte die Anwendung auf Empfang einer WM_CLOSE Nachricht eine MessagBox anzeigen mit der Frage "Änderungen speichern (j/n)", dann siehst Du alt aus.
Man kann nicht jeden Prozess von außen regulär Beenden, wenn man keine Kontrolle über dessen User-Interface hat und nicht genau weiß was der Prozess will wenn WM_CLOSE gesendet wird...
So ist das nunmal.
-
lippoliv schrieb:
Interessant bestimmt, aber nur in C++,
ich programmiere CIst doch lediglich als Klasse gekapselt?
-
C hat ja keine klassen, dass ist dass Problem.
@Martin,
Dieser Prozess zeigt eigentlich nur eine MessageBox an, und zwar genau dann, wenn eine Nachricht über einen Port kommt,
ansonsten is nix los...
Er wird auch kein anderes Fenster anzeigen...
Muss in diesem Prozess irgendwo eine "Listen"-funktion für eingehende Messages sein?
-
Wenn dieser Prozess nur eine MessageBox anzeigt und dann beendet. Dann müsstest Du wenn Du an das richtige Fenster WM_CLOSE sendest, das Programm auch Beenden können.
Ich frage mich aber gerade warum Du diesen ganzen Aufstand machst.
Erst wolltest Du einen Prozess aus einem Service starten, bzw. eine MessageBox anzeigen und nun wieder schließen.
Was soll dieser gaze Krampf?
-
Der Prozess soll mit dem Dienst beendet werden.
Nebenbei bemerkt wird jetzt aus dem Serverprogramm für jede MessageBox quasi eine neue *.exe gestartet, die dann eine MessageBox anzeigt, damit dass Server-Programm weiter "listen" kann ob nachrichten reinkommen.
Diese Prozesse beenden sich aber schon von selbst, nach einem Klick auf "OK" bei der MessageBox.
Wie es aussieht läuft dass alles als "Tray"-Programm, da es wohl unmöglich ist aus einem Service eine MessageBox anzuzeigen.
Aber der Vollständigkeit halber, würde ich schon gerne wissen wie dass läuft.
-
Dann bau doch einfach eine veränftige EXE mit einer korrekten IPC...