Add-Type -ReferencedAssemblies "[Link].
Forms" -TypeDefinition @"
using System;
using [Link];
using [Link];
using [Link];
public class KeyBlockerApp : Form {
private const int WH_KEYBOARD_LL = 13;
private static LowLevelKeyboardProc _proc = HookCallback;
private static IntPtr _hookID = [Link];
public delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr
lParam);
protected override void SetVisibleCore(bool value) {
[Link](false); // Ẩn cửa sổ form
}
public static void Start() {
_hookID = SetWindowsHookEx(WH_KEYBOARD_LL, _proc, GetModuleHandle(null),
0);
[Link](new KeyBlockerApp());
UnhookWindowsHookEx(_hookID);
}
private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) {
if (nCode >= 0) {
int vkCode = Marshal.ReadInt32(lParam);
// 27 = Esc, 117 = F6, 160 = Left Shift, 161 = Right Shift
if (vkCode == 27 || vkCode == 117 || vkCode == 160 || vkCode == 161) {
return (IntPtr)1; // Chặn phím
}
}
return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
[DllImport("[Link]")]
private static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProc
lpfn, IntPtr hMod, uint dwThreadId);
[DllImport("[Link]")]
private static extern bool UnhookWindowsHookEx(IntPtr hhk);
[DllImport("[Link]")]
private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr
wParam, IntPtr lParam);
[DllImport("[Link]")]
private static extern IntPtr GetModuleHandle(string lpModuleName);
}
"@
[KeyBlockerApp]::Start()