C# 鎖定鍵盤,滑鼠

來源:互聯網
上載者:User
我的廣告單元,有空點一下哦,謝謝!

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);//鎖定鍵盤和滑鼠,包括工作管理員熱鍵
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.