怎么屏蔽一个全局快捷键(如F12)?(100分)

  • 主题发起人 主题发起人 dawnsoft
  • 开始时间 开始时间
D

dawnsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么屏蔽一个全局快捷键(如F12)?<br><br> &nbsp;//注册全局热键<br> &nbsp;HotKey1:=GlobalAddAtom('Vinsa');<br> &nbsp;RegisterHotKey(handle,HotKey1,0, VK_F12); //热键是Ctrl+Alt+X;<br>//注销<br> UnRegisterHotKey(handle,HotKey1);<br><br>但F12已经被其他程序注册了,我想先注销F12,再自己定义一个,问题是用UnRegisterHotKey的时候,我并不知道HotKey1的值.
 
可以用钩子啊。
 
声明:<br>procedure WMhotkeyhandle(var msg:Tmessage);<br> &nbsp; &nbsp; &nbsp;message wm_hotkey; //响应敏感键按键消息 <br>var<br>hotkeyid :integer; <br><br>procedure TForm1.FormCreate(Sender: TObject);<br>begin<br>hotkeyid:=GlobalAddAtom('hotkey');<br>RegisterHotKey(handle, hotkeyid, 0, VK_F1);<br>//设置全局键为F1<br>end;<br>procedure TForm1.Wmhotkeyhandle <br>(var msg:Tmessage);<br>begin<br>//这里是对f1键的响应,如果屏蔽就什么也不做<br>end;<br>procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);<br>begin<br>//取消全局键<br>unregisterhotkey(handle,hotkeyid);<br>DeleteAtom(HotKeyID);<br>end;
 
To ChJK:<br> &nbsp; 问题是我要屏蔽的快捷键不是我注册的,我并不知道handle是多少,那unregisterhotkey就用不了啦。
 
if key =VK_F1 then exit;
 
我要的是屏蔽全局快捷键!
 
全局键盘钩子,优先于热键??
 
多人接受答案了。
 
后退
顶部