Win2K/NT/XP环境下LWIN,RWIN,WIN+Any,Ctrl+Esc,Alt+Esc,Alt+TAB等键的禁用

原创 2004年08月26日 00:48: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.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))
           'TAB+ALT
           'Esc+ALT
           'Alt+Any(Alt+F4)
           'Esc+Ctrl
           '左右Win 和徽标键
            End If
    End If
   
    If fEatKeystroke Then
        LowLevelKeyboardProc = -1
    Else
        LowLevelKeyboardProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)
    End If
End Function

补充参考更多:

http://www.vbnet.mvps.org/index.html?code/hooks/lowlevelkeyboardproc.htm
http://www.zjol.com.cn/vbbible/software/program/vb/ccw/main.htm#Hook

进程防杀与屏蔽WIN 、alt+tab、ctrl+esc等键的方法

//DLL文件//GHook.cpp#define _WIN32_WINNT 0x0400#include #include "HookAPI.h"#include typedef HANDLE (_...
  • cyrx2003
  • cyrx2003
  • 2007年08月23日 23:12
  • 1251

vc禁用win键、alt+tab键

vc++屏蔽alt+tab和win系统热键
  • lizudenku
  • lizudenku
  • 2015年05月13日 09:28
  • 633

低级键盘钩子屏蔽Win键、Alt+Tab键的响应

低级键盘钩子屏蔽Win键、Alt+Tab键的响应   如果你是基于Windows操作系统做系统集成的,你可能希望你的最终产品独占系统资源。你希望规范用户行为,比如你不希望用户通过按Ctrl+Alt+D...
  • fanhaili
  • fanhaili
  • 2005年01月31日 18:34
  • 2932

屏蔽Windows98/2000/XP任务栏、win键、Ctrl+Esc、Alt+Tab、Ctrl+Alt+Del

关于这方面的文章挺多,对任务栏、win键、Ctrl+Esc、Alt+Tab的屏蔽,一般方法较为简单,最多用底层键盘钩子+DLL就能完美解决。但是针对Ctrl+Alt+Del的屏蔽,方法基本有两种,一种...
  • yefanqiu
  • yefanqiu
  • 2004年10月21日 16:28
  • 10866

屏蔽Windows98/2000/XP任务栏、win键、Ctrl+Esc、Alt+Tab、Ctrl+Alt+Del

2004年10月21日 16:28:00 关于这方面的文章挺多,对任务栏、win键、Ctrl+Esc、Alt+Tab的屏蔽,一般方法较为简单,最多用底层键盘钩子+DLL就能完美解决。但是针对Ctrl+...
  • softart
  • softart
  • 2007年10月27日 12:02
  • 475

屏蔽Windows98/2000/XP任务栏、win键、Ctrl+Esc、Alt+Tab、Ctrl+Alt+Del

关于这方面的文章挺多,对任务栏、win键、Ctrl+Esc、Alt+Tab的屏蔽,一般方法较为简单,最多用底层键盘钩子+DLL就能完美解决。但是针对Ctrl+Alt+Del的屏蔽,方法基本有两种,一种...
  • yuer888
  • yuer888
  • 2007年01月04日 14:03
  • 1483

c# 隐藏窗口在ALT+TAB中

WPF:#region Window styles [Flags] public enum ExtendedWindowStyles { ...
  • qq452626100
  • qq452626100
  • 2016年08月25日 14:36
  • 988

Alt+Tab键的窗口切换界面一直不消失

Alt+Tab键的窗口切换界面一直不消失2010-05-08 21:32创旧黄 | 分类:Windows | 浏览1656次以前感觉是搜狗浏览器的问题,关掉之后就好了.但是今天怎么都不消失,一直置顶在...
  • forest_fire
  • forest_fire
  • 2016年03月21日 10:51
  • 2836

「修改注册表,禁用(Win+L)快捷键」解决AutoHotkey不能用Win+L

不用重启,立刻生效,感谢群友DF指点 禁用win_L.reg Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\M...
  • liuyukuan
  • liuyukuan
  • 2017年01月06日 22:44
  • 1139

2.系统文件损坏

当系统文件被破坏时,如Win2K下的KERNEL32.DLL,Win98 FONTS目录下面的字体等系统运行时基本的文件被破坏,系统在启动时会因此无法完成初始化而强迫重新启动。你可以做个试验,把WIN...
  • fdgdfgfgdfggsdsd
  • fdgdfgfgdfggsdsd
  • 2011年03月01日 14:32
  • 78
收藏助手
不良信息举报
您举报文章:Win2K/NT/XP环境下LWIN,RWIN,WIN+Any,Ctrl+Esc,Alt+Esc,Alt+TAB等键的禁用
举报原因:
原因补充:

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