首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

?怎么实现象金山词霸一样按一热键自动激活某一程序.

2012-04-06 
????如何实现象金山词霸一样按一热键自动激活某一程序.???? 如何实现象金山词霸一样按一热键自动激活某一

????如何实现象金山词霸一样按一热键自动激活某一程序.????

如何实现象金山词霸一样按一热键自动激活某一程序或弹出某一窗口???

比如按Ctr+Shift+F1键弹出一个窗口?


[解决办法]
全代码:
注册ctrl+shift+F1
unit Unit1;

interface

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

type
TForm1 = class(TForm)
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure WMHotKey(var Msg: TWMHotKey);message WM_HOTKEY;
public
{ Public declarations }
id,id1,id2: Integer;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
Var TmpID:Integer;
begin
TmpID:=GlobalFindAtom( 'MyHotkey ');
if TmpID=0 then //查找全局原子.如果返回值不为0,则说明这个全局原子已经被注册;
id:=GlobalAddAtom( 'MyHotkey ')
else
ID:=TmpID;

TmpID:=GlobalFindAtom( 'MyHotkey1 ');
if TmpID=0 then
id1:=GlobalAddAtom( 'MyHotkey1 ')
else
id1:=TmpID;

TmpID:=GlobalFindAtom( 'MyHotkey2 ');
if TmpID=0 then
id2:=GlobalAddAtom( 'MyHotkey2 ')
else
id2:=TmpID;
RegisterHotKey(Handle, id, MOD_CONTROL or MOD_SHIFT, VK_F1); //注册热键:Ctrl+Shift+F1
RegisterHotKey(Handle, id1, MOD_CONTROL, VK_F2);//注册热键:Ctrl+F2
RegisterHotKey(Handle, id2, MOD_CONTROL, VK_F3);//注册热键:Ctrl+F3
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
UnregisterHotKey(Handle,ID);//释放热键Ctrl+F1
UnregisterHotKey(Handle,ID1);//释放热键Ctrl+F2
UnregisterHotKey(Handle,ID2);//释放热键Ctrl+F3
GlobalDeleteAtom(ID); //删除全局原子ID
GlobalDeleteAtom(ID1);//删除全局原子ID1
GlobalDeleteAtom(ID2);//删除全局原子ID2
end;

procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
if msg.HotKey=ID then //热键Ctrl+Shift+F1的消息.
ShowMessage( 'Ctrl+Shift+F1! ')
else if Msg.HotKey=ID1 then //热键Ctrl+F2的消息.
ShowMessage( 'Ctrl+F2! ')
else if Msg.HotKey=ID2 then //热键Ctrl+F3的消息.
ShowMessage( 'Ctrl+F3! ');
end;

end.

热点排行