文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>全局热键

全局热键

时间:2010-10-14  来源:江湖一键客

点击下载演示工程

函数原型:function RegisterHotKey(hWnd: HWND; id: Integer; fsModifiers, vk: UINT): BOOL; stdcall; 

函数功能:该函数定义一个系统范围的热键。   
参数:   
      hWnd:接收热键产生WM_HOTKEY消息的窗口句柄。若该参数NULL, 传递给调用线程的WM_HOTKEY消息必须在消  息循环中中进行处理。   
      id:定义热键的标识符。调用线程中的其他热键不能使用同样的标识符。应用功能程序必须定义一个0X0000-0xBFFF范  围的值。一个共享的动态链接库(DLL)必须定义一个0xC000-0xFFFF范围的值伯GlobalAddAtom函数返回该范围)。为了避免与其他动态链接库定义的热键冲突,一个DLL必须使用GlobalAddAtom函数获得热键的标识符。   
      fsModifoers:定义为了产生WM_HOTKEY消息而必须与由nVirtKey参数定义的键一起按下的键。该参数可以是如下值的组合:   
        MOD_ALT:按下的可以是任一Alt键。
        MOD_CONTROL:按下的可以是任一Ctrl键。   
        MOD_SHIFT:按下的可以是任一Shift键。   
        MOD_WIN:按下的可以是任一Windows按键。这些键可以用Microsoft Windows日志记录下来。   
        MOD_NOREPEAT:Windows 7或者后续版本: 更改热键行为,以便键盘自动重复不会产生多个热键通知。   
      vk:定义热键的虚拟键码。   
返回值:若函数调用成功,返回True,若函数调用失败,则返回False。

      函数原型:function UnregisterHotKey(hWnd: HWND; id: Integer): BOOL; stdcall;    函数功能:该函数释放调用线程先前登记的热键。 参数:               hWnd:与被释放的热键相关的窗口句柄。若热键不与窗口相关,则该参数为0。               id:定义被释放的热键的标识符。    返回值:若函数调用成功返回True,,否则返回False。
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure WndProc(var TheMessage:TMessage);override;
    procedure MyUnRegisterHotKey();
  end;

var
  Form1: TForm1;
  KEY_ALT_C_Atom:TAtom;
  KEY_SHIFT_D_Atom:TAtom;
  KEY_CTRL_A_Atom:TAtom;
const
  KEY_ALT_C_AtomString:String='35AC2821-CFDF-4F06-A3FE-42274ED1E71A';
  KEY_SHIFT_D_AtomString:String='203AC0A8-FB66-4BFB-B17C-0FD215C250F1';
  KEY_CTRL_A_AtomString:String='062B72D0-178C-4887-B84C-E7030EA55EB7';
procedure About();
implementation

{$R *.dfm}
procedure About();begin
    ShowMessage('程序名称:全局热键'+#13+
                '版本:1.0.0.0'+#13+
                '日期:2010-10-9'+#13+
                '作者:江湖一键客'+#13+
                '业务联系QQ:82530662');
end;

procedure TForm1.WndProc(var TheMessage:TMessage);
begin
      if TheMessage.Msg=WM_HOTKEY then begin
         if (TheMessage.LParamLo=MOD_ALT) and (TheMessage.LParamHi=ord('C')) then begin
            ShowMessage('测试 Alt+C');
         end else if(TheMessage.LParamLo=MOD_SHIFT) and (TheMessage.LParamHi=ord('D')) then begin
            MyUnRegisterHotKey;
            ShowMessage('注销热键 SHIFT+D');
         end else if(TheMessage.LParamLo=MOD_CONTROL) and (TheMessage.LParamHi=ord('A')) then begin
            About;
         end;
      end else begin
          inherited;
      end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    KEY_ALT_C_Atom:=GlobalAddAtom(PChar(KEY_ALT_C_AtomString));
    KEY_SHIFT_D_Atom:=GlobalAddAtom(PChar(KEY_SHIFT_D_AtomString));
    KEY_CTRL_A_Atom:=GlobalAddAtom(PChar(KEY_ALT_C_Atom));
    RegisterHotKey(Form1.Handle, KEY_ALT_C_Atom,MOD_ALT,ord('C'));
    RegisterHotKey(Self.Handle,KEY_CTRL_A_Atom,MOD_CONTROL,ord('A'));
    RegisterHotKey(Self.Handle,KEY_SHIFT_D_Atom,MOD_SHIFT,ord('D'));
end;


procedure TForm1.MyUnRegisterHotKey();
begin
     UnRegisterHotKey(Self.Handle,KEY_ALT_C_Atom);
     UnRegisterHotkey(self.Handle,KEY_SHIFT_D_Atom);
     UnRegisterHotKey(Self.Handle,KEY_CTRL_A_Atom);
     GlobalDeleteAtom(KEY_ALT_C_Atom);
     GlobalDeleteAtom(KEY_SHIFT_D_Atom);
     GlobalDeleteAtom(KEY_SHIFT_D_Atom);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
    MyUnRegisterHotKey;
end;

end.
相关阅读 更多 +
排行榜 更多 +
我是班长去广告版下载

我是班长去广告版下载

模拟经营 下载
什么鸭小游戏安卓版下载

什么鸭小游戏安卓版下载

策略塔防 下载
极光影院官方最新版本2025下载

极光影院官方最新版本2025下载

趣味娱乐 下载