Entwickler-Ecke

Sonstiges (Delphi) - CanClose & Windows runterfahren


thomasoop - Mo 08.02.10 16:55
Titel: CanClose & Windows runterfahren
Hallo zusammen,
ich habe ein kleines Tool geschrieben das die ganze Zeit laufen soll, wenn der PC an ist und beim minimieren/schließen in den Systray verschwindet.
Dazu habe ich das Schließen über das X im FormCloseQuery unterdrückt.
Leider hat das auch den Effekt, das wenn ich Windows runterfahren möchte, das Runterfahren abgebrochen wird (vermutlich weil CanClose auf False ist und Windows auf das schließen meines Programms wartet).

Frage: Wie kann ich es verhindern, das Windows beim runterfahren "hängen bleibt"?

Hier noch ein Teil meines Codes zur Erläuterung:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
{*******************************************************************************
*                                                                              *
* Programmende nur kontrolliert erlauben                                       *
*                                                                              *
*******************************************************************************}

procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if WindowState = wsMinimized Then  
    bpvClose := True; // funzt leider nicht

  If Not bpvClose Then
   Minimieren1Click(Sender);

  If bpvClose Then
    TaskBarRemoveIcon();
    
  CanClose := bpvClose;
end;


Viele Grüße
Thomas

Moderiert von user profile iconmatze: Code- durch Delphi-Tags ersetzt


Xion - Mo 08.02.10 18:27

Verschwindet nicht die Taskbar vorher? Dann könntest du ja checken ob die noch sichtbar ist


elundril - Mo 08.02.10 18:28

man könnte doch auch WM_QueryEndSession abfangen und dementsprechend reagieren oder?

lg elundril


Xion - Mo 08.02.10 18:50

aber nur wenn man weiß dass es sowas gibt :mrgreen: *wieder was gelernt hat*


thomasoop - Di 09.02.10 19:17

user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
man könnte doch auch WM_QueryEndSession abfangen und dementsprechend reagieren oder?

lg elundril

Funktionierte super mit


Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TfrmMain.WMQueryEndSession (var Msg : TWMQueryEndSession);
begin
  Msg.Result := 1;
  bpvClose := True;
end;


Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt