C# 替换所有程序的Windows快捷方式
是否可以让我的覆盖优先于整个系统,因此即使在运行web浏览器、word编辑器或绘图程序时(我的应用程序仍将在后台运行或作为服务运行) 使用Visual C#2010 我如何在代码中重写的示例:C# 替换所有程序的Windows快捷方式,c#,service,hotkeys,C#,Service,Hotkeys,是否可以让我的覆盖优先于整个系统,因此即使在运行web浏览器、word编辑器或绘图程序时(我的应用程序仍将在后台运行或作为服务运行) 使用Visual C#2010 我如何在代码中重写的示例: protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if((keyData == (Keys.Control | Keys.C)) { //your implementation
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if((keyData == (Keys.Control | Keys.C))
{
//your implementation
return true;
}
else if((keyData == (Keys.Control | Keys.V))
{
//your implementation
return true;
}
else
{
return base.ProcessCmdKey(ref msg, keyData);
}
}
您应该使用全局钩子,这是一个很好的库,可以简化过程。下面是一个基于您的问题的示例
internal class KeyboardHook : IDisposable
{
private readonly KeyboardHookListener _hook = new KeyboardHookListener(new GlobalHooker());
public KeyboardHook()
{
_hook.KeyDown += hook_KeyDown;
_hook.Enabled = true;
}
private void hook_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.C && e.Control)
{
//your implementation
e.SuppressKeyPress = true; //other apps won't receive the key
}
else if (e.KeyCode == Keys.V && e.Control)
{
//your implementation
e.SuppressKeyPress = true; //other apps won't receive the key
}
}
public void Dispose()
{
_hook.Enabled = false;
_hook.Dispose();
}
}
使用示例:
internal static class Program
{
private static void Main()
{
using (new KeyboardHook())
Application.Run();
}
}
如果你给我一个-1,请至少解释一下为什么你想要一个全球挂钩。请为您的问题提供更多信息。是否要捕获密钥?
GlobalHooker
???认真地天哪。。。我们程序员在命名类时应该更加注意。再想一想:也许他们是故意的。我想它是在“业务”层。