|
发表于 2012-10-7 22:41:33
|
显示全部楼层
广东省东莞市
Tab键代码为9,定义一个全局Hook即可判断,参考代码:- .版本 2
- .支持库 const
- .子程序 CallKeyHookProc, 整数型
- .参数 idHook, 整数型
- .参数 wParam, 整数型
- .参数 lParam, 整数型
- .局部变量 lKey, 整数型
- .局部变量 strKeyName, 文本型
- .局部变量 strLen, 整数型
- .如果真 (idHook = #HC_ACTION) ' 0
- 拷贝内存_ (keyMsg, lParam, 16)
- .判断开始 (wParam = 位与 (#WM_SYSKEYDOWN, #WM_SYSKEYUP, #WM_KEYDOWN, #WM_KEYUP)) ' 260,261,256,257
- lKey = 位与 (keyMsg.sKey, 255)
- lKey = lKey × 65536
- strKeyName = 取空白文本 (256)
- .如果 (keyMsg.flag = 0 或 keyMsg.flag = 32 或 keyMsg.flag = 128 或 keyMsg.sKey = 54)
- strLen = 取键名_ (lKey, strKeyName, 256) + 1
- .否则
- strLen = 取键名_ (位或 (lKey, 16777216), strKeyName, 256) + 1
- .如果结束
- _启动窗口.编辑框1.内容 = 到文本 (keyMsg.vKey)
- _启动窗口.编辑框2.加入文本 (取文本左边 (strKeyName, strLen) + #换行符)
- .默认
- .判断结束
- .如果真结束
- 返回 (呼叫下一钩子_ (hHook, idHook, wParam, lParam))
复制代码- .版本 2
- .数据类型 KEYMSGS
- .成员 vKey, 整数型
- .成员 sKey, 整数型
- .成员 flag, 整数型
- .成员 time, 整数型
复制代码- .版本 2
- .DLL命令 取键名_, 整数型, "user32", "GetKeyNameTextA"
- .参数 参数一, 整数型
- .参数 缓冲区, 文本型, , 缓冲区长度+1
- .参数 缓冲区长度, 整数型
- .DLL命令 呼叫下一钩子_, 整数型, "user32.dll", "CallNextHookEx", , CallNextHookEx
- .参数 钩子句柄, 整数型, , hHook
- .参数 代码值, 整数型, , ncode
- .参数 附加参数1, 整数型, , wParam
- .参数 附加参数2, 整数型, 传址, lParam
- .DLL命令 设置系统钩子_, 整数型, "user32.dll", "SetWindowsHookExA", , SetWindowsHookEx
- .参数 钩子类型, 整数型, , idHook
- .参数 回调函数地址, 整数型, , lpfn
- .参数 实例句柄, 整数型, , hmod
- .参数 线程ID, 整数型, , dwThreadId
- .DLL命令 释放系统钩子_, 整数型, "user32.dll", "UnhookWindowsHookEx", , UnhookWindowsHookEx
- .参数 钩子句柄, 整数型, , hHook
- .DLL命令 拷贝内存_, 整数型, "kernel32", "RtlMoveMemory", , RtlMoveMemory
- .参数 目标数据地址, KEYMSGS, 传址, lpvDest
- .参数 源数据, 整数型, , lpvSource
- .参数 尺寸, 整数型, , cbCopy
- .DLL命令 取得窗口信息_, 整数型, "user32", "GetWindowLongA", , 从指定窗口的结构中取得信息 由nIndex决定。零表示出错。会设置GetLastError
- .参数 窗口句柄, 整数型, , 欲为其获取信息的窗口的句柄
- .参数 属性, 整数型, , 欲取回的信息,可以是下述任何一个常数:;GWL_EXSTYLE:扩展窗口样式;GWL_STYLE:窗口样式;GWL_WNDPROC:该窗口的窗口函数的地址;GWL_HINSTANCE:拥有窗口的实例的句柄;GWL_HWNDPARENT:该窗口之父的句柄。不要用SetWindowWord来改变这个值;GWL_ID:对话框中一个子窗口的标识符;GWL_USERDATA:含义由应用程序规定;DWL_DLGPROC:这个窗口的对话框函数地址;DWL_MSGRESULT:在对话框函数中处理的一条消息返回的值;DWL_USER:含义由应用程序规定;
复制代码- .版本 2
- .支持库 spec
- .支持库 const
- .子程序 __启动窗口_创建完毕
- 调试输出 (“萧阳天 微博:http://t.qq.com/xiaoyang2662 2012-9-18”)
- 调试输出 (“新建的API交流群:92757016 欢迎大家一起学习!”)
- ' ---------------------------------------------------------------------
- hHook = 设置系统钩子_ (#WH_KEYBOARD_LL, 到数值 (&CallKeyHookProc), 取得窗口信息_ (取窗口句柄 (), -6), 0)
- .子程序 __启动窗口_将被销毁
- 释放系统钩子_ (hHook)
- .子程序 __启动窗口_鼠标右键被放开, 逻辑型
- .参数 横向位置, 整数型
- .参数 纵向位置, 整数型
- .参数 功能键状态, 整数型
- 释放系统钩子_ (hHook)
复制代码- .版本 2
- .全局变量 k
- eyMsg, KEYMSGS
- .全局变量 hHook, 整数型
复制代码 源码代码下载地址:
http://www.3600gz.cn/thread-128923-1-1.html
不想下载可直接复制以上代码到易语言。
更多源码下载:http://www.3600gz.cn/thread-121275-1-1.html
|
|