AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Wie beendet Windows mein Programm
Thema durchsuchen
Ansicht
Themen-Optionen

Wie beendet Windows mein Programm

Ein Thema von F.W. · begonnen am 27. Dez 2003 · letzter Beitrag vom 5. Jan 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#1

Wie beendet Windows mein Programm

  Alt 27. Dez 2003, 21:34
Wenn man den Computer ausschaltet oder den Benutzer abmeldet, werden ja alle Programme geschlossen, nur meins nicht. Ich hab' Win XP Home und wenn ich dann abmelden drücke, werden Firewall und alles andere, was sonst noch so läuft beendet, dann kommt dieser blaue Bildschirm, wo draufsteht, dass man abgemeldet wird...
Und dann hab' ich auf einmal den Desktop wieder und mein Programm läuft noch.

Info zu meinem Programm:
Mein Programm ist ein Chatprogramm, was immer in der Tystemtray auf Nachrichten vom großen Computer wartet.
Das ganze habe ich mit einem RxTrayIcon umgesetzt.

--------------------------------------------------

Als ich nachgedacht habe,bin ich auf folgende Lösung gekommen:
Ich fange die NAchricht ab, die Windows beim Herunterfahren an die noch laufenden Programme sendet und reagiere darauf...

Probleme:
1.Schickt Windows überhaupt Nachrichten oder nimmt es einfach die Anwendungen aus dem Speicher...
2.Welche Nachricht schickt Windows?
3.Wie fange ich die ab?

Wenn ich mir jetzt das eben verfasste anschaue fällt mir auf, dass ich noch verdammt viel zu lernen habe

Aber dafür, dass ich mir das ganze selbst beibringe, hab ich's schon ziemlich weit geschafft!


Bitte helft mir!!!!
  Mit Zitat antworten Zitat
Benutzerbild von Mirilin
Mirilin

Registriert seit: 21. Dez 2002
Ort: Lenzburg
861 Beiträge
 
Delphi 6 Professional
 
#2

Re: Wie beendet Windows mein Programm

  Alt 27. Dez 2003, 21:39


Vielleicht hilft Dir dies hier .

mfg Tobias
Tobias
Die Physik ist für die Physiker eigentlich viel zu schwer.
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#3

Re: Wie beendet Windows mein Programm

  Alt 27. Dez 2003, 21:39
Guck mal bei den Schweizern: Der Link ins Ausland

Oder in der DP per Suche: Hier im Forum suchenwindows verhindern, der erste Eintrag
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#4

Re: Wie beendet Windows mein Programm

  Alt 27. Dez 2003, 22:12
Super! Ich werd's gleichmal ausprobieren, aber ich denke schon, dass was dabei ist!

Ich schreib dann spätestens morgen [Jetzt: 27.12.03; 22-11], ob's geklappt hat!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Wie beendet Windows mein Programm

  Alt 28. Dez 2003, 05:18
Das Problem ist bekannt bei der Komponentensammlung, habe ich schon öfters gelesen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#6

Re: Wie beendet Windows mein Programm

  Alt 28. Dez 2003, 07:00
Prinzipiell muss man auf WM_QUERYENDSESSION und WM_ENDSESSION reagieren.
Man muss eventuell offene Forms schliessen, da eine zweite offene Form
sonst alle Bemuehungen sich zu benehmen verhindert.
Wenn man ein FormDestroy hat und sich bei WM_ENDSESSION beendet wird FormDestroy
nicht mehr aufgerufen, da kein WM_QUIT mehr kommt.
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#7

Re: Wie beendet Windows mein Programm

  Alt 28. Dez 2003, 13:05
Ich hab' das gestern abend mal bei runterfahren ausprobiert:

Mein Programm wird tatsächlich beendet, allerdings werden danach keine anderen Programme mehr beendet. Mein Programm fängt die Nachricht den anderen Programmen weg.

Wenn man dann nochmals auf runterfahren oder abmelden klickt geht es dann allerdings.

Wie kann jetzt dieses Wegfangen verhindern?

Edit: Ich habe die procedure WMENDQUERYSESSION in das Hauptformular eingebunden, das ist auch das, welches in der Systray schlummert. In der procedure wird dann Application.Terminate aufgerufen.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#8

Re: Wie beendet Windows mein Programm

  Alt 28. Dez 2003, 13:42
Ein Close auf das eigene Hauptformular sollte genuegen.
Zeig mal deine WMQueryEndSession und WMEndSession Methoden.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Wie beendet Windows mein Programm

  Alt 28. Dez 2003, 13:49
Du musst eins oder True zurückgeben, um Windows zu sagen, dass es weiter runterfahren darf.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#10

Re: Wie beendet Windows mein Programm

  Alt 29. Dez 2003, 13:28
Mein Quellcode:
Delphi-Quellcode:
procedure TTitel.WMQueryEndSession(var M: TWMQueryEndSession);
begin
 inherited;
 Application.Terminate;
end;
Zitat:
Du musst eins oder True zurückgeben, um Windows zu sagen, dass es weiter runterfahren darf.
Wie soll ich True zurückgeben?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz