C# 锁定键盘,鼠标_仔仔的空间_百度空间

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Runtime.InteropServices;

using Microsoft.Win32;

using System.Diagnostics;

namespace WorkHelper

{

    class SysHook

    {

        [DllImport("user32")]

        public static extern bool BlockInput(bool isBlock);

        [DllImport(@"native.dll", EntryPoint = "FuckSysKey")]

        private extern static bool FuckSysKey(bool enAble);

        public void BlockKeyAndMouse(bool b)

        {

            BlockInput(b);

            FuckSysKey(b);//锁定ctrl+alt+del

        }

        public delegate int HookProc(int nCode, int wParam, IntPtr lParam);

        static int hHook = 0;

        public const int WH_KEYBOARD_LL = 13;

        //LowLevel键盘截获,如果是WH_KEYBOARD=2,并不能对系统键盘截取,Acrobat Reader会在你截取之前获得键盘。

        HookProc KeyBoardHookProcedure;

        //键盘Hook结构函数

        [StructLayout(LayoutKind.Sequential)]

        public class KeyBoardHookStruct

        {

            public int vkCode;

            public int scanCode;

            public int flags;

            public int time;

            public int dwExtraInfo;

        }

        #region DllImport

        //设置钩子

        [DllImport("user32.dll")]

        public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);

        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]

        //抽掉钩子

        public static extern bool UnhookWindowsHookEx(int idHook);

        [DllImport("user32.dll")]

        //调用下一个钩子

        public static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam);

        [DllImport("kernel32.dll")]

        public static extern int GetCurrentThreadId();

        [DllImport("kernel32.dll")]

        public static extern IntPtr GetModuleHandle(string name);

        public void Hook_Start()

        {

            // 安装键盘钩子

            if (hHook == 0)

            {

                KeyBoardHookProcedure = new HookProc(KeyBoardHookProc);

                //hHook = SetWindowsHookEx(2,

                //            KeyBoardHookProcedure,

                //          GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), GetCurrentThreadId());

                hHook = SetWindowsHookEx(WH_KEYBOARD_LL,

                          KeyBoardHookProcedure,

                        GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0);

               

                //如果设置钩子失败.

                if (hHook == 0)

                {

                    Hook_Clear();

                   

                    //throw new Exception("设置Hook失败!");

                }

            }

        }

        //取消钩子事件

        public void Hook_Clear()

        {

            bool retKeyboard = true;

            if (hHook != 0)

            {

                retKeyboard = UnhookWindowsHookEx(hHook);

                hHook = 0;

            }

            //如果去掉钩子失败.

            if (!retKeyboard) throw new Exception("UnhookWindowsHookEx failed.");

           

        }

        //这里可以添加自己想要的信息处理

        public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)

        {

            if (nCode >= 0)

            {

                KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));

                // MessageBox.Show(kbh.vkCode.ToString());

                if (kbh.vkCode != 32)

                {

                    return 1;

                }

            }

            return CallNextHookEx(hHook, nCode, wParam, lParam);

        }

        #endregion

    }

}

调用

                SysHook h = new SysHook();

                h.Hook_Start();//锁定键盘

                h.Hook_Clear();//解锁

                h.BlockKeyAndMouse(true);//锁定键盘和鼠标,包括任务管理器热键

来自:

本人试了

h.Hook_Start();//锁定键盘

                h.Hook_Clear();//解锁

可以用,后面的不行

0

0

0

(请您对文章做出评价)



郑重声明:资讯 【C# 锁定键盘,鼠标_仔仔的空间_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——