可以组和其他的键,例如win+fN,但是Win+N我没有成功。没时间了,今天要手工了。 //下面组合键为win+f2 procedure TForm1.formcreate(Sender: TObject); begin registerhotkey(handle,0,mod_win,Vk_F2); end;procedure tform1.hotkey(var msg:tmessage); begin if (msg.LParamHi=VK_f2) and (msg.LParamLo=MOD_win) then begin SetForegroundWindow(handle); showmessage('fkdsjdf;'); end; end;
啊,搞定了,原来没有吃饭,现在终于可以安心吃饭了: 例如:Win+N. N的VK_CODE为78,所以上面的程序修改成: procedure TForm1.formcreate(Sender: TObject); begin registerhotkey(handle,0,mod_win,78); end;procedure tform1.hotkey(var msg:tmessage); begin if (msg.LParamHi=78) and (msg.LParamLo=MOD_win) then begin // SetForegroundWindow(handle); showmessage('fkdsjdf;'); winexec('notepad.exe',sw_show); end; end;
//下面组合键为win+f2
procedure TForm1.formcreate(Sender: TObject);
begin
registerhotkey(handle,0,mod_win,Vk_F2);
end;procedure tform1.hotkey(var msg:tmessage);
begin
if (msg.LParamHi=VK_f2) and (msg.LParamLo=MOD_win) then
begin
SetForegroundWindow(handle);
showmessage('fkdsjdf;');
end;
end;
例如:Win+N. N的VK_CODE为78,所以上面的程序修改成:
procedure TForm1.formcreate(Sender: TObject);
begin
registerhotkey(handle,0,mod_win,78);
end;procedure tform1.hotkey(var msg:tmessage);
begin
if (msg.LParamHi=78) and (msg.LParamLo=MOD_win) then
begin
// SetForegroundWindow(handle);
showmessage('fkdsjdf;');
winexec('notepad.exe',sw_show);
end;
end;
用Key钩子就是了,呵呵
Caption := IntToStr(Key);
就可在Form标题栏知道你刚才按下的键值。
Caption := IntToStr(Key);
就可在Form标题栏知道你刚才按下的键值。
a的VK_CODE=65,但是Char值为:97,使用热键的时候,应该使用65而不是97。
这是大家应该注意的。
我希望象屏蔽开始菜单按钮一样屏蔽windows键。