C#调用系统API指定快捷键

wangwuyilove 2012-11-24

快捷键的作用大家都清楚,就是快捷嘛,操作起来方便.用电脑的人很少有没用过Ctrl + C 和Ctrl + V的. 其他很多软件也有各种快捷键.电脑自然没那么聪明,知道我们敲哪些键然后给出相应反应,这都得我们自己写代码实现啊.指定快捷键有两种方式.

方法一.当应用程序某个页面获得焦点时,直接写一个该页面的KeyDown事件处理函数就行,非常的简单.我们大多数时候就用的这种快捷键.
方法二.在任何时候都能使用快捷键,此时必须调用系统的API才行.这种情况我们用的不多.不过有个典型的例子,就是通过快捷键切换输入法.输入法的应用程序肯定是通过API处理的.

方法一
我们知道点击鼠标,敲键盘都是触发一个个的事件.那使用快捷键自然是要写个键盘敲击的事件处理函数.我们知道每个控件都可以对应很多事件.所以键盘的的事件处理自然可以和某一个控件关联起来.但一般不怎么样,因为这样的话我们必须得先让此控件获得焦点才行. 而我们很多时候可能希望只要是某个页面打开的情况下,不管焦点在其中的哪个控件上都可以点快捷键键.那我们应该把事件处理与页面(Form)关联起来.假如有页面Form1.对应的事件处理函数如下.

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.A)              //快捷键a
{
MessageBox.Show("hello arwen");
}
else if (e.KeyCode == Keys.F1)  //快捷键F1
{
MessageBox.Show("please help.");
}
else if (e.Control && e.Shift && e.KeyCode == Keys.F)  //快捷键Ctrl + Shift + F
{
MessageBox.Show("search some info.");
}
else if (e.Alt && e.KeyCode == Keys.X)              //快捷键Alt + X
{
MessageBox.Show("Close.");
}
}

在函数里面可以通过e.KeyCode判断是敲了哪个键.然后做相应的处理就OK.当然你也可以不用e.KeyCode.而是用e.KeyValue来判断,KeyValue就是每个键上面的字母或符号对应的ASCII 码值.

相关推荐