當前位置:編程學習大全網 - 源碼下載 - C#編寫的掛機鎖代碼

C#編寫的掛機鎖代碼

C# 掛機鎖 可以用hook(鉤子)去做 監聽鍵盤的按鍵 並且kill任務管理器的進程 鉤子具體實現需要委托。網上有掛機鎖的源碼。 追問: 都不可以用 回答: using System; using System.Windows.Forms; using System.Text; using System.Runtime.InteropServices; using System.Reflection; using System.IO; namespace HookLock { public class Hook { #region 私有變量 /// <summary> /// 鍵盤鉤子句柄 /// </summary> private IntPtr m_pKeyboardHook = IntPtr.Zero; /// <summary> /// 鉤子委托聲明 /// </summary> /// <param name="nCode"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam); /// <summary> /// 鍵盤鉤子委托實例 /// </summary> /// <remarks> /// 不要試圖省略此變量,否則將會導致 /// 激活 CallbackOnCollectedDelegate 托管調試助手 (MDA)。 /// 詳細請參見MSDN中關於 CallbackOnCollectedDelegate 的描述 /// </remarks> private HookProc m_KeyboardHookProcedure; // 底層鍵盤鉤子 public const int idHook = 13; /// <summary> /// 安裝鉤子 /// </summary> /// <param name="idHook"></param> /// <param name="lpfn"></param> /// <param name="hInstance"></param> /// <param name="threadId"></param> /// <returns></returns> [DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)] public static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr pInstance, int threadId); /// <summary> /// 卸載鉤子 /// </summary> /// <param name="idHook"></param> /// <returns></returns> [DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)] public static extern bool UnhookWindowsHookEx(IntPtr pHookHandle); /// <summary> /// 傳遞鉤子 /// </summary> /// <param name="pHookHandle">是您自己的鉤子函數的句柄。用該句柄可以遍歷鉤子鏈</param> /// <param name="nCode">把傳入的參數簡單傳給CallNextHookEx即可</param> /// <param name="wParam">把傳入的參數簡單傳給CallNextHookEx即可</param> /// <param name="lParam"></param> /// <returns></returns> [DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)] public static extern int CallNextHookEx(IntPtr pHookHandle, int nCode, Int32 wParam, IntPtr lParam); #endregion 私有變量 #region 私有方法 /// <summary> /// 鍵盤鉤子處理函數 /// </summary> /// <param name="nCode"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> /// <remarks>此版本的鍵盤事件處理不是很好,還有待修正.</remarks> private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam) { //return 1; KeyMSG m = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG)); if (m_pKeyboardHook != IntPtr.Zero) { switch (((Keys)m.vkCode)) { case Keys.LWin: case Keys.RWin: case Keys.Delete: case Keys.Alt: case Keys.Escape: case Keys.F4: case Keys.Control: case Keys.Tab: return 1; } } return 0; } #endregion 私有方法 #region 公***方法 /// <summary> /// 安裝鉤子 /// </summary> /// <returns></returns> public bool InstallHook() { //IntPtr pInstance = Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().ManifestModule); IntPtr pInstance = (IntPtr)4194304; if (this.m_pKeyboardHook == IntPtr.Zero) { this.m_KeyboardHookProcedure = new HookProc(KeyboardHookProc); this.m_pKeyboardHook = SetWindowsHookEx(idHook, m_KeyboardHookProcedure, pInstance, 0); if (this.m_pKeyboardHook == IntPtr.Zero) { this.UnInstallHook(); return false; } } return true; } /// <summary> /// 卸載鉤子 /// </summary> /// <returns></returns> public bool UnInstallHook() { bool result = true; if (this.m_pKeyboardHook != IntPtr.Zero) { result = (UnhookWindowsHookEx(this.m_pKeyboardHook) && result); this.m_pKeyboardHook = IntPtr.Zero; } return result; } [StructLayout(LayoutKind.Sequential)] public struct KeyMSG { public int vkCode; public int scanCode; public int flags; public int time; public int dwExtraInfo; } #endregion 公***方法 } } 這個就是核心的代碼 追問: 我有Hook代碼,就是不行 回答: 632959910 妳加我

采納哦

  • 上一篇:生日小程序源代碼
  • 下一篇:ioc源代碼的詳細解釋
  • copyright 2024編程學習大全網