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



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

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);
   }

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

您可以使用单个入口点在基本窗体中捕获和调度邮件。

基本形式

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;    
    }
}

编辑 - 全局键盘挂钩

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

最新更新