在WIN2K中拦截Alt+Tab,Alt+F4,Ctrl+Esc的模块,希望大家喜欢!(忘了是从哪来的,向原作者至歉。)
2004-06-26 13:52
477 查看
'*************************************************************************
'**模 块 名:拦截Alt+Tab,Alt+F4,Ctrl+Esc
'**日 期:2004年05月16日
'**描 述:载入时用 Hook(), 卸载时用UnHook()
'*************************************************************************
'在WIN2K中,执行下面的程序中的Hook(),可以拦截Alt+Tab,Alt+F4,Ctrl+Esc
Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Private 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
Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Type PKBDLLHOOKSTRUCT
vkCode As Long
scanCode As Long
flags As Long
time As Long
dwExtraInfo As Long
End Type
Private Const HC_ACTION = 0
Private Const WM_KEYDOWN = &H100
Private Const WM_SYSKEYDOWN = &H104
Private Const WM_KEYUP = &H101
Private Const WM_SYSKEYUP = &H105
Private Const VK_TAB = &H9
Private Const VK_ESCAPE = &H1B
Private Const VK_CONTROL = &H11
Private Const WH_KEYBOARD_LL = 13
Private Const LLKHF_ALTDOWN = &H20
Private PrevHook As Long
Public Sub Hook()
PrevHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0)
End Sub
Public Sub UnHook()
UnhookWindowsHookEx PrevHook
End Sub
Public Function LowLevelKeyboardProc(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim fEatKeystroke As Boolean
Dim p As PKBDLLHOOKSTRUCT
If ncode = HC_ACTION Then
Select Case wParam
Case WM_KEYDOWN, WM_SYSKEYDOWN, WM_KEYUP, WM_SYSKEYUP
CopyMemory p, ByVal lParam, Len(p)
If (p.flags And LLKHF_ALTDOWN) <> 0 Then 'Alt + AnyKey
fEatKeystroke = True
End If
If (p.vkCode = VK_ESCAPE) And ((GetKeyState(VK_CONTROL) And &H8000) <> 0) Then 'Ctrl + Esc
fEatKeystroke = True
End If
Case Else
'do nothing
End Select
End If
If fEatKeystroke Then
LowLevelKeyboardProc = 1
Else
CallNextHookEx WH_KEYBOARD_LL, ncode, wParam, lParam
End If
End Function
'**模 块 名:拦截Alt+Tab,Alt+F4,Ctrl+Esc
'**日 期:2004年05月16日
'**描 述:载入时用 Hook(), 卸载时用UnHook()
'*************************************************************************
'在WIN2K中,执行下面的程序中的Hook(),可以拦截Alt+Tab,Alt+F4,Ctrl+Esc
Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Private 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
Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Type PKBDLLHOOKSTRUCT
vkCode As Long
scanCode As Long
flags As Long
time As Long
dwExtraInfo As Long
End Type
Private Const HC_ACTION = 0
Private Const WM_KEYDOWN = &H100
Private Const WM_SYSKEYDOWN = &H104
Private Const WM_KEYUP = &H101
Private Const WM_SYSKEYUP = &H105
Private Const VK_TAB = &H9
Private Const VK_ESCAPE = &H1B
Private Const VK_CONTROL = &H11
Private Const WH_KEYBOARD_LL = 13
Private Const LLKHF_ALTDOWN = &H20
Private PrevHook As Long
Public Sub Hook()
PrevHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0)
End Sub
Public Sub UnHook()
UnhookWindowsHookEx PrevHook
End Sub
Public Function LowLevelKeyboardProc(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim fEatKeystroke As Boolean
Dim p As PKBDLLHOOKSTRUCT
If ncode = HC_ACTION Then
Select Case wParam
Case WM_KEYDOWN, WM_SYSKEYDOWN, WM_KEYUP, WM_SYSKEYUP
CopyMemory p, ByVal lParam, Len(p)
If (p.flags And LLKHF_ALTDOWN) <> 0 Then 'Alt + AnyKey
fEatKeystroke = True
End If
If (p.vkCode = VK_ESCAPE) And ((GetKeyState(VK_CONTROL) And &H8000) <> 0) Then 'Ctrl + Esc
fEatKeystroke = True
End If
Case Else
'do nothing
End Select
End If
If fEatKeystroke Then
LowLevelKeyboardProc = 1
Else
CallNextHookEx WH_KEYBOARD_LL, ncode, wParam, lParam
End If
End Function
相关文章推荐
- 在WIN2K中拦截Alt+Tab,Alt+F4,Ctrl+Esc的模块,希望大家喜欢!(忘了是从哪来的,先原作者至歉。)
- Win2K/NT/XP环境下LWIN,RWIN,WIN+Any,Ctrl+Esc,Alt+Esc,Alt+TAB等键的禁用
- 屏蔽Windows98/2000/XP任务栏、win键、Ctrl+Esc、Alt+Tab、Ctrl+Alt+Del
- 屏蔽Windows98/2000/XP任务栏、win键、Ctrl+Esc、Alt+Tab、Ctrl+Alt+Del
- 屏蔽Windows98/2000/XP任务栏、win键、Ctrl+Esc、Alt+Tab、Ctrl+Alt+Del
- 屏蔽Windows98/2000/XP任务栏、win键、Ctrl+Esc、Alt+Tab、Ctrl+Alt+Del
- 进程防杀与屏蔽WIN 、alt+tab、ctrl+esc等键的方法
- 屏蔽Win、Ctrl_ESC、Alt_Tab、Alt_F4等键(Windows XP、Windows 2003 Server下测试通过)
- Windows XP系统中如何屏蔽 Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc键序列
- 今天开始正式使用我的Blog,希望我和大家能喜欢这里,戈壁草工作站!
- win phone开发必看资料,下载地址收藏啦!收藏后可有选择性的下载,希望大家喜欢!(转载)
- 【CSDN2012年度博客之星】大家多多支持下哦,喜欢本博客的朋友,希望能投下您的一票,多多支持~
- 本人新书 windows 8权威指南 希望大家喜欢和支持
- WIN8 一点小发现 Alt+Tab与Alt+Esc
- Windows XP系统中如何屏蔽 Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc键序列
- 小弟花了两个小时整理了Php方面的一些热门资料,汇总了资料下载地址,有专题,有文档,有源码,希望大家喜欢~
- 【CSDN2012年度博客之星】大家多多支持下哦,喜欢本博客的朋友,希望能投下您的一票,多多支持~
- 我是怎么处理其他网站恶意爬虫博客园的,希望大家喜欢
- Windows XP系统中如何屏蔽 Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc键序列
- 分享20个Android游戏源码,希望大家喜欢哈!