通过Hook技术屏蔽系统键

转载 2004年11月03日 01:08:00

add a checkbox named chkDisable.caption="&Disable ALT-TAB, ALT-ESC, CTRL-ESC,LWin,RWin,Win+Any"
to a new from named frmMain.frm in new project hook_kb_LL.vbp
add code below:


Option Explicit

Dim hhkLowLevelKybd As Long

Private Sub chkDisable_Click()
If chkDisable = vbChecked Then
    hhkLowLevelKybd = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf  LowLevelKeyboardProc, App.hInstance, 0)
Else
    UnhookWindowsHookEx hhkLowLevelKybd
    hhkLowLevelKybd = 0
End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
If hhkLowLevelKybd <> 0 Then UnhookWindowsHookEx hhkLowLevelKybd
End Sub

in new module named modDisableLowLevelKeys.bas
code below:



Option Explicit

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public Const HC_ACTION = 0
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Public Const WM_SYSKEYDOWN = &H104
Public Const WM_SYSKEYUP = &H105
Public Const VK_TAB = &H9
Public Const VK_CONTROL = &H11
Public Const VK_ESCAPE = &H1B

Public Const WH_KEYBOARD_LL = 13
Public Const LLKHF_ALTDOWN = &H20

Public Type KBDLLHOOKSTRUCT
    vkCode As Long
    scanCode As Long
    flags As Long
    time As Long
    dwExtraInfo As Long
End Type

Dim p As KBDLLHOOKSTRUCT

Public Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
   Dim
fEatKeystroke As Boolean
  
   If (nCode = HC_ACTION) Then
      If wParam = WM_KEYDOWN Or wParam = WM_SYSKEYDOWN Or wParam = WM_KEYUP Or wParam = WM_SYSKEYUP Then
         CopyMemory p, ByVal lParam, Len(p)
         fEatKeystroke = _
            ((p.vkCode = VK_TAB) And ((p.flags And LLKHF_ALTDOWN) <> 0)) Or _
            ((p.vkCode = VK_ESCAPE) And ((p.flags And LLKHF_ALTDOWN) <> 0)) Or _
            ((p.vkCode = VK_ESCAPE) And ((GetKeyState(VK_CONTROL) And &H8000) <> 0)) Or _
            ((p.vkCode = 91) Or (p.vkCode = 92) Or (p.vkCode = 93)) '左右Win 和徽标键
            End If
    End If
   
    If
fEatKeystroke Then
        LowLevelKeyboardProc = -1
    Else
        LowLevelKeyboardProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)
    End If
End Function

Delphi屏蔽指定热键

//以下代码在Delphi7 + XP SP3下测试通过 //button1为注册钩子屏蔽,button2为卸载钩子取消屏蔽F1 unit Unit1; interface use...
  • qingfeng45697
  • qingfeng45697
  • 2015年04月15日 18:00
  • 950

C# Winform 实现屏蔽键盘的win和alt+F4的实现代码

最近在做一个恶搞程序,就是打开后,程序获得桌面的截图然后,然后全屏显示在屏幕上,用户此时则不能进行任何操作。 此时希望用户不能通过键盘alt+F4来结束程序及通过Win的组合键对窗口进行操作。我在网...
  • mao_mao37
  • mao_mao37
  • 2016年07月08日 11:03
  • 2855

C++程序屏蔽常规按键(ctrl+alt+delete除外)

C++屏蔽键盘按键其实就是用钩子,只是让按键不起反应还是很简单的 1、首先设置钩子 HHOOK keyHook = NULL; void setHook() { keyHook =Set...
  • rongyong
  • rongyong
  • 2015年09月02日 15:35
  • 1307

delphi hook alt+F4 ctrl+delete+alt win键等

unit uHook; interface uses   Windows, Messages, SysUtils, Variants, Classes, Controls, Fo...
  • y281252548
  • y281252548
  • 2016年09月22日 15:09
  • 789

屏蔽CTRL+ALT+DEL热键

网友1: 在Windows 9x/Me系统中,屏蔽Ctrl+Alt+Del和各种任务开关键的方法是通过下面的方法实现的: BOOL bOldState; SystemParametersInfo(SP...
  • zhoujiaxq
  • zhoujiaxq
  • 2013年12月26日 14:43
  • 1257

delphi 屏蔽任务栏,屏蔽热键

在自己的程序中将任务栏隐藏起来,并屏蔽Ctrl+Alt+Del和Alt+Tab等系统热键,也是很有趣的。要实现它们比较容易,但千万别忘了恢复正常,另外,本例中使用了3个API函数:FindWindow...
  • u010673851
  • u010673851
  • 2015年12月16日 09:32
  • 649

wpf屏蔽窗口系统菜单

 最近做了一个登录窗口,其中WindowStyle="None",隐藏了窗口的标题栏。但是当用alt+space快捷键的时候,系统菜单还是会弹出来。最后在网上找到了屏蔽的方法。主要是调用API函数实现...
  • eldersubhuti
  • eldersubhuti
  • 2010年08月06日 10:12
  • 3220

钩子编程(HOOK) 屏蔽所有按键、鼠标及系统功能键 (4)

[钩子编程(HOOK) 屏蔽所有按键鼠标及系统功能键]上篇文章《钩子编程(HOOK) 安装系统全局钩子》已经详细的讲解了全局钩子的安装,下面我们增强一下钩子的功能,实现屏蔽所有按键鼠标与系统功能键。要...
  • u012339743
  • u012339743
  • 2014年05月15日 13:32
  • 4457

android屏蔽Back键和Menu键的方法

在activity中重写onKeyDown函数 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (ke...
  • u012554768
  • u012554768
  • 2014年02月14日 14:14
  • 2231

Window Hook 技术详解

Hook简介 微软的MSDN中,对Hook的解释为: A hook is a point in the system message-handling mechanism where an appl...
  • cx1990820
  • cx1990820
  • 2015年08月20日 10:54
  • 2473
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:通过Hook技术屏蔽系统键
举报原因:
原因补充:

(最多只允许输入30个字)