新建一个窗口程序,然后添加一个时钟,再添加两个按钮(名称别去修改,就这样)
首先复制粘贴DLL部分内容:
.版本 2
.DLL命令 CallWindowProc, 整数型, "user32.dll", "CallWindowProcA", , 呼叫窗口函数地址
.参数 前一窗口函数地址, 字节集
.参数 窗口句柄, 整数型
.参数 消息值, 整数型
.参数 附加参数1, 整数型
.参数 附加参数2, 整数型
.DLL命令 lstrcpyn, 整数型, "kernel32.dll"
.参数 lpString1, 字节型, 传址
.参数 lpString2, 字节型, 传址
.参数 iMaxLength, 整数型
------------------------------------------------------------------------------------------------------------------------------
接着双击窗口中间空白的地方,跳到窗口程序集1,复制以下内容,粘贴进去即可
.版本 2
.程序集 窗口程序集1
.程序集变量 是否已经注册, 逻辑型
.程序集变量 已注册子程序地址, 整数型
.程序集变量 已注册子程序内存数据地址, 整数型
.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行
置错误提示管理 (&错误提示管理)
已注册子程序地址 = 到数值 (&子程序1)
已注册子程序内存数据地址 = lstrcpyn (已注册子程序地址, 已注册子程序地址, 0)
载入 (启动窗口, , 假)
返回 (0) ' 可以根据您的需要返回任意数值
.子程序 错误提示管理, 逻辑型, , 本命令用来设置当运行时如果产生了导致程序崩溃的严重错误时用来对该错误进行详细提示的子程序地址,如果未进行此项设置,发生严重错误时运行时环境将自动提示该错误的详细信息并直接退出
.参数 错误代码, 整数型, , 用作接收错误代码
.参数 错误文本, 文本型, , 用作接收详细错误文本
' 该子程序必须返回一个逻辑值,返回真表示已经自行处理完毕,系统将不再显示该错误信息,返回假表示由系统来继续显示该错误信息。以上设置必须完全正确,否则结果不能预测,另外,还请注意以下几点:
' 1、该错误提示子程序不要再引发新的错误;
' 2、在进入该错误提示子程序后,系统将自动关闭事件消息通知处理机制,也就是说任何事件将无法得到响应;
' 3、无论如何,当该子程序调用退出后,系统将自动将整个应用程序关闭。 如果省略本参数,系统将恢复错误提示的默认处理方
信息框 (“程序出错!” + #换行符 + “错误代码: 00000” + 到文本 (错误代码), 64, “友情提示”)
返回 (真)
.子程序 Call内存, 整数型
.参数 内存地址, 整数型, , 存放调用子程序地址数据的内存地址
返回 (CallWindowProc ({ 255, 37 } + 到字节集 (内存地址), 0, 0, 0, 0)) ' JMP DS:
.子程序 _按钮1_被单击, , , 暗桩
时钟1.时钟周期 = 120
.子程序 _按钮2_被单击, , , 已经注册
是否已经注册 = 真 ' 假设已经被爆
.如果真 (是否已经注册)
Call内存 (已注册子程序内存数据地址)
.如果真结束
.子程序 _时钟1_周期事件
是否已经注册 = 假 ' 这里表示没能通过注册
.如果 (是否已经注册)
.否则
已注册子程序地址 = 到数值 (&子程序2)
.如果结束
.子程序 子程序1
信息框 (“已经注册”, 0, )
.子程序 子程序2
信息框 (“暗桩”, 0, )
------------------------------------------------------------------------------------------------------------------------------