Visual Studio中的快捷方式 - Windows窗体应用程序,而其他窗口处于活动状态

时间:2015-06-18 20:52:06

标签: winforms visual-studio shortcuts

我想在Windows窗体应用程序中使用快捷方式,并找到以下code

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
     if (keyData == (Keys.Enter)) {
       MessageBox.Show("Hello World!");
       return true;
     }
     return base.ProcessCmdKey(ref msg, keyData);
   }

但这只有在窗口处于活动状态时才有效。即使其他窗口处于活动状态,如何使用快捷方式?

1 个答案:

答案 0 :(得分:0)

您可以使用单个入口点以基本形式捕获和分发邮件。

基本表格

public class BaseForm : Form
{
    public void MyMessage(hwnd:HWND)
    {
       ...
       case MSG_SPECIFIC_ACTION_1 : handled=this.DoOnSpecificAction1();
       ... 
    }

    protected bool DoOnSpecificAction1(){ return=false;}
}

基本形式后裔

public class MyCustomForm : BaseForm
{
    protected override bool DoOnSpecificAction1()
    {
        MessageBox.Show("Hello");
        return true;    
    }
}

修改 - 全局KeyboardHook

如果您要在其他应用程序中捕获所有关键事件,则需要使用键盘挂钩。 Here是一篇很好的文章,描述了使用SetWindowsHookEx