易语言怎么实现锁定鼠标,锁定屏幕。只有在编辑框内输入密码才能恢复正常。求代码。。。给高分!!!
一、主程序:
.版本 2
.支持库 xplib
.支持库 eAPI
.支持库 EThread
.程序集 窗口程序集1
.程序集变量 低级钩子句柄, 整数型
.程序集变量 hInstance, 整数型
.程序集变量 rect, rect
.程序集变量 钩子句柄, 整数型
.程序集变量 已解锁, 逻辑型
.子程序 __启动窗口_创建完毕
XP风格 (1)
_启动窗口.左边 = 0
_启动窗口.顶边 = 0
_启动窗口.宽度 = 取屏幕宽度 ()
_启动窗口.高度 = 取屏幕高度 ()
分组框.左边 = (_启动窗口.宽度 - 分组框.宽度) ÷ 2
分组框.顶边 = (_启动窗口.高度 - 分组框.高度) ÷ 2
钩子句柄 = 安装钩子 (13, &钩子函数, GetModuleHandleA (0), 0)
hInstance = 外部_获得程序句柄 (0)
低级钩子句柄 = 安装钩子 (13, &低级钩子回调函数, hInstance, 0)
设置窗口透明度 (取窗口句柄 (), 200)
已解锁 = 假
启动线程 (&鼠标限制, )
.子程序 鼠标限制
.局部变量 hwnd
.判断循环首 (已解锁 = 假)
_启动窗口.左边 = 0
_启动窗口.顶边 = 0
_启动窗口.宽度 = 取屏幕宽度 ()
_启动窗口.高度 = 取屏幕高度 ()
分组框.左边 = (_启动窗口.宽度 - 分组框.宽度) ÷ 2
分组框.顶边 = (_启动窗口.高度 - 分组框.高度) ÷ 2
rect.left = 分组框.左边
rect.right = 分组框.左边 + 分组框.宽度
rect.top = 分组框.顶边
rect.bottom = 分组框.顶边 + 分组框.高度
ClipCursor (rect)
hwnd = GetForegroundwindow ()
.如果真 (hwnd ≠ 取窗口句柄 ())
SetWindowPos (hwnd, -2, 0, 0, 0, 0, 3)
SetWindowPos (取窗口句柄 (), -1, 0, 0, 0, 0, 3)
.如果真结束
终止进程 (“taskmgr.exe”)
延时 (10)
.判断循环尾 ()
.子程序 低级钩子回调函数, 整数型
.参数 nCode, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
.局部变量 按键信息, 按键信息
CopyMemory (按键信息, lParam, 28)
.如果真 (nCode = 0)
.如果真 (按键信息.虚拟码 ≥ 162 且 按键信息.虚拟码 ≤ 165)
返回 (1)
.如果真结束
.如果真 (按键信息.虚拟码 ≥ 33 且 按键信息.虚拟码 ≤ 36)
返回 (1)
.如果真结束
.如果真 (按键信息.虚拟码 ≥ 112 且 按键信息.虚拟码 ≤ 123)
返回 (1)
.如果真结束
.如果真 (按键信息.虚拟码 ≥ 91 且 按键信息.虚拟码 ≤ 93)
返回 (1)
.如果真结束
.如果真 (按键信息.虚拟码 ≥ 44 且 按键信息.虚拟码 ≤ 46)
返回 (1)
.如果真结束
.如果真 (按键信息.虚拟码 = 27 或 按键信息.虚拟码 = 110 或 按键信息.虚拟码 = 19 或 按键信息.虚拟码 = 145)
返回 (1)
.如果真结束
返回 (0)
.如果真结束
返回 (下一个钩子 (钩子句柄, nCode, wParam, lParam))
.子程序 钩子函数, 整数型
.参数 icode, 整数型
.参数 wparam, 整数型
.参数 lparam, 整数型
.局部变量 按键信息, 按键信息
CopyMemory (按键信息, lparam, 28)
.如果真 (icode = 0)
.如果真 (按键信息.虚拟码 ≥ 162 且 按键信息.虚拟码 ≤ 165)
返回 (1)
.如果真结束
.如果真 (按键信息.虚拟码 ≥ 33 且 按键信息.虚拟码 ≤ 36)
返回 (1)
.如果真结束
.如果真 (按键信息.虚拟码 ≥ 112 且 按键信息.虚拟码 ≤ 123)
返回 (1)
.如果真结束
.如果真 (按键信息.虚拟码 ≥ 91 且 按键信息.虚拟码 ≤ 93)
返回 (1)
.如果真结束
.如果真 (按键信息.虚拟码 ≥ 44 且 按键信息.虚拟码 ≤ 46)
返回 (1)
.如果真结束
.如果真 (按键信息.虚拟码 = 27 或 按键信息.虚拟码 = 110 或 按键信息.虚拟码 = 19 或 按键信息.虚拟码 = 145)
返回 (1)
.如果真结束
返回 (0)
.如果真结束
返回 (下一个钩子 (钩子句柄, icode, wparam, lparam))
.子程序 _按钮1_被单击
.如果 (密码编辑框.内容 = “123”)
已解锁 = 真
卸载钩子 (低级钩子句柄)
卸载钩子 (钩子句柄)
结束 ()
.否则
密码编辑框.获取焦点 ()
.如果结束
.子程序 _密码编辑框_按下某键, 逻辑型
.参数 键代码, 整数型
.参数 功能键状态, 整数型
.如果真 (键代码 = 13)
_按钮1_被单击 ()
.如果真结束
二、DLL代码
.版本 2
.DLL命令 外部_获得程序句柄, 整数型, , "GetModuleHandleA"
.参数 模块名, 整数型
.DLL命令 安装钩子, 整数型, , "SetWindowsHookExA"
.参数 ihook, 整数型
.参数 lpfunc, 子程序指针
.参数 hin, 整数型
.参数 threadid, 整数型
.DLL命令 GetModuleHandleA, 整数型, , "GetModuleHandleA"
.参数 lpModuleName, 整数型
.DLL命令 卸载钩子, 整数型, , "UnhookWindowsHookEx"
.参数 hHook, 整数型
.DLL命令 下一个钩子, 整数型, , "CallNextHookEx"
.参数 hHook, 整数型
.参数 icode, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
.DLL命令 ClipCursor, , , "ClipCursor"
.参数 lpRect, rect
.DLL命令 SetWindowPos, 整数型, , "SetWindowPos"
.参数 a
.参数 b
.参数 c
.参数 d
.参数 e
.参数 f
.参数 g
.DLL命令 GetForegroundwindow, 整数型, "user32.dll", "GetForegroundWindow"
.DLL命令 CopyMemory, , , "RtlMoveMemory"
.参数 Destination, 按键信息
.参数 Source, 整数型
.参数 cbCopy, 整数型
三、自定义数据类型:
.版本 2
.数据类型 rect
.成员 left
.成员 top
.成员 right
.成员 bottom
.数据类型 按键信息
.成员 虚拟码, 整数型
.成员 扫描码, 整数型
.成员 标记, 整数型
.成员 时间, 整数型
.成员 额外信息, 整数型