我想在 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
的好文章。