Zitat:
Warum weil das Systemmenü obwohl nicht sichtbar doch den Focus oder sonst was bekommen hat. Du darfst das gerne selbst testen.
Was nicht existiert kann keinen Focus bekommen.
So es gibt kein SysMenu mehr überprüfe das einfach anhand der GWL_STYLE
Weder Unsichtbar noch sonst was.
Du kannst aber das Window nun trotzdem verschieben.
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var
Menu: HMENU;
MenuItems: Integer;
i: Integer;
Style: DWord;
begin
Menu := GetSystemMenu(
Handle, false);
if Menu <> 0
then
begin
MenuItems := GetMenuItemCount(Menu);
if MenuItems <> 0
Then
for i := MenuItems - 1
DownTo 0
do
RemoveMenu(Menu, i, MF_BYPOSITION);
end;
Style := GetWindowLong(
Handle, GWL_STYLE);
Style := Style
and not WS_SYSMENU;
SetWindowLong(
Handle, GWL_STYLE, GetWindowLong(
Handle, Style)
or WS_BORDER
or WS_SIZEBOX
or WS_DLGFRAME
or WS_OVERLAPPED);
end;
Entferne den Button auf der Form addiere dein ominöses
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key = VK_ESCAPE then
begin
Close;
end;
end;
Klick einmal die ESC Taste dann beendet sich die Anwendung sofort.