其实这是个系统菜单,用函数GetSystemMenu,GetSubMenu之类的。查一查,以前有这方面的问题解答。

解决方案 »

  1.   

    OnCloseQuery中设置CanClose:=False
      

  2.   

    OnCloseQuery中设置CanClose:=False ,则无法关闭form
    其实,可以自己给程序添加热键,屏蔽掉系统对ALT-F4热键的处理。
    先定义全局常量
    hh : word;
    自定义热键处理函数
    procedure myHotKeyProc(var msg : TMsg);message WM_Hotkey;procedure TForm1.FormCreate(Sender: TObject);
    begin
      hh := globaladdatom('ALT_F4');
      registerhotkey(handle,hh,MOD_ALT,VK_F4);
    end;procedure TForm1.myHotKeyProc(var msg: TMsg);
    begin
      if msg.message = hh then
      begin
        showmessage('alt-f4');
      end;
      inherited;
    end;
    别忘了在formclose中注销热键
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      globaldeleteatom(hh);
      unregisterhotkey(handle,hh);
    end;
      

  3.   

    我也很关注,而且那样只把alt-f4屏蔽的话用alt+ctrl+shift的热键还能关掉程序的
    怎么办呢?
      

  4.   

    用ShowWindow(Application.Handle,SW_HIDE);
    使程序不显示在Ctrl-Alt-Del列表中