在c#中禁用键盘/鼠标

时间:2012-12-17 12:43:14

标签: 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键盘和鼠标再次工作时。 任何人都可以告诉我如何阻止它吗?

1 个答案:

答案 0 :(得分:3)

Windows级别快捷方式和宏( CTRL + ALT + DEL WINDOWS + L < / kbd>, ALT + TAB CTRL + 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-鼠标和键盘 - 钩式-C
  • http://blogs.msdn.com/b/toub/archive/2006/05/03/589423.aspx