Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Schließen Button deaktivieren (https://www.delphipraxis.net/86367-schliessen-button-deaktivieren.html)

Der Jan 13. Feb 2007 09:21


Schließen Button deaktivieren
 
Hallo miteinander,

ich möchte bei einem fremden Fenster, konkret dem Console-Window, den Schließen-Button, Alt-F4 und den Punkt "Schließen" im System-Menu deaktivieren.

Delphi-Quellcode:
if(sClassNameShort = 'CONSOLE') then begin
  Wnd := FindWindow(PChar(sClassName), PChar(sFormName));
  if(Wnd <> 0) then begin
    EnableMenuItem(GetSystemMenu(Wnd, false), SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
    SetClassLong(Wnd, GCL_STYLE, GetClassLong(Wnd, GCL_STYLE) or CS_NOCLOSE);
  end;
end;
Das funzt auch soweit erstmal. Alt-F4 ist aus, der "X"-Button wird ausgegraut und kann nicht mehr geklickt werden. ABER: Im Systemmenu ist "Schließen" nicht deaktiviert und sobald ich auf das Icon klicke und das System-Menu aufgeht, wird das "X" wieder aktiviert was natürlich nicht Sinn und zweck der Sache ist.
Weiß jemand, wie ich das beheben kann?

sakura 13. Feb 2007 09:25

Re: Schließen Button deaktivieren
 
Ich weiß ad hoc nicht wie, aber über das Suchen des Systemmenüs geht bestimmt. Aber selbst wenn Du das geschafft hast, wie willst Du verhindern, dass der User einfach EXIT am Command-Prompt eingibt?

...:cat:...

Der Jan 13. Feb 2007 09:44

Re: Schließen Button deaktivieren
 
Das will ich nicht verhindern bzw. das kann der User nicht, den er hat kein Prompt, weil im Con-Fenster eine alte DOS-Anwendung läuft, die sehr empfindlich reagiert, wenn man sie nicht wie vorgesehen schließt. Deshalb möchte ich verhindern, das der User eben jenes tut.

Der Jan 13. Feb 2007 09:52

Re: Schließen Button deaktivieren
 
Ich habe diese Methode (1. Post) eben bei einem normalen Delphi-Form versucht, hier funktioniert es problemlos und genauso, wie es soll. Daher vermute ich, daß das System-Menu des Consolefensters ein anderes Handle hat. Die Frage ist nun: Es dem so und wie komme ich da ran?

SirThornberry 13. Feb 2007 10:13

Re: Schließen Button deaktivieren
 
anstelle des Enable schmeiß den Eintrag einfach komplett aus dem Systemmenü raus

Der Jan 13. Feb 2007 10:22

Re: Schließen Button deaktivieren
 
Hast recht, das hab ich jetzt auch gemacht, mit DeleteMenu. Wäre zwar trotzdem mal interessant, zu wissen, warum das mit den Handles so seltsam ist hier, aber das eigentliche Problem ist gelöst. Danke für Eure Bemühungen. Ist halt immer bissel doof, wenn mal alte Anwendungen auf neuen System migrieren muß....

:coder:


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