Einzelnen Beitrag anzeigen

TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#1

Aufruf des Systemmenü eines Fensters verhindern

  Alt 17. Feb 2017, 08:40
Hi,

ich versuche gerade einen Weg zu finden wie ich verhindern kann das das Systemmenü eines Fensters aufgerufen werden kann. Ohne in der Option 'BorderIcons' das Menü zu deaktivieren, dann verschwindet das "Rote X" und BorderStyle bsToolWindow ist auch keine Option. Mein erster weg war einfach im OnCreate() von TForm die Einträge aus dem Menü zu löschen was auch funktioniert und das Menü scheint auch weg zu sein. Mir ist dann aber aufgefallen das man das Menü trotzdem noch mit der Tastenkombination ALT + Leertaste aufrufen kann, es ist zwar nicht sichtbar aber der Fokus liegt dann trotzdem im Menü und nicht mehr auf der Form selbst. Das möchte ich gerne unterbinden.

Bei meiner Recherche bin ich auf zwei Windows Botschaften gestoßen WM_INITMENU und WM_INITMENUPOPUP jedoch finde ich keine wirkliche Lösung wie ich diese Botschaften abfangen und quasi verwerfen kann so das das Systemmenü einfach nicht aufgerufen wird.

Ich habe es mal mit WndProc versucht und ja die Botschaften werden abgefangen, aber wie verwerfe ich diese nun?

Delphi-Quellcode:
.
.
.
 private
    procedure WndProc(var msg: TMessage); override;


procedure TForm1.WndProc(var msg: TMessage);
begin

  if (msg.Msg = WM_INITMENU) or (msg.Msg = WM_INITMENUPOPUP) then
  begin
    ShowMessage('Bla Bla Mr. Freeman');
  end
  else
    inherited;

end;
  Mit Zitat antworten Zitat