我想在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);
}
但这只有在窗口处于活动状态时才有效。即使其他窗口处于活动状态,如何使用快捷方式?
答案 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
。