Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Programmabbruch über Windows-Fenster 'x' verhindern (https://www.delphipraxis.net/191262-programmabbruch-ueber-windows-fenster-x-verhindern.html)

Gerkey 27. Dez 2016 11:18

Delphi-Version: 2010

Programmabbruch über Windows-Fenster 'x' verhindern
 
Möchte gerne verhindern, dass das Anwendungsprogramm über Klick auf 'x' im Windows-Fenster beendet werden kann oder zumindest eine Warnung ausgeben, falls das versucht wird !
Kann mir da jemand helfen ?

Gerkey

Der schöne Günther 27. Dez 2016 11:20

AW: Programmabbruch über Windows-Fenster 'x' verhindern
 
Schau dir mal die Events
Delphi-Quellcode:
OnClose
und
Delphi-Quellcode:
OnCloseQuery
deines Formulars an.

Jasocul 27. Dez 2016 11:25

AW: Programmabbruch über Windows-Fenster 'x' verhindern
 
Du kannst auch die BorderIcons im Objektinspektor ausstellen.
Allerdings funktioniert Alt-F4 trotzdem noch.

Hängt also ein bisschen davon ab, was du erreichen willst.

a.def 27. Dez 2016 12:27

AW: Programmabbruch über Windows-Fenster 'x' verhindern
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1357264)
Schau dir mal die Events
Delphi-Quellcode:
OnClose
und
Delphi-Quellcode:
OnCloseQuery
deines Formulars an.

In OnCloseQuery kannst du CanClose auf False setzen. Dann hast du dein Ziel erreicht.
Wenn du dein Programm aber selbständig mit Close; schließen möchtest, wird das ebenfalls nicht mehr funktionieren.
Mit einer Zeile Code ist es also nicht getan.

p80286 27. Dez 2016 13:07

AW: Programmabbruch über Windows-Fenster 'x' verhindern
 
Da gab es mal was "Shell-Ersatz". Im Zusammenhang mit dem BKA-Trojaner.
Ich finde das nur gerade nicht.
Wenn ich mich richtig erinnere kann man eine Shell sooft beenden wie man will, sie wird automatisch neu gestartet.

Bin mir allerdings überhaupt nicht sicher.

Gruß
K-H

Gerkey 3. Jan 2017 15:46

AW: Programmabbruch über Windows-Fenster 'x' verhindern
 
Danke für den Tip mit OnCloseQuery. Das hat mit ein paar zusätzlichen Statements gut geklappt !

gerkey

EWeiss 3. Jan 2017 16:21

AW: Programmabbruch über Windows-Fenster 'x' verhindern
 
Zitat:

Zitat von a.def (Beitrag 1357274)
Zitat:

Zitat von Der schöne Günther (Beitrag 1357264)
Schau dir mal die Events
Delphi-Quellcode:
OnClose
und
Delphi-Quellcode:
OnCloseQuery
deines Formulars an.

In OnCloseQuery kannst du CanClose auf False setzen. Dann hast du dein Ziel erreicht.
Wenn du dein Programm aber selbständig mit Close; schließen möchtest, wird das ebenfalls nicht mehr funktionieren.
Mit einer Zeile Code ist es also nicht getan.

Zum besseren Verständnis Siehe!
Schließen von Fenstern

gruss

Slipstream 3. Jan 2017 21:00

AW: Programmabbruch über Windows-Fenster 'x' verhindern
 
Zitat:

Zitat von Gerkey (Beitrag 1357957)
Danke für den Tip mit OnCloseQuery. Das hat mit ein paar zusätzlichen Statements gut geklappt !

gerkey

Dafür wurds ja auch erfunden, das OnCloseQuery, oder?

t.roller 3. Jan 2017 22:24

AW: Programmabbruch über Windows-Fenster 'x' verhindern
 
Man kann auch das ganze Geklicke "da oben" abfangen, wenn man will...
Delphi-Quellcode:
...
  protected
    procedure WMNCLBUTTONDOWN(var msg: TMessage); message WM_NCLBUTTONDOWN;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMNCLBUTTONDOWN(var msg: TMessage);
begin
if cbCLOSE.Checked then inherited; // NO CLOSE if deactivated / unchecked
// cbCLOSE kann man durch eine PW-Abfrage ersetzen, ALT-F4 muss geblockt werden
  if msg.wParam = HTCAPTION then
  begin
   Caption:= 'HTCAPTION'; Exit;//
  end;
  if msg.wParam = HTSYSMENU then
  begin
   Caption:= 'HTSYSMENU'; Exit;//
  end;
  if msg.wParam = HTCLIENT then
  begin
   Caption:= 'HTCLIENT'; Exit;//
  end;
  if msg.wParam = HTCLOSE then
  begin
   Caption:= 'HTCLOSE'; Exit;//
  end;
  if msg.wParam = HTMAXBUTTON then
  begin
   Caption:= 'HTMAXBUTTON'; Exit;//
  end;
  if msg.wParam = HTMINBUTTON then
  begin
   Caption:= 'HTMINBUTTON'; Exit;//
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:13 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