Immer noch das Problem mit dem Runterfahren !
-
Hi,
Sry das ich nochmal fragen muss aber das hat mir alles nicht weitergeholfen was letztes mal dazu geschrieben wurde ...
Ich habe jetzt eine Komponente gefunden mit der ich messages abfangen kann (Bei "Zusätzlich" -> "ApplicationEvents" )
diese Komponente hat ein Ereignis namens "OnMessage" mit diesem Ereignis kann man die ganzen Messages die Windows an das Programm schickt abfangen. Da mein Programm aber eine Endlosschleife nutzt springt es anscheinend gar nicht in das Event .
BITTE BITTE TUT MIR DEN GEFALLEN UND NEHMT EUCH 5 MINUTEN ZEIT UND PRORAMMIERT EIN SIMPLES BEISPIEL NACH UM DAS PROBLEM ZU BEGREIFEN . (einfach eine Anwendung mit der oben genannten Komponente erstellen und noch en Button dazu der die "while(1)" - Schleife startet.) BITTE BITTE HELFT MIR , DAS IST DAS LETZTE WORAN MEIN PROJEKT HÄNGT !!!
Gruß PillathMrNight
-
Warum schreibst Du das simple Beispiel nicht selbst? Und woher sollen wir wissen, welche Komponente Du woher ausgegraben hast? Achso, SCHREIEN kommt uebrigens auch nicht gut, wenn man Hilfe erwartet.
-
nochmal hi,
1. Habe ich beschrieben welche komponente ich meine...
(Im Borland C++ Builder 6 unter dem Register "Zusätzlich" namens
"ApplicationEvents")
2. Habe ich nicht "geschriehen" ich wollte der Dringlichkeit des erwartens
geistreicher Antworten meinerseits Ausdruck verleihen.
3. Kenne ich das Problem doch und habe auch schon genau das obige Beispiel
programmiert...Aber hier nochmal das Beispiel :
1. Anwendung erstellen und mit der "ApplicationEvents" Komponente bestücken
2. Button auf das Formular und beim "OnClick" Event eine Endlosschleife
einfügen , die aber Abbrechen kann (oder soll) sobald Windows herunterfährt.
Ich hab mir gedacht das sich das mit dem "OnMessage" Event der
ApplicationEvents Komponente machen lässt aber ihc bekomme es nicht hin...
3.
Mir bitte schreiben wie ihr es geschafft habt. 
Gruß PillathMrNight
-
Ich kenne den Borland C++ Builder 6 nicht und auch nicht die "ApplicationEvents"-Komponente, aber ich kann dir sagen:
Windows wird beim runterfahren versuchen dein Programm zu beenden, das bedeutet es wird an deine Anwendung WM_CLOSE/WM_DESTROY gesendet. Diese Nachricht sollte man dann natürlich behandeln und irgendwie mit PostQuitMessage() die MessageLoop verlassen...
-
Dieser Thread wurde von Moderator/in flenders aus dem Forum WinAPI in das Forum VCL/CLX (Borland C++ Builder) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo
Innerhalb der Endlosschleife ausführen
Application->ProcessMessages();Oder besser gleich statt einer blockierenden Endlosschleife einen Thread verwenden.
bis bald
akari
-
Vielen Vielen Dank für euere Antworten...

Was bedeuten Threads ? könnte jemand ein Beispiel nennen ?
Ich programmier noch nich soo lange ...Gruß PillathMrNight
-
-
Hi,
(sry wenn der Post schon da ist aber irgendwie verschwand meine erste Antwort)So Habe es gestern nacht noch geschafft mein "großes" Problem zu lösen.
Vielen Dank an akari und die anderen Helfer.Lösung:
Mein eigentliches Problem war ja das, dass wenn meine Anwendung erstmal in der Endlosschleife drin war, es nicht mehr auf Messages reagieren konnte (somit natürlich auch nicht auf die WM_QUERYENDSESSION von Windows) Also konnte man es ganz simpel lösen indem man ein "Application->ProcessMessages()" in die Endlosschleife einfügte. Durch diese Funktion wird die Anwendung bei jedem Durchlauf kurz gestoppt um die eintreffenden Windows Messages zu verarbeiten. Nun konnte mein Programm auch auf die WM_QUERYENDSESSION Message reagieren und behinderte Windows nicht mehr beim Runterfahren oder NeuStarten !
Gruß PillathMrNight