Delphi 全局热键 触发打勾事件
privateaatom:atom;c:atom;procedurehotkey(varmsg:tmessage);messagewm_hotkey;//定义全局热键消息...
private
aatom:atom;
c:atom;
procedure hotkey(var msg:tmessage);message wm_hotkey; //定义全局热键消息事件
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a,b:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
aatom:=globaladdatom('hotkey');
c:=globaladdatom('hotkey'); //全局热键ID
RegisterHotKey(handle,aatom,MOD_ALT,vk_f12); //注册全局热键
RegisterHotKey(handle,c,MOD_ALT,vk_f11);
end;
procedure TForm1.hotkey(var msg:tmessage); //热键响应事件
begin
if (msg.LParamHi=VK_F12) and (msg.LParamLo=MOD_ALT) then //全局热键 ALT+F12
begin
a:=a+1;
a:=a mod 2;
if a=1 then
checkbox1.Checked:=true
else
checkbox1.Checked:=false
end;
if (msg.LParamHi=VK_F11) and (msg.LParamLo=MOD_ALT) then
b:=b+1;
b:=b mod 2;
if b=1 then
checkbox2.Checked:=true
else
checkbox2.Checked:=false
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
globalDeleteatom(aatom);
globalDeleteatom(c);
end;
如上代码, 编译是成功。
热键ALT+F11是可以运行。
但是,ALT+F12却没效果,
不知道为什么? 展开
aatom:atom;
c:atom;
procedure hotkey(var msg:tmessage);message wm_hotkey; //定义全局热键消息事件
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a,b:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
aatom:=globaladdatom('hotkey');
c:=globaladdatom('hotkey'); //全局热键ID
RegisterHotKey(handle,aatom,MOD_ALT,vk_f12); //注册全局热键
RegisterHotKey(handle,c,MOD_ALT,vk_f11);
end;
procedure TForm1.hotkey(var msg:tmessage); //热键响应事件
begin
if (msg.LParamHi=VK_F12) and (msg.LParamLo=MOD_ALT) then //全局热键 ALT+F12
begin
a:=a+1;
a:=a mod 2;
if a=1 then
checkbox1.Checked:=true
else
checkbox1.Checked:=false
end;
if (msg.LParamHi=VK_F11) and (msg.LParamLo=MOD_ALT) then
b:=b+1;
b:=b mod 2;
if b=1 then
checkbox2.Checked:=true
else
checkbox2.Checked:=false
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
globalDeleteatom(aatom);
globalDeleteatom(c);
end;
如上代码, 编译是成功。
热键ALT+F11是可以运行。
但是,ALT+F12却没效果,
不知道为什么? 展开
2个回答
金山毒霸
2024-10-31 广告
2024-10-31 广告
大部分系统错误,是因为某些DLL文件丢失造成的,比如未安装DirectX9或DirectX 9.0组件已损坏、缺少Visual C ++库、未安装.net库。解决方法如下:一、 手动解决方法1、先确定电脑操作系统是多少位的,现在的电脑一般都...
点击进入详情页
本回答由金山毒霸提供
展开全部
代码是没错的,是不是ALT+F12被其他程序注册为热键啦,改成这样看下有没问题
if not RegisterHotKey(handle,aatom,MOD_ALT,vk_f12) then
showmessage('注册热键ALT+F12失败');
If not RegisterHotKey(handle,c,MOD_ALT,vk_f11) then
showmessage('注册热键ALT+F11失败');
if not RegisterHotKey(handle,aatom,MOD_ALT,vk_f12) then
showmessage('注册热键ALT+F12失败');
If not RegisterHotKey(handle,c,MOD_ALT,vk_f11) then
showmessage('注册热键ALT+F11失败');
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询