在c#中禁用右键(全局),如AHK程序

时间:2014-10-09 17:59:11

标签: c# mouse-hook

我知道c#并且我想创建一个仅用于非活动和活动鼠标左/右按钮的功能(在c#代码中),就像AHK程序一样。你能救我吗?

1 个答案:

答案 0 :(得分:0)

查看https://globalmousekeyhook.codeplex.com/,它具有完整的全局键盘和鼠标挂钩功能。

以下示例基于提到的鼠标右键单击抑制库

右键点击抑制器

using System;
using System.Windows.Forms;
using MouseKeyboardActivityMonitor.WinApi;

namespace Demo
{
    class MouseRightClickDisable:IDisposable
    {
        private readonly MouseHookListener _mouseHook;

        public MouseRightClickDisable()
        {
            _mouseHook=new MouseHookListener(new GlobalHooker());
            _mouseHook.MouseDownExt += MouseDownExt;
            _mouseHook.Enabled = true;
        }

        private void MouseDownExt(object sender, MouseEventExtArgs e)
        {
            if (e.Button != MouseButtons.Right) { return; }
            e.Handled = true; //suppressing right click
        }


        public void Dispose()
        {
            _mouseHook.Enabled = false;
            _mouseHook.Dispose();
        }
    }
}

<强>用法

internal static class Program
{

    [STAThread]
    private static void Main()
    {
        using (new MouseRightClickDisable())
            Application.Run();
    }
}

控制台示例

注意:添加System.Windows.Forms.dll作为控制台应用程序的参考

internal static class Program
{
    [STAThread]
    private static void Main()
    {
        Console.WriteLine("Mouse Hook");

        // our UI thread here
        var t = new Thread(() =>
        {
            using (new MouseRightClickDisable())
                Application.Run();
        });

        t.Start();

        //some console task here!
        for (var i = 0; i < 10; i++)
        {
            Console.WriteLine("Console Task {0}",i);
            Thread.Sleep(100);
        }


        Console.WriteLine("press any key to terminate the application...");
        Console.ReadKey();
        Application.Exit();
    }
}