以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  关于快捷键  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=121615)

--  作者:luodang2050
--  发布时间:2018/7/10 15:04:00
--  关于快捷键
目前项目已设置了全局热键,发现如下问题:
1、热键容易与其他程序冲突,特别是项目多开的时候。

现想实现局部热键,仅当当前项目非最小化时,热键才生效,且多开项目能够不冲突,应该怎么实现?

--  作者:有点甜
--  发布时间:2018/7/10 15:29:00
--  

1、全局热键,冲突,这个是不能避免的。好比ctrl+all+z,这个被QQ占用了,你就不能再使用这个快捷键做你的操作了。

 

2、你可以在项目获取焦点的时候设置热键,项目失去焦点的时候,注销热键。systemIdle事件(细节自己调整)

 

If System.Windows.Forms.Form.ActiveForm isNot Nothing Then

    output.show("获取焦点" & date.now)

Else

    output.show("失去焦点" & date.now)

End If


--  作者:luodang2050
--  发布时间:2018/7/10 15:35:00
--  
这种方法的话,当项目多开且同时获取焦点时,热键容易混乱。能否设置局部热键,仅针对该项目生效呢?
--  作者:有点甜
--  发布时间:2018/7/10 15:42:00
--  
以下是引用luodang2050在2018/7/10 15:35:00的发言:
这种方法的话,当项目多开且同时获取焦点时,热键容易混乱。能否设置局部热键,仅针对该项目生效呢?

 

没有局部热键。你用的系统热键只有一个,不能冲突。

 

局部热键,请在你的窗口的keydown或者表格的keydown事件处理,这样只有打开窗口、焦点在窗口的时候,才会触发。