现在碰到一个帮助提示问题,是在一个窗口中如何对象上只要按下F1键,就可以启动帮助文件来,请哥们姐们发表一下你们的思路、点子!先谢谢!在线等待!

解决方案 »

  1.   

    我给你一个源代码,这是定义的系统热键,不管是否在你的窗口上,都可以使用。
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        id: Integer;
        procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation  const RSP_SIMPLE_SERVICE=1;
      function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord; stdcall; external 'KERNEL32.DLL';{$R *.dfm}procedure TForm1.WMHotKey (var Msg : TWMHotKey);
    begin
      if msg.HotKey = id then
        showmessage('你按下热键');
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    Const
      {ALT、CTRL和F1键的虚拟键值}
      MOD_ALT = 1;
      MOD_CONTROL = 2;
      VK_F1 = 112;
    begin
      if GlobalFindAtom('MyHotkey') = 0 then
        begin
          id:=GlobalAddAtom('MyHotkey');
          RegisterHotKey(handle,id,0,VK_F1);//如果是ALT+F1则为:RegisterHotKey(handle,id,MOD_ALT,VK_F1);如果是Ctrl+Alt+F1则为:RegisterHotKey(handle,id,MOD_CONTROL+MOD_ALT,VK_F1);
        end
      else
        showmessage('热键冲突!');
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      UnRegisterHotKey(handle,id);
      GlobalDeleteAtom(id);
    end;end.