Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Alt F4 sperren (https://www.delphipraxis.net/57831-alt-f4-sperren.html)

f4r 27. Nov 2005 13:04


Alt F4 sperren
 
Kann man die Tastenkombi Alt F4 und Esc sperren ?

gruss

faux 27. Nov 2005 13:05

Re: Alt F4 sperren
 
Systemweit oder in deinem Programm?
Etwas mehr Details... ;)

Grüße
Faux

Nils_13 27. Nov 2005 13:09

Re: Alt F4 sperren
 
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    procedure WMSysCommand(var Message: TWMSysCommand);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure AppMessage(var Msg: TMSG; var HAndled: Boolean);
  end;

// ...

// Das hier ist unwichtig, ist eine andere Sache. Nur dazu da um spätere Fragen vom Tisch zu räumen.
procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
  if Message.CmdType and $FFF0 = SC_MINIMIZE then
    Hide
  else
    inherited;
end;

procedure TForm1.AppMessage(var Msg: TMSG; var Handled: Boolean);
begin
  // let your application handle all messages initially
  Handled := False;
  case Msg.Message of
    WM_SYSKEYDOWN:
      if Msg.wParam = VK_F4 then
        Handled := True; // don't allow ALT-F4
  end;
end;

ManuMF 27. Nov 2005 13:20

Re: Alt F4 sperren
 
Einfach

Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caNone;
end;
Gruß,
ManuMF

faux 27. Nov 2005 13:23

Re: Alt F4 sperren
 
Zitat:

Zitat von ManuMF
Einfach

Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caNone;
end;
Gruß,
ManuMF

Deswegen fragte ich, ob Systemweit, oder nur im Programm. ;)

Grüße
Faux

ManuMF 27. Nov 2005 13:28

Re: Alt F4 sperren
 
Ich habe mal "für das Programm" vorausgesetzt ;-)

f4r 27. Nov 2005 13:40

Re: Alt F4 sperren
 
ja soll nur im proggie gelten
beim programm werden mehrer forms mit "form.show;" maximiert geöffnet und diesolln nicht mit alt f4 zu schließen sein sondern nur über dielabels

probs gleich ma uas

danke scho ma

faux 27. Nov 2005 13:41

Re: Alt F4 sperren
 
Zitat:

Zitat von f4r
ja soll nur im proggie gelten
beim programm werden mehrer forms mit "form.show;" maximiert geöffnet und diesolln nicht mit alt f4 zu schließen sein sondern nur über dielabels

Dann mach so:

Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if not (sender is TLabel)
    Action := caNone;
end;

f4r 27. Nov 2005 13:44

Re: Alt F4 sperren
 
tja gehen tut es scho nur sind jetzt die labels zum schließen der einzelnen forms auch aus funktion :(
sind mit einem close; ereignis bestückt (labels) kennst de da n ussweg ?
gruss
f4r


p.s.: gott segne den taskmanager

f4r 27. Nov 2005 13:46

Re: Alt F4 sperren
 
hmm geht net (zweites) geh jetzt auch davon aus dass du das "then" vergessen hast :D

sonst ne idee ?
gruss

Matze 27. Nov 2005 13:49

Re: Alt F4 sperren
 
Evtl. kannst du es auch über das OnCloseQuery Ereignis lösen und je nach Bedarf CanClose auf true bzw. false setzen.

f4r 27. Nov 2005 13:51

Re: Alt F4 sperren
 
so danke leute habs gelöst :

1.)
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caNone;
end;

2.)
procedure TSchulForm.Label1Click(Sender: TObject);
begin
SchulForm.visible:=false;
MainForm.visible:=true;
end;


damit ist das form zwar net geschlossen aber nicht mehr sich bar und das vorigere sicht bar also ziel erreicht danke leute !!!
gruss

Matze 27. Nov 2005 13:55

Re: Alt F4 sperren
 
Nur interessehalber:
Lässt sich das Programm so beenden?

faux 27. Nov 2005 13:59

Re: Alt F4 sperren
 
Zitat:

Zitat von f4r
hmm geht net (zweites) geh jetzt auch davon aus dass du das "then" vergessen hast :D

sonst ne idee ?
gruss

Ja, sorry. Hab den ganzen Tag nur in C# programmiert, und da gibts kein then.. ;)

Wieso funktioniert mein Code nicht?
Was passiert / passiert nicht?

Grüße
Faux

cruso 27. Nov 2005 14:51

Re: Alt F4 sperren
 
Einfach:

Delphi-Quellcode:
//...
CanClose := False;
//...
Allerdings lässt es sich dann auch nicht mehr über Form1.close oder so beenden!

dataspider 28. Nov 2005 08:35

Re: Alt F4 sperren
 
Hi,
folgende Unit einfach ins Projekt aufnehmen:
Delphi-Quellcode:
unit KILL_AltF4;
interface
Uses
  Classes, Windows, Forms;
Var
  FKeyHook : HHook;
implementation
function KeyboardHook(code: Integer; wParam: WPARAM;
                      lParam: LPARAM): LRESULT; stdcall;
Var
  KeyboardState: TKeyboardState;
begin
  GetKeyboardState(KeyboardState);
  if (KeyboardStateToShiftState(KeyboardState) = [ssAlt]) and (wParam = VK_F4) then
    Result := 1 
  else
    Result := CallNextHookEx(FKeyHook, code, wParam, lParam);
end;
initialization
  FKeyHook := SetWindowsHookEx(WH_KEYBOARD, KeyboardHook, 0, GetCurrentThreadId);
finalization
  UnhookWindowsHookEx(FKeyHook);
end.
Die Erweiterung um das ESC ist no problem...
Frank

Luckie 28. Nov 2005 10:15

Re: Alt F4 sperren
 
Wozu ein Hook? Es wurde doch schon drei mal gepostet, wie es am vernünftigsten zu lösen ist. :-?

Angel4585 28. Nov 2005 10:19

Re: Alt F4 sperren
 
Noch ne vernünftige Methode(?)

Einfach bei Labelklick ein Flag setzen und bei dem OnClose abfragen obs gesetzt ist oder nicht und dann entsprechend handeln :-D

faux 28. Nov 2005 13:05

Re: Alt F4 sperren
 
Zitat:

Zitat von Angel4585
Noch ne vernünftige Methode(?)

Einfach bei Labelklick ein Flag setzen und bei dem OnClose abfragen obs gesetzt ist oder nicht und dann entsprechend handeln :-D

Wieso nicht einfach den Sender behandeln? Dann fällt das Flag weg.

Grüße
Faux


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:11 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-2025 by Thomas Breitkreuz