如何在程序中屏蔽掉Alt+F4?立即给分

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }    procedure HotKeyDown(var Msg: Tmessage);
        message WM_HOTKEY;
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      HotKeyId: Integer;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
    begin
      HotKeyId := GlobalAddAtom('HotKey') - $C000;
      RegisterHotKey(Handle, hotkeyid, Mod_Alt, VK_F4);
    end;
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      UnRegisterHotKey(handle, HotKeyId);
    end;procedure TForm1.HotKeyDown(var Msg: Tmessage);
    begin
      if (Msg.LparamLo = Mod_Alt) And (Msg.LParamHi = VK_F4) then
      begin
        SHOWMESSAGE('AA');//DO YOURTHINGS
      end;
    END;
    END.
      

  2.   

    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      {屏蔽 ALT+F4}
      if (shift = [ssAlt]) and (key = vk_F4) then
          begin
            shift := [];
            key := 0;
          end;
    end;
      

  3.   

    用楼上的办法就可以,如果你是不想程序被关闭,那就在onclose事件里winexec运行你的程序,
    设置一个条件,当条件满足,再允许退出
      

  4.   

    楼上方法,好像不行哦!
    我试了一下!
    还是是Onclose里写代码实现吧
      

  5.   

    没那么复杂吧,Form的CanClose事件里,如果把CanClose设成false,就关不掉了
    你可以设自已的允许关闭条件了
      

  6.   

    onclose事件里并没有canclose属性,该属性在onclosequery事件里。
      

  7.   

    一个笨方法:
    在窗体中放入一个TPopupMemu控件,增加一菜单项,把该菜单项的ShortCut属性设置为Alt+F4
    把窗体的PopupMenu属性设置为TPopupMemu控件名
      

  8.   

    ,
     Shao666的方法虽然笨但是管用,然后将该菜单项设为visble:=false...
      

  9.   


      if (shift = [ssAlt]) and (key = vk_F4) then
          begin
            shift := [];
            key := 0;
          end;
      这个方法行的!但是除了要写在form的KeyDown事件里,所有能获得焦点的控件的KeyDown里权要写!你可以写个函数,然后调用就行了