在 c# 中禁用键盘/鼠标

  • 本文关键字:键盘 鼠标 c# .net
  • 更新时间 :
  • 英文 :


我需要在我的应用程序中的系统级别在特定时间段内禁用键盘/鼠标或两者。

我有以下几点来做这件事

    public partial class NativeMethods
    {
        /// Return Type: BOOL->int
        ///fBlockIt: BOOL->int
        [System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint = "BlockInput")]
        [return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)]
        public static extern bool BlockInput([System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)] bool fBlockIt);
    }

通过此代码,任务已完成,但是当用户单击CTRL + ALT + DELETE键盘和鼠标时,它将再次工作。谁能告诉我如何阻止这种情况?

Windows

级别的快捷方式和宏(CTRL+ALT+DELWINDOWS+L、ALT+TABCTRL+SHIFT+ ESC)是不由应用程序处理的消息,它们由 Windows 运行时处理。您可以通过创建一个简单的窗体并重写 WndProc 方法并检查这些消息来检查这一点。
无论如何,这里有一些关于如何挂接键盘的教程:

  • http://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook http://www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C
  • http://blogs.msdn.com/b/toub/archive/2006/05/03/589423.aspx

最新更新