如何用C#实现特殊热键的设置 热键 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 另,不会有Shift+b这种热键,Shift+b应该是B有ctrl+a,alt+a,ctrl+shift,alt+shift,ctrl+alt+shif,ctrl+shift+a,alt+shift+a这些都是按键后不会真正键入字母的,才能定义成快捷键否则执行ctrl+c(复制)的时候,你如果换成shift+c,那么选中的所有文字就都被替换成C了,那怎么可以 AutoHotkey就可以实现这样的热键,只是不知道c#如何实现。 要是非要实现,就调用键盘API,判断键盘哪些键被按下了,然后去你定义好的数组里匹配看是否有组合内的所有键都被按下,然后就执行特定的函数呗 就是不知道调用哪个API啊,API的不熟的说 winform中在Form1_KeyDown中就可以处理private void Form_KeyDown(object sender,KeyEventArgs e){ if(e.KeyCode == Keys.F12 && e.Control) //按下Ctrl + F12 { // do sth } } 这样窗体必须获得焦点才行,如果焦点切换到别的窗体中,或者窗体最小化了,热键就不响应了那是自然,如果要系统级的,那还得winapi 搜了一下,只找到RegisterHotKey。这个只能定义Ctrl+a这样常规的热键 这种组合热键需要自己处理,发现按键符合组合热键表里的第一个,记住中间状态,再次按下的如果符合第二个就触发。像AutoHotkey是采用了hook + 自己的处理实现的,它的代码见 https://github.com/AutoHotkey/AutoHotkey/blob/master/Source/hook.cpp 不太明白“记住中间状态”的意思。到启发了一个思路:a+b热键;当检测到按了b键时,检测a键是否也同时按下了。如a键也是按下状态即执行代码,不是则忽略。这个想法是否可行? 貌似没有任何一个软件提供过这样设置快捷键的,况且连注册热键的API都不支持这种形式 这东西就别参考API热键如何设置了直接按照做对打游戏的思路,对键盘进行轮询,检测同一时间到底有哪几个键被按下. 亟待解决,求高手知道 linux socket要注意什么? 关于DataGrid输出的问题 数据表导出到EXCEL 在线等待!!更新后数据不变!!! 控件开发高手给看看吧。指点一下学习方法。 C#网站打开COM口读取数据显示到网站界面上 请问:怎样导出一个数据集里的数据? 在线等待,急 C#中float类型转换怎么禁止科学计数法 求教大神关于C++转C#的问题 C# xp运行正常,win7 win8出现无法加载DLL,动态链接库初始化例程失败
有ctrl+a,alt+a,ctrl+shift,alt+shift,ctrl+alt+shif,ctrl+shift+a,alt+shift+a
这些都是按键后不会真正键入字母的,才能定义成快捷键
否则执行ctrl+c(复制)的时候,你如果换成shift+c,那么选中的所有文字就都被替换成C了,那怎么可以
Form1_KeyDown中就可以处理private void Form_KeyDown(object sender,KeyEventArgs e)
{
if(e.KeyCode == Keys.F12 && e.Control) //按下Ctrl + F12
{
// do sth
}
}
那是自然,如果要系统级的,那还得winapi
像AutoHotkey是采用了hook + 自己的处理实现的,它的代码见 https://github.com/AutoHotkey/AutoHotkey/blob/master/Source/hook.cpp
不太明白“记住中间状态”的意思。
到启发了一个思路:a+b热键;当检测到按了b键时,检测a键是否也同时按下了。如a键也是按下状态即执行代码,不是则忽略。
这个想法是否可行?
直接按照做对打游戏的思路,对键盘进行轮询,检测同一时间到底有哪几个键被按下.