这里有段代码不知错在那里, 就是不能运行, 大虾帮手看看.
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
    procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}var
  HotKeyId: array[0..12] of Integer; //热键数组, 这里准备定义 13 个热键procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
//注册热键
  for i := Low(HotKeyId) to High(HotKeyId) do
    HotKeyId[i] := GlobalAddAtom(PChar(IntToStr(i))); //热键命名可随意
  RegisterHotKey(Handle,HotKeyId[0],0,VK_F2);               //F2
  RegisterHotKey(Handle,HotKeyId[1],0,VK_UP);               //Up
  RegisterHotKey(Handle,HotKeyId[2],0,VK_DOWN);             //Down
  RegisterHotKey(Handle,HotKeyId[3],0,VK_LEFT);             //Left
  RegisterHotKey(Handle,HotKeyId[4],0,VK_RIGHT);            //Right
  RegisterHotKey(Handle,HotKeyId[5],0,VK_PRIOR);            //PageUp
  RegisterHotKey(Handle,HotKeyId[6],0,VK_NEXT);             //PageDown
  RegisterHotKey(Handle,HotKeyId[7],0,VK_OEM_PLUS);         //+
  RegisterHotKey(Handle,HotKeyId[8],0,VK_OEM_MINUS);        //-
  RegisterHotKey(Handle,HotKeyId[9],0,$31);                 //1
  RegisterHotKey(Handle,HotKeyId[10],0,$41);                //a
  RegisterHotKey(Handle,HotKeyId[11],0,VK_RETURN);          //Enter
  RegisterHotKey(Handle,HotKeyId[12],MOD_CONTROL,VK_RETURN); //Ctrl+Enter
end;//热键
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
  if Msg.HotKey = HotKeyId[0] then ShowMessage('F2');
  if (Msg.HotKey=HotKeyId[1]) then ShowMessage('Up');
  if (Msg.HotKey=HotKeyId[2]) then ShowMessage('Down');
  if (Msg.HotKey=HotKeyId[3]) then ShowMessage('Left');
  if (Msg.HotKey=HotKeyId[4]) then ShowMessage('Right');
  if Msg.HotKey = HotKeyId[5] then ShowMessage('PageUp');
  if Msg.HotKey = HotKeyId[6] then ShowMessage('PageDown');
  if Msg.HotKey = HotKeyId[7] then ShowMessage('+');
  if Msg.HotKey = HotKeyId[8] then ShowMessage('-');
  if Msg.HotKey = HotKeyId[9] then ShowMessage('1');
  if Msg.HotKey = HotKeyId[10] then ShowMessage('a');
  if Msg.HotKey = HotKeyId[11] then ShowMessage('Enter');
  if Msg.HotKey = HotKeyId[12] then ShowMessage('Ctrl+Enter');
end;procedure TForm1.FormDestroy(Sender: TObject);
var
  i: Integer;
begin
//注销热键
  for i := Low(HotKeyId) to High(HotKeyId) do
  begin
    UnRegisterHotKey(handle,HotKeyId[i]);
    GlobalDeleteAtom(HotKeyId[i]);
  end;
end;end.

解决方案 »

  1.   

    看看那这个吧,或许对你有帮助!
    http://blog.csdn.net/yct0605/archive/2009/05/14/4182390.aspx
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;
     const
     VK_OEM_PLUS:integer=187;
     VK_OEM_MINUS:integer=189;
    type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
         procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    var
      HotKeyId: array[0..12] of Integer; //热键数组, 这里准备定义 13 个热键
    procedure TForm1.FormCreate(Sender: TObject);
    var
      i: Integer;
    begin
    //注册热键
      for i := Low(HotKeyId) to High(HotKeyId) do
        HotKeyId[i] := GlobalAddAtom(PChar(IntToStr(i))); //热键命名可随意
      RegisterHotKey(Handle,HotKeyId[0],0,VK_F2);               //F2
      RegisterHotKey(Handle,HotKeyId[1],0,VK_UP);               //Up
      RegisterHotKey(Handle,HotKeyId[2],0,VK_DOWN);             //Down
      RegisterHotKey(Handle,HotKeyId[3],0,VK_LEFT);             //Left
      RegisterHotKey(Handle,HotKeyId[4],0,VK_RIGHT);            //Right
      RegisterHotKey(Handle,HotKeyId[5],0,VK_PRIOR);            //PageUp
      RegisterHotKey(Handle,HotKeyId[6],0,VK_NEXT);             //PageDown
      RegisterHotKey(Handle,HotKeyId[7],0,VK_OEM_PLUS);         //+
      RegisterHotKey(Handle,HotKeyId[8],0,VK_OEM_MINUS);        //-
      RegisterHotKey(Handle,HotKeyId[9],0,$31);                 //1
      RegisterHotKey(Handle,HotKeyId[10],0,$41);                //a
      RegisterHotKey(Handle,HotKeyId[11],0,VK_RETURN);          //Enter
      RegisterHotKey(Handle,HotKeyId[12],MOD_CONTROL,VK_RETURN); //Ctrl+Enter
    end;//热键
    procedure TForm1.WMHotKey(var Msg: TWMHotKey);
    begin
      if Msg.HotKey = HotKeyId[0] then ShowMessage('F2');
      if (Msg.HotKey=HotKeyId[1]) then ShowMessage('Up');
      if (Msg.HotKey=HotKeyId[2]) then ShowMessage('Down');
      if (Msg.HotKey=HotKeyId[3]) then ShowMessage('Left');
      if (Msg.HotKey=HotKeyId[4]) then ShowMessage('Right');
      if Msg.HotKey = HotKeyId[5] then ShowMessage('PageUp');
      if Msg.HotKey = HotKeyId[6] then ShowMessage('PageDown');
      if Msg.HotKey = HotKeyId[7] then ShowMessage('+');
      if Msg.HotKey = HotKeyId[8] then ShowMessage('-');
      if Msg.HotKey = HotKeyId[9] then ShowMessage('1');
      if Msg.HotKey = HotKeyId[10] then ShowMessage('a');
      if Msg.HotKey = HotKeyId[11] then ShowMessage('Enter');
      if Msg.HotKey = HotKeyId[12] then ShowMessage('Ctrl+Enter');
    end;procedure TForm1.FormDestroy(Sender: TObject);
    var
      i: Integer;
    begin
    //注销热键
      for i := Low(HotKeyId) to High(HotKeyId) do
      begin
        UnRegisterHotKey(handle,HotKeyId[i]);
        GlobalDeleteAtom(HotKeyId[i]);
      end;
    end;
    end.我这个测试过了,你的代码没有发全吧?
      

  3.   


    const 
    VK_OEM_PLUS:integer=187; 
    VK_OEM_MINUS:integer=189; 
      

  4.   


    const 
    VK_OEM_PLUS:integer=187; 
    VK_OEM_MINUS:integer=189;