當前位置:編程學習大全網 - 源碼下載 - c# 編程 屏蔽TAB+ALT組合鍵

c# 編程 屏蔽TAB+ALT組合鍵

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Runtime.InteropServices;

using System.Diagnostics;

using System.IO;namespace FindOtherComputerIp

{

class lockScreen

{

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;

}

private GCHandle _hookProcHandle;

[DllImport(@"native.dll")]

public extern static bool FuckSysKey(bool enAble); //禁用alt+ctrl+del //設置鉤子

[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); //主進程模塊 [DllImport("User32.dll")]

public static extern IntPtr FindWindowEx(IntPtr ph, IntPtr ch, String cn, String wn);

[DllImport("User32.dll")]

public static extern bool ShowWindow(IntPtr hWnd, long nCmdShow); public const uint spi_screensaverrunning = 97;

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

public static extern bool SystemParametersInfo(uint uiAction, uint uiParam, ref bool pvParam, uint fWinIni);

public void Hook_Start()

{

// 安裝鍵盤鉤子

if (hHook == 0)

{

KeyBoardHookProcedure = new HookProc(KeyBoardHookProc);

_hookProcHandle = GCHandle.Alloc(KeyBoardHookProcedure);

hHook = SetWindowsHookEx(WH_KEYBOARD_LL,

KeyBoardHookProcedure,

GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0); //如果設置鉤子失敗.

if (hHook == 0)

{

Hook_Clear();

}

}

} //取消鉤子事件

public void Hook_Clear()

{

bool retKeyboard = true;

if (hHook != 0)

{

retKeyboard = UnhookWindowsHookEx(hHook);

hHook = 0;

}

//如果去掉鉤子失敗.

if (!retKeyboard) throw new Exception("鉤子卸載失敗.");

} //這裏可以添加自己想要的信息處理

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

{

if (nCode >= 0)

{

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

if (kbh.vkCode == (int)System.Windows.Forms.Keys.Tab && (int)System.Windows.Forms.Control.ModifierKeys == (int)System.Windows.Forms.Keys.Alt) //截獲Alt+Tab

{

return 1;

}

}

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

}

}

}

  • 上一篇:倚天Ⅱ自由世界的設置介紹
  • 下一篇:FC遊戲每過壹關都有小遊戲,其中猜拳比較受關註。
  • copyright 2024編程學習大全網