![]() |
Rechner fährt nicht mehr herunter
Hallo
ich habe ein Programm geschrieben, welches beim minimieren oder schließen in die TNA wandert. Es startet automatisch beim Systemstart. Nach einem Testlauf habe ich bemerkt, dass mein Rechner nicht mehr runterfährt, wenn mein Prog läuft (ich klick auf Start -> Ausschalten und dann in dem kleinen blauen Fenster wieder Ausschalten, dann verschwiendet es wieder und der nomale Dektop kommt wieder) wenn ich das Programm beende und ihn wieder ausschalte fährt mein PC wieder ganz normal runter ich geh mal davon aus, das sich mein Prog beim schließen immer minimiert und sich nur über das Kontextmenü über dem TNA Icon schließen lässt kann mir jemand nen Rat geben wie ich mein Problem lösen könnte Gruß Markus |
Re: Rechner fährt nicht mehr herunter
Dein Programm scheint die höfliche Bitte des Betriebssytem sich zu Beenden nicht nachzukommen.
|
Re: Rechner fährt nicht mehr herunter
Hallo!
Hast du das Event OnClose oder OnCloseQuery benutzt? Wenn ja, kann es sein, dass dein Programm da drinnen hängen bleibt und das Timout fürs killen von hängengebliebenen Applikationen beim herunterfahren sehr hoch gesetzt ist, im Windows. Grüße Faux |
Re: Rechner fährt nicht mehr herunter
:gruebel: Windows sollte es doch fertig bringen dein Programm auszubekommen. Das schafft es ja auch bei Norton ;-)
Du könntest den Shutdown abfangen und dann dein Programm beenden |
Re: Rechner fährt nicht mehr herunter
Hi...
vllt könnte dir das helfen: Dein Programm reagiert ja drauf, wenn der Rechner runterfährt, also einfach das hier in die WMQUERYSESSION Procedur einfügen.
Delphi-Quellcode:
Greetz by Hux
procedure TMainForm.WMQUERYENDSESSION(var msg: TMessage);
begin // In die TNA minimieren. msg.Result := true; // bzw. das Ding beenden. Halt; end; // Edit: arrrgh, das [b] funktioniert im CodeTeil ja garnicht -.- |
Re: Rechner fährt nicht mehr herunter
@HuxXx: Es muss doch auch ohne zusätzlichen Code zu lösen sein. Zuerst sollte man mal feststellen, wieso das Probelm überhaupt auftritt. Einfach so, mal irgendeinen Code in die Applikation zu packen, hat noch keinen Sinn, wenn man nichtmal weiß, wieso der Fehler auftritt.
Grüße Faux |
Re: Rechner fährt nicht mehr herunter
ich hab unter CloseQuery folgendes rein geschriben
Delphi-Quellcode:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin CanClose := False; Form1.Hide; end; |
Re: Rechner fährt nicht mehr herunter
Zitat:
Beim herunterfahren fordert Windows deine Applikation auf, sich zu beenden, deine Applikation sagt aber nur: Nein. ;) Das liegt daran, dass du CanClose auf False setzt. Das OnCloseQuery Event ist dazu da, Abfragen vor dem Schließen zu realisieren, zum Beispiel "Wollen Sie wirklich beenden" oder "Wollen Sie Speichern?" oder so. Du "missbrauchst" dieses Event zum Minimieren in den Tray. ;) Grüße Faux |
Re: Rechner fährt nicht mehr herunter
Und wie kann ich das dann richtig machen?
|
Re: Rechner fährt nicht mehr herunter
Event weglassen. :zwinker:
|
Re: Rechner fährt nicht mehr herunter
Oder: Das hier übernehmen:
Delphi-Quellcode:
Das sollte funktionieren.
var CloseReally: Boolean = false;
// Dann deinen Code... procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose := CloseReally; Form1.Hide; end; // und den von HuxXx procedure TMainForm.WMQUERYENDSESSION(var msg: TMessage); begin msg.Result := 1; CloseReally := true; end; |
Re: Rechner fährt nicht mehr herunter
ich hab das mal so ausprobiert und es hat nix genracht
habt ihr vllt noch ne Idee |
Re: Rechner fährt nicht mehr herunter
hast du die zweite prozedur auch als botschaftsmethode gebaut?
Du musst sie dann in der klassendeklaration der form so deklarieren:
Delphi-Quellcode:
procedure OnWMQueryEndSession(var Msg: TMsg); message WM_QUERYENDSESSION;
|
Re: Rechner fährt nicht mehr herunter
kannst du mir vielleicht nochmal den ganzen Source aufschreiben
ich check des net mit den botschaftsmethoden nich so ganz bei mir kommen da immer Fehler |
Re: Rechner fährt nicht mehr herunter
Was denn für Fehler? Sorry, der Wahrsager von Nebenan ist gerade im Urlaub...:roll:
|
Re: Rechner fährt nicht mehr herunter
bei mir kommt immer folgendes wenn ich mein Prog compilieren will:
Delphi-Quellcode:
[Fehler] Unit1.pas(2023): E2003 Undefinierter Bezeichner: 'Result'
|
Re: Rechner fährt nicht mehr herunter
Ist das ne Function, in der der fehler auftritt?
|
Re: Rechner fährt nicht mehr herunter
Hmm, ich denke, du hast was vergessen. Liegt wohl daran, dass du mehrere Code-Teile von hier einfach eingefügt hast, ohne sie für deinen Fall anzupassen.
Überprüfe folgendes: In der Unit ziemlich weit oben steht
Delphi-Quellcode:
In der Zeile nach dem { Private-Deklarationen } sollte das hier stehen:
type
TForm1 = class(TForm) // Hier steht jede Menge Zeug ;-) private { Private-Deklarationen } public { Public-Deklarationen } end;
Delphi-Quellcode:
und irgendwo unten im Code dann
procedure WMQueryEndSession(var Msg: TMessage); message WM_QUERYENDSESSION;
Delphi-Quellcode:
Dabei ist wichtig, dass du den Namen deines Formulars anpasst, also wenn es nicht Form1 heißt, musst du es für den unteren Code-Teil in meinem Beitrag ändern.
procedure TForm1.WMQueryEndSession(var Msg: TMessage);
begin Msg.Result := 1; CloseReally := true; end; |
Re: Rechner fährt nicht mehr herunter
super es funzt jetzt!
ich hatte die prozedur unter public und nicht unter private eingetragen :thumb: danke für euer schnelles Feedback |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz