下面是键盘的限制(来源:网上搜的),至于鼠标的限制看4楼,把鼠标限制在屏幕的边缘区。如果你想限制鼠标的左右键,那估计也得需要用hook了。
鼠标的左右功能键的相关参数:
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205

程序代码:
'模块代码
Option Explicit
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 UnhookWindowsHookEx Lib "user32" (ByVal hHook 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 Const WH_KEYBOARD = 2
Public Const WH_KEYBOARD_LL = 13
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public hHook As Long
Type tagKBDLLHOOKSTRUCT
vkCode As Integer
scanCode As Integer
flags As Long
Time As Long
dwExtraInfo As Long
End Type
Sub EnableHook() '设置拦截
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf Myfunc, App.hInstance, 0)
End Sub
Sub DisableHook()
Dim ret As Long
ret = UnhookWindowsHookEx(hHook) '取消拦截
End Sub
Function Myfunc(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 'wParam代表按键
Dim kk As tagKBDLLHOOKSTRUCT
Dim kb As Long, pks As Byte
CopyMemory kk, lParam, Len(kk)
Myfunc = 1: Exit Function
Myfunc = CallNextHookEx(hHook, ncode, wParam, lParam) '传到下一个拦截
End Function
'窗体代码
Option Explicit
Private Sub Form_Load()
Call EnableHook
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call DisableHook
End Sub
[
本帖最后由 vbhello 于 2014-5-10 19:32 编辑 ]