注册了一个热键  我换了个热键 怎么把以前的反注册掉 

解决方案 »

  1.   


    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
        FMyAtom: TAtom;
        //添加全局热键  CTRL + F1
        procedure AddHotKey;
        //删除全局热键
        procedure DeleteHotKey;
        procedure WMHotKey(var Msg: TWMHotKey); message WM_HotKey;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.AddHotKey;
    begin
      FMyAtom := GlobalFindAtom('Hot1');
      if FMyAtom = 0 then begin
        FMyAtom := GlobalAddAtom('Hot1');
        if RegisterHotKey(Handle, FMyAtom, MOD_Control, VK_F1) then
          ShowMessage('Register hot key success!');
      end else
        ShowMessage('CTRL + F1 has been registered');
    end;procedure TForm1.DeleteHotKey;
    begin
      if FMyAtom <> 0 then begin
        UnRegisterHotKey(Handle, FMyAtom);
        GlobalDeleteAtom(FMyAtom);
      end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      AddHotKey;
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
      DeleteHotKey;
    end;procedure TForm1.WMHotKey(var Msg: TWMHotKey);
    begin
      if Msg.HotKey = FMyAtom then begin
        ShowMessage('Call from hotkey');
      end;
    end;
      

  2.   

    谢谢 楼上的但这代码不是我要的我的是想反注册到前一个热键明白我说的吗?你的代码热键 ctrl+F1 客户修改了一个热键 
    把CRTL+F1 反注册  并注册客户自己设定的热键
      

  3.   


    UnRegisterHotKey(handle, HotKeyId1);
    DeleteAtom(HotKeyID1);
      

  4.   

    hotkey1是你注册热键时的IDBOOL RegisterHotKey( 
      HWND hWnd, 
      int id, 
      UINT fsModifiers, 
      UINT vk 
    );