c 调试易语言dll,易语言制作调试助手

该博客主要介绍了易语言插件的开发过程,包括使用DLL命令进行窗口操作,如FindWindowA、SendMessageA等,以及配置文件的读写和程序设置。此外,还涉及了自动运行、路径合法性检查等功能,并提供了错误处理和调试信息。
摘要由CSDN通过智能技术生成

DLL命令表

.版本 2

.DLL命令 窗口_FindWindowA, 整数型, "user32", "FindWindowA", , 句柄操作

.参数 lpClassName, 文本型

.参数 lpWindowName, 文本型

.DLL命令 窗口_SendMessage, 整数型, , "SendMessageA", , 句柄操作

.参数 HWND

.参数 sc

.参数 z1

.参数 z2, 文本型

.DLL命令 窗口_PostMessage, 整数型, , "PostMessageA", , 句柄操作

.参数 HWND

.参数 sc

.参数 z1

.参数 z2

.DLL命令 窗口_SetParent, 整数型, "user32", "SetParent", , 句柄操作

.参数 hWndChild, 整数型

.参数 hWndNewParent, 整数型

.DLL命令 窗口_FindWindowExA, 整数型, "user32", "FindWindowExA", , 句柄操作

.参数 hWnd1, 整数型

.参数 hWnd2, 整数型

.参数 lpsz1, 文本型

.参数 lpsz2, 文本型

全局变量表

.版本 2

.全局变量 易句柄, 整数型

路径

.版本 2

.程序集 Setting

.子程序 __启动窗口_创建完毕

易句柄 = -1

.如果 (读配置项 (取运行目录 () + “\program.ini”, “Check”, 选择框_自动运行.标题, “假”) = “真”)

选择框_自动运行.选中 = 真

.否则

选择框_自动运行.选中 = 假

写配置项 (取运行目录 () + “\program.ini”, “Check”, 选择框_自动运行.标题, “假”)

.如果结束

.如果 (读配置项 (取运行目录 () + “\program.ini”, “Check”, 选择框_指定路径.标题, “假”) = “真”)

选择框_指定路径.选中 = 真

.否则

选择框_指定路径.选中 = 假

写配置项 (取运行目录 () + “\program.ini”, “Check”, 选择框_指定路径.标题, “假”)

.如果结束

.如果 (读配置项 (取运行目录 () + “\program.ini”, “Check”, 选择框_绝对路径.标题, “假”) = “真”)

选择框_绝对路径.选中 = 真

.否则

选择框_绝对路径.选中 = 假

写配置项 (取运行目录 () + “\program.ini”, “Check”, 选择框_绝对路径.标题, “假”)

.如果结束

.如果 (读配置项 (取运行目录 () + “\program.ini”, “Data”, “编译路径”, “\Debug\Program.exe”) = “\Debug\Program.exe”)

写配置项 (取运行目录 () + “\program.ini”, “Data”, “编译路径”, “\Debug\Program.exe”)

.否则

Data_Path.内容 = 读配置项 (取运行目录 () + “\program.ini”, “Data”, “编译路径”, “\Debug\Program.exe”)

_Data_Path_失去焦点 ()

.如果结束

易句柄 = 窗口_FindWindowA (“ENewFrame”, 字符 (0))

.如果 (易句柄 = 0)

