Mit diesem Code wird das Systemmenu geleert. Wenn man mit SC_CLOSE den "Schließen"-Eintrag entfernt, wird gleichzeitig das "X" zum Schließen des Fensters inaktiviert (bleibt aber sichtbar). Damit kann man ein nicht schließbares Fenster erzeugen (was mit
BorderIcons = []
auch geht), aber gleichzeitig das Icon für das Fenster behalten (Was mit BorderIcons nicht geht).
Natürlich kann man mit diesem Code auch nur einzelne Elemente entfernen.
Delphi-Quellcode:
procedure TWorkerMainframe.FormCreate(Sender: TObject);
var
hWnd: THandle;
begin
hWnd := GetSystemMenu(Self.Handle, False);
RemoveMenu(hWnd, SC_SIZE, MF_BYCOMMAND);
RemoveMenu(hWnd, SC_MOVE, MF_BYCOMMAND);
RemoveMenu(hWnd, SC_MINIMIZE, MF_BYCOMMAND);
RemoveMenu(hWnd, SC_MAXIMIZE, MF_BYCOMMAND);
RemoveMenu(hWnd, SC_RESTORE, MF_BYCOMMAND);
RemoveMenu(hWnd, SC_CLOSE, MF_BYCOMMAND);
DeleteMenu(hWnd, 0, MF_BYCOMMAND); // Der letzte Separator im Menu kommt auch noch weg
end;