VB怎样屏蔽键盘所有按键,发个代码(可以的,带上说明)~谢谢

VB怎样屏蔽键盘所有按键+热键+组合键+等等等等~~~鼠标除开左键以外全部失效。用来整人的软件~,本来已经做好了。但是键盘alt+F4和任务管理器都可以关掉这个程序。无语... VB怎样屏蔽键盘所有按键+热键+组合键+等等等等~~~鼠标除开左键以外全部失效。
用来整人的软件~,本来已经做好了。但是键盘alt+F4和任务管理器都可以关掉这个程序。
无语。。。网上查了方法~不怎么看得懂!
不是用钩子,是直接编写代码到程序中。
代码放到哪段?窗体?模块?具体就这点搞不懂。
哪位高手帮忙新手解决解决这个问题??
感激不尽!!!谢谢
展开
 我来答
百度网友bdb9803
2011-05-06 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:53%
帮助的人:1亿
展开全部
窗体有个checkbox,名为 chkDisable ,代码如下:
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

模块代码如下:
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 = vbKeyDelete) And ((GetKeyState(VK_CONTROL) And &H8000 <> 0) And (GetKeyState(vbKeyShift) And &H8000) <> 0))
End If
End If

If fEatKeystroke Then
LowLevelKeyboardProc = -1
Else
LowLevelKeyboardProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)
End If
End Function
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luchuanbaker
2011-05-06 · TA获得超过2041个赞
知道大有可为答主
回答量:2604
采纳率:83%
帮助的人:1211万
展开全部
不用钩子的话,任务管理器还是可以结束掉的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
挺生筝2554
2011-05-07 · TA获得超过2198个赞
知道小有建树答主
回答量:1084
采纳率:0%
帮助的人:586万
展开全部
不能不用钩子。二楼的其实还是钩子。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
G0398
2011-05-06 · TA获得超过764个赞
知道小有建树答主
回答量:1335
采纳率:0%
帮助的人:896万
展开全部
禁用任务管理器:
open "C:\windows\system32\taskmgr.exe" For binary as #1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
北科大6930
2011-05-06
知道答主
回答量:28
采纳率:0%
帮助的人:17.8万
展开全部
你不会真去害人吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式