.如果 (信息框 (“未找到易语言进程,是否需要进入程序设置页面?”, #是否钮, “提示:”, ) = #是钮 或 是否为调试版 ())

_启动窗口.可视 = 真

.否则

结束 ()

.如果结束

.否则

.如果 (是否为调试版 ())

_启动窗口.可视 = 真

.否则

载入 (Run, , 假)

_启动窗口.销毁 ()

信息框 (“插件加载成功”, 0, “提示:”, )

.如果结束

.如果结束

.子程序 _选择框_自动运行_被单击

写配置项 (取运行目录 () + “\program.ini”, “Check”, 选择框_自动运行.标题, 到文本 (选择框_自动运行.选中))

.子程序 _选择框_指定路径_被单击

写配置项 (取运行目录 () + “\program.ini”, “Check”, 选择框_指定路径.标题, 到文本 (选择框_指定路径.选中))

.子程序 _选择框_绝对路径_被单击

写配置项 (取运行目录 () + “\program.ini”, “Check”, 选择框_绝对路径.标题, 到文本 (选择框_绝对路径.选中))

.子程序 _Data_Path_获得焦点

Data_Path.背景颜色 = #艳青

.子程序 _Data_Path_失去焦点

Data_Path.背景颜色 = #白色

.如果 (删首尾空 (Data_Path.内容) = “” 或 寻找文本 (Data_Path.内容, “?”, , 假) > -1 或 寻找文本 (Data_Path.内容, “*”, , 假) > -1 或 寻找文本 (Data_Path.内容, “|”, , 假) > -1 或 寻找文本 (Data_Path.内容, “”, , 假) > -1)

选择框_指定路径.选中 = 假

_选择框_指定路径_被单击 ()

.如果 (易句柄 > -1)

信息框 (“路径为空或含有不合法符号”, 0, “提示:”, )

.否则

Data_Path.内容 = “”

.如果结束

.否则

.如果 (选择框_绝对路径.选中 = 假 且 寻找文本 (Data_Path.内容, “:”, , 假) > -1)

选择框_指定路径.选中 = 假

_选择框_指定路径_被单击 ()

.如果 (易句柄 > -1)

信息框 (“非绝对路径禁止使用冒号”, 0, “提示:”, )

.否则

Data_Path.内容 = “”

.如果结束

.否则

写配置项 (取运行目录 () + “\program.ini”, “Data”, “编译路径”, Data_Path.内容)

.如果结束

.如果结束

调试

.版本 2

.支持库 spec

.程序集 Running

.程序集变量 路径, 文本型

.子程序 _Run_创建完毕

.如果 (读配置项 (取运行目录 () + “\program.ini”, “Check”, “自定义程序编译写出路径”, “假”) = “真”)

路径 = 读配置项 (取运行目录 () + “\program.ini”, “Data”, “编译路径”, “\Debug\Program.exe”)

.如果 (路径 ≠ “\Debug\Program.exe”)

.如果真 (读配置项 (取运行目录 () + “\program.ini”, “Check”, “绝对路径”, “假”) ≠ “真”)

.如果真 (取文本左边 (路径, 1) ≠ “\”)

路径 = “\” + 路径

.如果真结束

路径 = 取运行目录 () + 路径

.如果真结束

.否则

路径 = 取运行目录 () + “\Debug\Program.exe”

创建目录 (取运行目录 () + “\Debug\”)

.如果结束

.否则

路径 = 取运行目录 () + “\Debug\Program.exe”

创建目录 (取运行目录 () + “\Debug\”)

.如果结束

窗口_SetParent (Run.取窗口句柄 (), 易句柄)

.子程序 _Run_将被销毁

结束 ()

.子程序 _编译按钮_被单击, , , 编译

调试_编译程序 (路径, 易句柄)

.如果真 (读配置项 (取运行目录 () + “\program.ini”, “Check”, “程序编译后自动调试运行”, “假”) = “真”)

.如果真 (文件是否存在 (路径))

.如果真 (运行 (路径, 假, ) = 假)

信息框 (“程序运行失败”, 0, “提示:”, )

.如果真结束

.如果真结束

.如果真结束

.子程序 _运行按钮_被单击, , , 运行

调试_编译程序 (路径, 易句柄)

.如果真 (文件是否存在 (路径))

.如果真 (运行 (路径, 假, ) = 假)

信息框 (“程序运行失败”, 0, “提示:”, )

.如果真结束

.如果真结束

.子程序 调试_编译程序, , 公开

.参数 编译路径, 文本型

.参数 易语言句柄, 整数型

.局部变量 编译句柄, 整数型

.局部变量 写出句柄, 整数型

调试_删除程序 (编译路径)

目录_逐级创建 (编译路径)

窗口_PostMessage (易语言句柄, 256, #F7键, 0)

窗口_PostMessage (易语言句柄, 257, #F7键, 0)

.计次循环首 (50, ) ' 5.0 秒

编译句柄 = 窗口_FindWindowA (字符 (0), “请输入欲编译到的可执行文件名:”)

延迟 (100)

.如果真 (编译句柄 > 0)

跳出循环 ()

.如果真结束

.计次循环尾 ()

.如果真 (编译句柄 > 0)

.计次循环首 (30, ) ' 3.0 秒

写出句柄 = 窗口_FindWindowExA (编译句柄, 0, “Edit”, 字符 (0))

延迟 (100)

.如果真 (写出句柄 > 0)

跳出循环 ()

.如果真结束

.计次循环尾 ()

.如果真 (写出句柄 > 0)

窗口_SendMessage (写出句柄, 12, 0, 编译路径)

写出句柄 = 窗口_FindWindowExA (编译句柄, 0, “Button”, “保存(&S)”)

.如果真 (写出句柄 > 0)

窗口_PostMessage (编译句柄, 256, #回车键, 0)

窗口_PostMessage (编译句柄, 257, #回车键, 0)

.计次循环首 (50, ) ' 5.0 秒

延迟 (100)

.如果真 (文件是否存在 (编译路径))

跳出循环 ()

.如果真结束

.计次循环尾 ()

.计次循环首 (5, ) ' 0.5 秒

编译句柄 = 窗口_FindWindowA (字符 (0), “询问:”)

延迟 (100)

.如果真 (编译句柄 > 0)

跳出循环 ()

.如果真结束

.计次循环尾 ()

.如果真 (编译句柄 > 0)

写出句柄 = 窗口_FindWindowExA (编译句柄, 0, “Button”, “写出(&W)”)

.如果真 (写出句柄 > 0)

窗口_PostMessage (编译句柄, 256, #回车键, 0)

窗口_PostMessage (编译句柄, 257, #回车键, 0)

.如果真结束

.如果真结束

.如果真结束

.如果真结束

.如果真结束

.如果真 (文件是否存在 (编译路径) = 假)

信息框 (“程序编译失败”, 0, “提示:”, )

.如果真结束

.子程序 调试_删除程序, , 公开

.参数 编译路径, 文本型

.局部变量 exe, 文本型

.局部变量 dir, 文本型

.如果真 (文件是否存在 (编译路径))

dir = 取文本左边 (编译路径, 倒找文本 (编译路径, “\”, , 假))

exe = 取文本右边 (编译路径, 取文本长度 (编译路径) - 取文本长度 (dir))

运行 (“cmd /c taskkill /f /im ” + exe, 真, 1)

删除文件 (编译路径)

.如果真 (寻找文本 (dir, 取运行目录 () + “\”, , 假) > -1)

dir = 取文本右边 (dir, 取文本长度 (dir) - 寻找文本 (编译路径, 取运行目录 () + “\”, , 假)) ' X:\xxxx\xxx\ -> xxx\

dir = 取文本左边 (dir, 寻找文本 (dir + “\”, “\”, , 假) - 1) ' xxx\ -> xxx

.如果真 (取文本右边 (dir, 1) ≠ “\”)

dir = dir + “\”

.如果真结束

删除目录 (取运行目录 () + “\” + dir)

.如果真结束

.如果真结束

.子程序 目录_逐级创建, , 公开

.参数 目录路径, 文本型

.参数 是否为网络路径, 逻辑型, 可空

.局部变量 标识, 文本型

.局部变量 文本, 文本型

.如果 (是否为网络路径)

标识 = “/”

.否则

标识 = “\”

.如果结束

.判断循环首 (寻找文本 (目录路径, 标识, 取文本长度 (文本) + 1, 假) > -1)

文本 = 取文本左边 (目录路径, 寻找文本 (目录路径, 标识, 取文本长度 (文本) + 1, 假))

创建目录 (文本)

.判断循环尾 ()

运行结果:

992c4c508dc2340e06050bf35a842b68.png

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值