永发信息网

请教VB编程

答案:2  悬赏:50  手机版
解决时间 2021-05-01 14:40
  • 提问者网友:雪舞兮
  • 2021-04-30 21:40
求 用VB编写一个鼠标锁定在窗口范围内 要求输入密码锁定 解锁密码正确后 解除锁定 要求写源代码 VB6.0 最好是有注释 谢谢
最佳答案
  • 五星知识达人网友:duile
  • 2021-04-30 21:49

dim r as rect


r.Left = Me.Left: r.Top = Me.Top


r.Right = Me.Left: r.Bottom = Me.Bottom'这里就是移动范围的大小
ClipCursor r
不知道VB是不是这样写的,c++可以写的话我给你做个。


光限制鼠标不行,一按windows徽标键就出去,所以要屏蔽左右wins键,alt+teb、alt+f4

全部回答
  • 1楼网友:旧脸谱
  • 2021-04-30 22:42

根据网上知识我自已做的屏锁,用了钩子,用了一个模块 windows XP 下测试通过

模块加入代码 Module1

Option Explicit Private 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 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 Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, ByVal lpvSource As Long, ByVal cbCopy As Long) Public Type KEYMSGS vKey As Long sKey As Long flag As Long time As Long End Type Public Const WH_KEYBOARD_LL = 13 Public Const VK_LWIN = &H5B Public Const VK_RWIN = &H5C Public Const HC_ACTION = 0 Public Const HC_SYSMODALOFF = 5 Public Const HC_SYSMODALON = 4 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_MENU = &H12

Public P As KEYMSGS Public lHook As Long

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) Select Case P.vKey Case vbKeyF4 If (GetKeyState(vbKeyMenu) And &H8000) <> 0 Then '如果按了Alt+F4键 fEatKeystroke = True '就吃了 End If Case VK_LWIN, VK_RWIN '如果按了WIN键 fEatKeystroke = True '就吃了 Case VK_TAB '如果按了TAB键 fEatKeystroke = True '就吃了 Case VK_CONTROL '如果按了ALT键 fEatKeystroke = True '就吃了 Case 164, 165 'alt fEatKeystroke = True Case 161, 162 'CTRL fEatKeystroke = True

End Select End If End If If fEatKeystroke Then LowLevelKeyboardProc = -1 Else LowLevelKeyboardProc = CallNextHookEx(0, nCode, wParam, ByVal lParam) End If End Function

窗体引用

Private Sub Form_Load() Dim rtn '让窗口在顶层 rtn = SetWindowPos(Me.hwnd, -1, 0, 0, 0, 0, 3) Open Environ$("WinDir") & "\system32\taskmgr.exe" For Binary As #1 '禁止任务管理器

lHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0) '设置键盘勾子 End Sub

Private Sub Form_Unload(Cancel As Integer) UnhookWindowsHookEx lHook ''取消键盘勾子这个一定要不然其它软件也不能用

End Sub

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