关于使用空格键做为快捷键的问题(100分)

  • 主题发起人 主题发起人 LSS
  • 开始时间 开始时间
L

LSS

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序中使用空格键做为快捷键,但窗口上有checkbox控件,当焦点落到
checkbox上时,使用空格快捷键与选择checkbox状态发生冲突,能否禁止用
空格转换checkbox状态,而使用我使用空格调用的功能?
我做了一个钩子程序,用键盘HOOK,将空格键截获,彻底阻止了空格的其它
功能,但在其它应用程序同时使用时,按动空格键,则出现严重错误,能否
在HOOK中判断当前应用程序为我的程序,从而避开截获其它应用程序中的空
格,或有其它什么好办法??
 
用局部hook, 只对当前程序起作用的.
 
有意思!
 
不要把hook写在DLL中,只在你的应用程序中有效
 
其实没必要用hook
将form.KeyPreview置为true. 然后写form.OnKeyDown和form.OnKeyPress
事件, 在其中决定是否是空格并决定是否要将空格作为快捷键处理, 如果是
则处理快捷键并将key换成0和#0即可.
 
Another_eYes说的有理.
我看行.
 
form.keypreview:=true;
然后就可以截获所有的按键了.
 
把你的快捷建改掉:) 空格->F1
 
我也觉得是,用空格做快捷建有点太那个....
 
我的HOOK必须在DLL中
如何在DLL中实现HOOK
KEY=0我试过,但对checkbox不起作用
 
>我的HOOK必须在DLL中
???
try Mr. Qian Da Zhi 's hook demo on Shen Du Li Xian
 
如何判断当前的应用程序是我的应用程序或是如何使用局部HOOK(在DLL内)
TO CJ:
请问钱达智的DEMO在何处
 
不必用hook, 要截取checkbox的key也很简单, 在application.OnMessage
中写就可以了.
可以判断消息是否是wm_keydown, wm_char, 并且是否空格, 如果是, 再
判断是否需要截获, 如果需要的话只要处理你的快捷键并handled := true;
就可以了.
 
多谢Another_eYes 大侠在众多问题的鼎力相助,
我试了一下,我感觉到利用消息来判断一定能好使,但本人学识浅薄,特问一下
在判断消息类型为wm_keydown后,如何取得当前按的键值,另外handled的用途
是什么?多谢多谢
 
message.wparam就是virtual key code
handled如果为true, 则该消息不再往下传递.
比如你判断是空格键时(if message.wparam = VK_SPACE) 置handled为
true, 那么本来该接受该消息的控件就收不到这个wm_keydown了(比如
checkbox就不会接受到空格键了).
 
多谢Another_eYes,问题已经解决,希望您能帮忙
<a href="http://www.gislab.ecnu.edu.cn/delphibbs/dispq.asp?LID=148114" >另一个问题</a>
 
多人接受答案了。
 
后退
顶部