Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 替换所有程序的Windows快捷方式_C#_Service_Hotkeys - Fatal编程技术网

C# 替换所有程序的Windows快捷方式

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

是否可以让我的覆盖优先于整个系统,因此即使在运行web浏览器、word编辑器或绘图程序时(我的应用程序仍将在后台运行或作为服务运行)

使用Visual C#2010

我如何在代码中重写的示例:

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
???认真地天哪。。。我们程序员在命名类时应该更加注意。再想一想:也许他们是故意的。我想它是在“业务”层。