unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure HotKeyDown(var Msg: Tmessage); message WM_HOTKEY;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
HotKeyId: Integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
HotKeyId := GlobalAddAtom('MyHotKey')- $C000; //快捷键取得唯一标识ID
RegisterHotKey(Handle, hotkeyid, MOD_ALT + MOD_CONTROL, VK_F8);
//上面 的代码注册了一个热键:Ctrl+Alt+F8。当然如果你希望象TAKEIT那样,只用F8, 就这么写:/
//注:handle是一个特殊的变量,它表示当前窗口的句柄。
end;
procedure TForm1.HotKeyDown(var Msg: Tmessage);
begin
if (Msg.LparamLo = MOD_ALT + MOD_CONTROL) AND (Msg.LParamHi = VK_F8) then // 假设热键为ALT+F8
begin
if Form1.Visible //判断窗口是否存在
then Form1.Hide
else Form1.Show;
// ShowMessage('热键演示为Ctrl+Alt+F8');
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnRegisterHotKey(handle, HotKeyId); //注销HotKey, 释放资源。
end;
end.
10-26