易语言API hook 实现动态类名

必读

1、动态类名的hook必须在载入窗口前
2、所以我们需要修改易语言启动改为:通过名称为“_启动子程序”的子程序来启动
3、在动态类名回调函数中,我们应当是先停止HOOK,再启动hook。

文本_取随机字母

.版本 2
.子程序 文本_取随机字母, 文本型, 公开, 取随机26个字母!
.参数 要取的字符数, 整数型, , 要取字符个数;
.参数 类型, 整数型, 可空, 可空:默认为小写字母;0=小写字母;1=大写字母;2=大小写字母混合;
.局部变量 临时文本, 文本型
.局部变量 大小写, 整数型

置随机数种子 ()
.计次循环首 (要取的字符数, )
.判断开始 (类型 = 0)
临时文本 = 临时文本 + 字符 (取随机数 (97, 122))
.判断 (类型 = 1)
临时文本 = 临时文本 + 字符 (取随机数 (65, 90))
.判断 (类型 = 2)
大小写 = 取随机数 (1, 2)
.如果 (大小写 = 1)
临时文本 = 临时文本 + 字符 (取随机数 (97, 122))
.否则
临时文本 = 临时文本 + 字符 (取随机数 (65, 90))
.如果结束

.默认
.判断结束

处理事件 ()
.计次循环尾 ()
返回 (临时文本)

hook

h.安装Hook (“user32.dll”, “CreateWindowExA”, 到整数 (&MyCreateWindowEXA))
h.开始Hook ()

类名回调函数源码:

.版本 2
.子程序 MyCreateWindowEXA, 整数型
.参数 dwExStyle, 整数型
.参数 lpClassName, 文本型
.参数 lpWindowName, 文本型
.参数 dwStyle, 整数型
.参数 x, 整数型
.参数 y, 整数型
.参数 nWidth, 整数型
.参数 nHeight, 整数型
.参数 hWndParent, 整数型
.参数 hMenu, 整数型
.参数 hInstance, 整数型
.参数 lpParam, 整数型
.局部变量 返回值, 整数型
.局部变量 w, WNDCLASSEX
 
' 停止拦截API
h.停止Hook ()
.如果 (lpClassName = “WTWindow”)
    w.cbSize = 12 × 4
    ' 获取类信息
    GetClassInfoExA (hInstance, lpClassName, w)
    ' 设置类名
    w.lpszClassName = NewClassName
    ' 窗口注册类名
    RegisterClassExA (w)
    返回值 = CreateWindowExA (dwExStyle, w.lpszClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
    ' 卸载hook
    h.卸载Hook ()
 
.否则
    返回值 = CreateWindowExA (dwExStyle, w.lpszClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
.如果结束
 
h.开始Hook ()
返回 (返回值)

教程获取下载:


发布日期:

所属分类: 易语言 标签: