# 接口文档
# ET. 默认常用插件接口
插件接口:监听已约定事件标识的动作、添加约定接口事件与动作、HOOK创建与管理、获取易相关信息、执行部分易IDE动作,读写易语言助手配置、调用易语言接口功能等功能
一、添加事件处理
功能: 在插件源码 _启动子程序 处添加已约定好的事件标识回调,加载插件后即可监听对应事件动作
代码:
.版本 2
.子程序 _启动子程序, 整数型
ET.添加事件处理 (#事件标识_插件启用, &事件_插件启用)
返回 (0)
.子程序 事件_插件启用
ET.输出文本 (“事件_插件启用”, 真)
参数:
参数一:【整数型】已约定事件标识,详细标识可通过模块常量 #事件标识_ ;
参数二:【子程序指针】用来回调监听动作的子程序;
1、回调子程序并非都无参数,回调子程序是否有参数可通过模块常量 #事件标识_ 的备注获取;
返回值:
无返回值
二、点击菜单
功能: 不弹出菜单,通过菜单ID点击易语言IDE或易语言插件的菜单
代码:
ET.点击菜单 (“菜单标识[整数型]”, “是否异步[逻辑型]”)
参数:
参数一:【整数型】菜单标识,模块已声明好部分菜单标识,通过常量 #菜单_ 调用;
参数二:【逻辑型】是否异步,是否异步执行点击菜单操作;
返回值:
无返回值
三、读写配置
功能: 易语言助手内部相对路径下读写插件相关配置
代码:
ET.读配置 (“名称[文本型]”, “默认值[文本型]”)
ET.写配置 (“名称[文本型]”, “值[文本型]”)
参数:
参数一:【文本型】名称,需要记录数据的名称
参数二:【文本型】值,需要记录得到数据
返回值:
写配置,无返回值
读配置:【文本型】,返回配置文件中对应名称的数据
四、获取主窗口句柄
功能: 获取当前操作的易语言IDE的窗口句柄
代码:
ET.获取主窗口句柄 ()
参数:
无参数
返回值:
【整数型】返回当前操作的易语言IDE的窗口句柄
五、引用模块
功能: 直接在当前操作的易语言IDE中添加指定路径的模块
代码:
ET.引用模块 ("路径[文本型]")
参数:
参数一:【文本型】路径,指定模块文件的绝对路径
返回值:
【整数型】返回是否添加成功
六、获取插件资源目录
功能: 获取当前易语言助手eTools\plugin目录下当前插件的目录
代码:
ET.获取插件资源目录 ()
参数:
无参数
返回值:
【文本型】返回当前插件相对易语言助手的目录路径
七、输出文本
功能: 在易语言IDE状态栏输出窗口输出指定文本
代码:
ET.输出文本 (“文本[文本型]”, “输出插件名[逻辑型]”)
参数:
参数一:【文本型】文本,要输出的文本内容;
参数二:【逻辑型】输出插件名,是否输出执行这个命令的插件名称;
返回值:
无返回值
八、调用易系统功能
功能: 根据接口号与参数调用易语言开放的接口,注意:需要支持调用接口的易语言版本
代码:
ET.调用易系统功能 ("功能号[整数型]", "参数一[整数型]", "参数二[整数型]")
参数:
参数一:【整数型】功能号,功能号和含义参看易语言根目录下\sdk\cpp\elib\lib2.h;
参数二:【整数型】备选参数,部分有参数的接口使用,默认0;
参数三:【整数型】备选参数:部分有参数的接口使用,默认0;
返回值:
【整数型】返回是否调用成功
其他命令待补充...
# 常用API函数HOOK接口调用
插件模块中 类模块.接口_xx管理 使用同一套HOOK管理,部分常用API函数HOOK使用统一格式调用接口,部分HOOK管理专属命令调用。
基本调用格式: 部分API函数HOOK为统一格式,部分HOOK管理不通用
.版本 2
.程序集 入口程序集
.程序集变量 集_XX管理, 接口_XX管理
.子程序 _启动子程序, 整数型
ET.添加事件处理 (#事件标识_插件启用, &事件_插件启用)
返回 (0)
.子程序 插件信息, 整数型, 公开
返回 (生成插件信息 (“插件名称”, “插件备注”, “1.0”, “插件作者”, , ))
.子程序 事件_插件启用
集_XX管理 = 接口_获取XX管理 ()
集_XX管理.添加调用前处理 (&回调_XX调用前)
ET.输出文本 (“事件_插件启用”, 真)
.子程序 回调_XX调用前
.参数 hMenu, 整数型
详细说明:
1、程序集或全局变量声明一个接口_xx管理
2、在插件“事件_插件启用”事件回调中 通过“接口_获取XX管理”获取实际HOOK指针并赋值给步骤1中声明的变量
3、“变量.添加调用前处理”与“变量.添加调用后处理”均只有一个类型为【子程序指针】的回调函数子程序指针参数
4、定义一个对应的回调函数,回调函数参数由具体监听的动作而定,例如下文中的API“DestroyMenu”参数只有一个
参数与返回值调用格式:
方式一:此方式需要回调函数有返回值,类型【整数型】
.版本 2
.子程序 回调_XX调用前, 整数型
.参数 参_参数一, 整数型
.参数 参_参数二, 整数型
.参数 参_参数三, 整数型
.局部变量 局_参数, 整数型, , "3"
局_参数 [1] = 参_参数一
局_参数 [2] = 参_参数二
局_参数 [3] = 参_参数三
返回(集_XX管理.调用原函数 (, 局_参数))
说明:
1、对应的API有多少个参数,局_参数 数组就有多少个成员,支持给成员自定义数据或直接赋值回调的参数,统一调用“调用原函数”命令将数组变量传入第二参数;
2、“调用原函数” 不会触发HOOK处理函数 “调用函数”会触发HOOK处理函数;
方式二:此方式无需回调函数
.版本 2
.子程序 回调_XX调用前
.参数 参_参数一, 整数型
.参数 参_参数二, 整数型
.参数 参_参数三, 整数型
集_xx管理.置返回值 ("值[整数型]", "直接返回[逻辑型]")
集_xx管理.取返回值 ("值[整数型]", "直接返回[逻辑型]")
集_xx管理.置参数值 ("参数序号[整数型]", "值[整数型]")
集_xx管理.取参数值 ("参数序号[整数型]", "值[整数型]")
说明:
1、通过命令“置返回值”,返回自定义返回值,参数一【整数型】指定的返回值,参数二【逻辑型】是否直接返回;
2、通过命令“取返回值”,返回自定义返回值,参数一【整数型】参考返回返回值,参数二【逻辑型】是否直接返回;
3、通过命令"置参数值",给指定参数序号的参数自定数据,参数一【整数型】参数的序号,参数二【整数型】指定的数据;
4、通过命令“取参数值”,取指定参数序号的参数的值;,参数一【整数型】参数的序号,参数二【整数型】参考返回的参数数据;
一、接口_DestroyMenu管理
功能:
HOOK函数“DestroyMenu”管理易语言IDE菜单销毁的动作
回调函数:
.版本 2
.子程序 回调_DestroyMenu调用前, 整数型, , 如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。
.参数 hMenu, 整数型, , 要销毁的菜单的句柄
.局部变量 局_参数, 整数型, , "1"
局_参数 [1] = hMenu
返回(集_DestroyMenu管理.调用原函数 (, 局_参数))
作用:
可通过修改参数或返回值让易语言IDE不销毁或销毁我们指定的菜单【实例:易语言助手右键菜单功能】
二、接口_FindResourceEx管理
功能:
HOOK函数“FindResourceEx”管理易语言资源窗口创建动作
回调函数:
.版本 2
.子程序 回调_FindResourceEx调用前, 整数型, , 如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。
.参数 hModule, 整数型
.参数 lpType, 整数型
.参数 lpName, 整数型, , 易语言IDE资源窗口ID 由工具 pexplorer.exe 获取
.参数 WLanguage, 整数型
.局部变量 局_参数, 整数型, , "4"
局_参数 [1] = hModule
局_参数 [2] = lpType
局_参数 [3] = lpName
局_参数 [4] = WLanguage
返回(集_FindResourceEx管理.调用原函数 (, 局_参数))
作用:
通过监控参数值判断易语言正要创建的资源窗口,通过修改返回值阻止易语言创建资源窗口【实例:新建插件、整体搜索替换插件等】
三、接口_GetOpenFileName管理
功能:
HOOK函数“GetOpenFileName”管理易语言IDE打开文件对话框动作
回调函数:
.版本 2
.子程序 回调_GetOpenFileName调用前, 整数型, , 如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。
.参数 Ipofn, 整数型, ,Ipofn是对话框结构指针
.局部变量 局_参数, 整数型, , "1"
局_参数 [1] = Ipofn
返回(集_GetOpenFileName管理.调用原函数 (, 局_参数))
作用:
通过修改参数改变易语言IDE通用对话框的样式与显示内容,也可以监控用户选择的文件信息【实例:智能编译,自动保存与备份,对话框增强插件】
四、接口_GetSaveFileName管理
功能:
HOOK函数“GetSaveFileName”管理易语言IDE保存文件对话框动作
回调函数:
.版本 2
.子程序 回调_GetSaveFileName调用前, 整数型, , 如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。
.参数 Ipofn, 整数型, , Ipofn是对话框结构指针
.局部变量 局_参数, 整数型, , "1"
局_参数 [1] = Ipofn
返回(集_GetSaveFileName管理.调用原函数 (, 局_参数))
作用:
通过修改参数修改保存文件对话框风格与默认保存路径,获取用户保存源码文件的信息【实例:智能编译,自动保存与备份,对话框增强插件】
五、接口_LoadImageW管理
功能:
HOOK函数“LoadImageW”管理易语言IDE加载图片组动作
回调函数:
.版本 2
.子程序 回调_LoadImageW调用前, 整数型, , 如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。
.参数 hinst, 整数型, , 实例句柄 要从其中载入图象的DLL或应用程序模块或实例句柄。零表示装载一幅固有图象
.参数 lpBitmapName, 整数型, , 图象标志符 欲载入图象的名字。如指定了hInst,就用这个参数指定资源或资源的标志符(标志符是一个长整数)。如hInst为空,而且已指定了LR_LOADFROMFILE,那么这个参数代表文件名(位图、图标或指针文件)。如果是个Long型值,这个参数就代表固有位图、图标或指针的编号
.参数 type, 整数型, , 图象类型 下述常数之一,指定了欲载入的图象类型:IMAGE_BITMAP, IMAGE_CURSOR, IMAGE_ICON
.参数 cx, 整数型, , 图象宽度 要求的图象宽度和高度。图象会根据情况自动伸缩。如设为零,表示用图象的默认大小
.参数 cy, 整数型, , 图象高度 同上
.参数 fuLoad, 整数型, , 常数组合 下述常数的任意组合,它们都在api32.txt文件中得到了定义:;LR_DEFAULTCOLOR:以常规方式载入图象;LR_LOADREALSIZE:不对图象进行缩放处理。忽略n1和n2的设置;LR_CREATEDIBSECTION:如果指定了IMAGE_BITMAP,就返回DIBSection的句柄,而不是位图的句柄;LR_DEFAULTSIZE:如果n1和n2为零,就使用由系统定义的图象默认大小,而不是图象本身定义的大小;LR_LOADFROMFILE:如hInst为零,lpsz就代表要载入适当类型的一个文件的名字,仅适用于Win95;LR_LOADMAP3DCOLORS:将图象中的深灰、灰、以及浅灰像素都替换成COLOR_3DSHADOW,COLOR_3DFACE以及COLOR_3DLIGHT的当前设置;LR_LOADTRANSPARENT:与图象中第一个像素相符的所有像素都由系统替换;LR_MONOCHROME:将图象转换成单色;LR_SHARED:将图象作为一个共享资源载入。在NT 4.0中装载固有资源时要用到这个设置;
.局部变量 局_参数, 整数型, , "6"
局_参数 [1] = hinst
局_参数 [2] = lpBitmapName
局_参数 [3] = type
局_参数 [4] = cx
局_参数 [5] = cy
局_参数 [6] = fuLoad
返回(集_LoadImageW管理.调用原函数 (, 局_参数))
作用:
替换易语言IDE相关图片组,改变易语言IDE原有图标显示【实例:代码扩展插件】
六、接口_MessageBox管理
功能:
HOOK函数“MessageBox”管理易语言IDE信息框动作
回调函数:
.版本 2
.子程序 回调_MessageBox调用前, 整数型, , 如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。
.参数 hWnd, 整数型, , 此参数代表消息框拥有的窗口。如果为NULL,则消息框没有拥有窗口。
.参数 lpText, 整数型, , 消息框的内容。
.参数 lpCaption, 整数型, , 消息框的标题。
.参数 uType, 整数型, , 指定一个决定对话框的内容和行为的位标志集。此参数可以为下列标志组中标志的组合。
.局部变量 局_参数, 整数型, , "4"
局_参数 [1] = hWnd
局_参数 [2] = lpText
局_参数 [3] = lpCaption
局_参数 [4] = uType
返回(集_MessageBox管理.调用原函数 (, 局_参数))
作用:
通过修改参数让易语言IDE信息框弹出的提示可自定义或屏蔽信息框【实例:屏蔽提示插件,整体搜索替换插件】
七、接口_ShowWindow管理
功能:
HOOK函数“ShowWindow”管理易语言IDE窗口显示与隐藏动作
回调函数:
.版本 2
.子程序 回调_ShowWindow调用前, 整数型, , 如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。
.参数 hWnd, 整数型, , 指窗口句柄
.参数 nCmdShow, 整数型, , 指定窗口如何显示。
.局部变量 局_参数, 整数型, , "2"
局_参数 [1] = hWnd
局_参数 [2] = nCmdShow
返回(集_ShowWindow管理.调用原函数 (, 局_参数))
作用:
通过修改参数控制易语言IDE窗口的显示与隐藏【实例:整体搜索替换插件,整体搜索增强插件,书签插件,命令提示框多屏修正插件,支持库安装管理扩展插件】
八、接口_WaitForDebugEvent管理
功能:
HOOK函数“WaitForDebugEvent”管理易语言调试动作
回调函数:
.版本 2
.子程序 回调_WaitForDebugEvent调用前, 整数型, , 如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。
.参数 lpDebugEvent, 整数型, , 指向DEBUG_EVENT结构的指针,该结构包含有关调试事件的信息。
.参数 dwMilliseconds, 整数型, , 等待调试事件的毫秒数。
.局部变量 局_参数, 整数型, , "2"
局_参数 [1] = lpDebugEvent
局_参数 [2] = dwMilliseconds
返回(集_WaitForDebugEvent管理.调用原函数 (, 局_参数))
作用:
通过监听易语言调试动作,内存解除调试输出内容长度限制、内存解除30秒编译限制【实例:易语言修复插件】
# 易语言IDE动作监听接口调用
调用以下接口务必初始化接口,否则接口命令不生效,初始化方式与 常用API函数HOOK接口调用 - 基本调用一致
一、接口_IDE编译事件管理
功能:
监听易语言IDE运行与编译源码的动作
回调函数:
.版本 2
.子程序 回调_IDE编译事件调用前
.参数 事件标识, 整数型, , #IDE编译事件_
.参数 调用类型, 整数型, , #IDE编译事件调用类型_
.参数 参数一, 整数型
.参数 参数二, 整数型
作用:
通过监听动作修改参数值实现智能编译与编译后动作的执行【实例:F7一键智能编译插件,编译后动作】
二、接口_IDE菜单条管理
功能:
添加、查找、移除、获取易语言IDE菜单
1、插入菜单项
.版本 2
集_菜单标识 = CreatePopupMenu () ' 创建一个菜单 得到菜单标识
集_菜单 = 接口_获取IDE菜单条管理 () ' 接管易语言IDE顶部菜单
集_菜单.插入菜单项 (集_菜单标识, “ 我的菜单 ”, 17) ' 在易语言IDE顶部菜单中插入菜单
2、插入子菜单
.版本 2
集_菜单 = 接口_获取IDE菜单条管理 () ' 接管易语言IDE顶部菜单
集_菜单.插入子菜单项 ({ 7 }, #常量_自定义子菜单ID, “我的子菜单”, #MF_STRING,3)
' 自定义子菜单ID 自己定义,尽量5-6位数的整数,避免与易语言自身菜单ID冲突
' (添加的父菜单索引,添加子菜单ID,子菜单名,菜单类型,子菜单索引)
' 添加的父菜单索引 从“程序”开始,程序=0 编辑=1 查看=2 依次类推
' 这里插入位置7 是插入到易语言IDE顶部“工具”菜单中,从第三个位置插入
3、查找菜单项
集_菜单.查找菜单项(276)‘易语言IDE顶部菜单 运行
4、查找子菜单项
.版本 2
集_菜单 = 接口_获取IDE菜单条管理 ()
局_菜单标识 [1].是否索引 = 真
局_菜单标识 [1].菜单标识 = 0
局_菜单标识 [2].是否索引 = 假
局_菜单标识 [2].菜单标识 = 32875 ’易语言IDE菜单 程序 - 配置
.如果真 (集_菜单.查找子菜单项 (局_菜单标识, 局_索引数组) = 假)
ET.输出文本 (“指定菜单不存在”, 真)
返回 ()
5、获取菜单标识
.版本 2
集_菜单.获取菜单标识(3)’获取易语言IDE顶部菜单“插入”的菜单标识
' 获取易语言IDE顶部菜单 从左往右第三个菜单的菜单标识,注意:程序=0 编辑=1 查看=2 插入=3
6、获取菜单项位置
.版本 2
集_菜单.获取菜单项位置 ("菜单标识[整数型]", "位置[RECT]")
' 通过菜单标识获取易语言菜单当前矩形
7、刷新显示
.版本 2
集_菜单.刷新显示 ()
' 添加菜单或者移除菜单后刷新菜单显示
8、添加菜单项
.版本 2
集_菜单标识= CreatePopupMenu ()
集_菜单.添加菜单项 (集_菜单标识,菜单标题)
' 在易语言IDE顶部菜单末尾添加菜单
9、添加子菜单项
.版本 2
集_菜单.添加子菜单项 ({ 7 }, #常量_自定义子菜单ID, “我的子菜单”, #MF_STRING)
' 自定义子菜单ID 自己定义,尽量5-6位数的整数,避免与易语言自身菜单ID冲突
' (添加的父菜单索引,添加子菜单ID,子菜单名,菜单类型)
' 添加的父菜单索引 从“程序”开始,程序=0 编辑=1 查看=2 依次类推
' 这里插入位置7 是插入到易语言IDE顶部“工具”菜单中,从末尾添加
10、移除菜单项
.版本 2
集_菜单.移除菜单项 ("菜单标识[整数型]")
' 根据指定的菜单标识移除对应的顶部菜单
11、移除子菜单项
.版本 2
集_菜单.移除子菜单项 ({#菜单索引_}, "菜单标识[整数型]")
' 参数一:顶部父菜单索引 常量 #菜单索引_
' 参数二:待删除的子菜单标识
三、接口_IDE代码编辑框管理
功能:
管理易语言IDE代码窗口光标
1、初始化
.版本 2
接口_IDE代码编辑框管理.初始化 ("窗口句柄[整数型]")
' 调用此接口除了统一基本调用获取接口,还需要初始化要管理的易语言IDE代码编辑框窗口句柄
2、获取光标位置
.版本 2
.局部变量 局_行列, 行列
接口_IDE代码编辑框管理.获取光标位置 (局_行列)
ET.输出文本 (“当前光标所在 行:” + 到文本 (局_行列.行号) + “ 列:” + 到文本 (局_行列.列号), )
' 注意:这里获取的行列信息与易语言IDE状态栏显示的行列信息有偏差
' 易语言IDE状态栏输出的行列信息是基于表格结构,所以在代码行无论光标在什么位置,易语言IDE的状态栏显示的都是0列
3、获取光标表位置
.版本 2
.局部变量 局_行列, 行列
接口_IDE代码编辑框管理.获取光标表位置 (局_行列)
ET.输出文本 (“当前光标所在 行:” + 到文本 (局_行列.行号) + “ 列:” + 到文本 (局_行列.列号), )
' 等同易语言IDE状态栏输出的行列信息,偏差1
4、获取行信息
.版本 2
接口_IDE代码编辑框管理.获取行信息 ("行号[整数型]", "项标识[整数型]", "项数据指针[整数型]")
' 参数一:待获取信息的代码行
' 返回值 参考常量 #代码行类型_
5、获取代码文本
.版本 2
接口_IDE代码编辑框管理.获取代码文本 ("表行[整数型]", "表列[整数型]")
' 参数一:表格所在行
' 参数二:表格所在列
' 注意此命令用于获取表格指定行列的文本,获取代码行文本参数二:0
6、获取代码类型
.版本 2
接口_IDE代码编辑框管理.获取代码类型 ()
' 返回值 参考常量 #代码类型_
7、获取选中行数、获取选中列数
.版本 2
接口_IDE代码编辑框管理.获取选中行数 ()
接口_IDE代码编辑框管理.获取选中列数 ()
' 获取当前选中代码所在的行号与列号
8、获取选中信息
.版本 2
接口_IDE代码编辑框管理.获取选中信息 ("起始列[整数型]", "结束列[整数型]", "当前行[整数型]", "选中行范围[行范围]")
' 获取当前选中代码的相关信息
9、是否选中代码
.版本 2
接口_IDE代码编辑框管理.是否选中代码 ()
' 判断当前代码编辑框是否选中代码
10、保证显示光标位置
.版本 2
接口_IDE代码编辑框管理.保证显示光标位置 ()
' 保证当前光标显示
11、光标定位
.版本 2
接口_IDE代码编辑框管理.光标定位 ("行号[整数型]")
' 将光标移动到指定行号所在的代码
12、设置光标表位置
.版本 2
.局部变量 局_行列, 行列
局_行列.行号 = 3
局_行列.列号 = 2
接口_IDE代码编辑框管理.设置光标表位置 (局_行列)
' 移动光标到第三代码行的第二个表格里
13、设置光标位置
.版本 2
.局部变量 局_行列, 行列
局_行列.行号 = 3
局_行列.列号 = 2
接口_IDE代码编辑框管理.设置光标位置 (局_行列)’会把表列号置为0
' 移动光标到第三代码行的第2列
14、设置选中信息
接口_IDE代码编辑框管理.设置选中信息 ("起始列[整数型]", "结束列[整数型]", "当前行[整数型]", "选中行范围[行范围]")
15、销毁
.版本 2
接口_IDE代码编辑框管理.销毁 ()
' 不再管理初始化的代码编辑框时务必 调用 销毁
四、接口_IDE代码窗口工作夹管理 (本接口由 代码视图插件 提供。调用此接口必须启用 代码视图插件)
功能:
在代码视图选择夹中加入自己的窗口
1、添加子夹处理
.版本 2
.局部变量 局_事件数组, 事件, , "5"
局_事件数组 [1] = 事件 (#IDE代码窗口工作夹事件_子夹被创建, &UI_创建)
局_事件数组 [2] = 事件 (#IDE代码窗口工作夹事件_子夹被显示, &UI_显示)
局_事件数组 [3] = 事件 (#IDE代码窗口工作夹事件_子夹被隐藏, &UI_隐藏)
局_事件数组 [4] = 事件 (#IDE代码窗口工作夹事件_子夹尺寸被改变, &UI_尺寸被改变)
局_事件数组 [5] = 事件 (#IDE代码窗口工作夹事件_子夹被销毁, &UI_销毁)
集_子夹标识 = 接口_IDE代码窗口工作夹管理.添加子夹处理 (#常量_插件名, , , { #代码类型_窗口 }, 局_事件数组)
2、删除子夹处理
接口_IDE代码窗口工作夹管理.删除子夹处理 (集_子夹标识)
3、获取子夹句柄
接口_IDE代码窗口工作夹管理.获取子夹句柄 ("代码窗口句柄[整数型]", "子夹处理标识[整数型]")
4、切换至子夹
接口_IDE代码窗口工作夹管理.切换至子夹 ("子夹句柄[整数型]")
5、获取代码编辑框句柄
接口_IDE代码窗口工作夹管理.获取代码编辑框句柄 ("子夹句柄[整数型]")
五、接口_IDE代码窗口管理
功能:
获取易语言IDE代码编辑框窗口相关句柄与监听动作
1、获取当前代码编辑框句柄
.版本 2
接口_IDE代码窗口管理.获取当前代码编辑框句柄 ()
' 获取当前操作的易语言IDE代码编辑框句柄
2、获取当前代码窗口句柄
.版本 2
接口_IDE代码窗口管理.获取当前代码窗口句柄 ()
' 获取当前操作的易语言IDE代码窗口句柄
3、获取所有子窗口句柄
.版本 2
接口_IDE代码窗口管理.获取所有子窗口句柄 ("子窗口句柄列表[整数型]")
' 获取当前操作的易语言IDE已创建的代码窗口,以数组方式参考返回
4、获取当前代码编辑框管理
.版本 2
接口_IDE代码窗口管理.获取当前代码编辑框管理 ()
' 直接初始化并获取当前易语言IDE代码编辑框的管理
5、获取代码编辑框类型
.版本 2
接口_IDE代码窗口管理.获取代码编辑框类型 ("代码编辑框句柄[整数型]")
' 判断指定的易语言IDE代码编辑框是什么类型的,参考常量:#代码类型_
6、添加代码窗口事件处理
.版本 2
接口_IDE代码窗口管理.添加代码窗口事件处理 (&回调_代码窗口事件处理)
' 监听易语言IDE代码窗口的动作
.子程序 回调_代码窗口事件处理
.参数 事件类型, 整数型
.参数 子窗口句柄, 整数型
.参数 备用参数, 整数型
' 事件类型 参考常量:#IDE代码窗口事件_
7、获取代码编辑框句柄
.版本 2
接口_IDE代码窗口管理.获取代码编辑框句柄 ("子窗口句柄[整数型]")
' 通过 添加代码窗口事件处理 参数:子窗口句柄 获取实际代码编辑框句柄
六、接口_IDE新建事件管理
1、回调函数
.版本 2
.子程序 回调_IDE新建事件管理
.参数 参_新建类型, 整数型
' 添加调用前处理的回调函数
' 新建类型参考常量:#IDE源码类型_
2、调用新建事件
.版本 2
接口_IDE新建事件管理.调用新建事件 ("源码类型[整数型]")
' 参数参考常量:#IDE源码类型
3、调用关闭事件
.版本 2
接口_IDE新建事件管理.调用关闭事件 ()
' 会强制关闭当前源码,使用前请判断[代码是否被改变],并提示用户
# HOOK系统接口
一、接口_函数Hook\接口_函数HookEx
1、插件函数HOOK
.版本 2
.程序集变量 集_HOOK, 接口_函数Hook
局_模块句柄 = GetModuleHandle (“user32.dll”)
局_函数地址 = GetProcAddress (局_模块句柄, “ShowWindow”)
集_HOOK = ET.创建函数Hook (局_函数地址, 到整数 (&回调_ShowWindow))
'在 事件_插件启用 创建需要hook 的函数
2、回调函数
.版本 2
.子程序 回调_ShowWindow, 整数型
.参数 hwnd, 整数型
.参数 nCmdShow, 整数型
.局部变量 局_参数, 整数型, , "2"
.局部变量 局_返回, 整数型
局_参数 [1] = hwnd
局_参数 [2] = nCmdShow
局_返回 = 调用子程序指针 (到子程序指针 (集_HOOK.原函数地址 ()), 局_参数)
返回 (局_返回)
' 这里回调函数参数与HOOK的函数原函数的参数一致,自定义数据类型的参数为数据指针,自行计算偏移获取成员数据或修改成员数据
3、释放
.版本 2
.子程序 事件_插件停用
集_HOOK.释放 ()
ET.输出文本 (“事件_插件停用”, 真)
'务必在插件停用的时候释放hook,否则会出现崩溃、假死等问题
# 常用接口
一、接口_获取xx管理
功能:
用于“常用API函数HOOK接口调用“与”易语言IDE动作监听接口调用”相关类模块接口初始化调用
.版本 2
.子程序 事件_插件启用
ET.输出文本 (“事件_插件启用”, 真)
集_HOOK = 接口_获取ShowWindow管理 ()
集_HOOK.添加调用前处理 ()
二、接口_获取程序树型框句柄
功能:
返回易语言IDE工作夹 程序子夹树型框句柄
.版本 2
.局部变量 局_树型框句柄_程序, 整数型
局_树型框句柄_程序 = 接口_获取程序树型框句柄 ()
三、接口_获取当前源码类型
功能:
返回当前打开的源码是什么类型,具体类型参考常量:IDE源码类型_
.版本 2
.局部变量 局_当前源码类型, 整数型
局_当前源码类型 = 接口_获取当前源码类型 ()
四、接口_获取当前源码路径
功能:
返回当前打开的源码的文件路径
.版本 2
.局部变量 局_当前源码路径, 文本型
局_当前源码路径 = 接口_获取当前源码路径 ()
五、接口_获取工作夹句柄
功能:
返回当前打开的源码的文件路径
.版本 2
.局部变量 局_当前IDE工作夹句柄, 整数型
局_当前IDE工作夹句柄 = 接口_获取工作夹句柄 ()
六、接口_获取上次编译路径
功能:
获取上次编译输出的路径
.版本 2
.局部变量 局_上次编译路径, 文本型
局_上次编译路径 = 接口_获取上次编译路径 ()
七、接口_获取输出编辑框句柄
功能:
获取易语言IDE输出编辑框的句柄,注意不是“提示输出扩展插件”的输出框句柄
.版本 2
.局部变量 局_输出编辑框句柄, 整数型
局_输出编辑框句柄 = 接口_获取输出编辑框句柄 ()
八、接口_获取支持库树型框句柄
功能:
获取易语言IDE工作夹树支持库树型框句柄
.版本 2
.局部变量 局_支持库树型框句柄, 整数型
局_支持库树型框句柄 = 接口_获取支持库树型框句柄 ()
九、接口_获取状态夹句柄
功能:
获取易语言IDE状态夹句柄
.版本 2
.局部变量 局_状态夹句柄, 整数型
局_状态夹句柄 = 接口_获取状态夹句柄 ()
十、选择夹_切换
功能:
切换易语言IDE状态夹或工作夹子夹
.版本 2
.局部变量 局_状态夹句柄, 整数型
局_状态夹句柄 = 接口_获取状态夹句柄 () '接口_获取工作夹句柄
选择夹_切换 (局_状态夹句柄, #索引_输出)’#索引_输出=1
十一、接口_状态夹添加子夹
功能:
在易语言IDE状态夹或工作夹添加子夹并监听子夹动作
.版本 2
.子程序 事件_插件启用
.局部变量 局_事件数组, 事件, , "5"
.局部变量 局_图标句柄, 整数型
UI_创建窗口 ()
局_事件数组 [1] = 事件 (#选择夹事件_子夹被创建, &UI_创建)
局_事件数组 [2] = 事件 (#选择夹事件_子夹被显示, &UI_显示)
局_事件数组 [3] = 事件 (#选择夹事件_子夹被隐藏, &UI_隐藏)
局_事件数组 [4] = 事件 (#选择夹事件_子夹被销毁, &UI_销毁)
局_事件数组 [5] = 事件 (#选择夹事件_子夹尺寸被改变, &UI_尺寸被改变)
局_图标句柄 = 图标_创建句柄 (#图标_子夹, 1)'子夹图标数据,自行替换
全_子夹标识 = 接口_状态夹添加子夹 (“工具箱”, 你的窗口句柄 , 局_图标句柄, 局_事件数组)
图标_释放句柄 (局_图标句柄)
十二、事件回调函数
功能:
回调创建子夹时监听的事件
.版本 2
.子程序 UI_显示
.参数 参选择夹句柄, 整数型
.参数 子夹标识, 整数型
.参数 窗口句柄, 整数型
'其余事件参数与本函数一致
十三、接口_状态夹切换至子夹\接口_工作夹切换至子夹
功能:
通过“接口_状态夹添加子夹\接口_工作夹添加子夹” 返回的子夹标识 切换对应的子夹
接口_状态夹切换至子夹 (全_子夹标识)
接口_工作夹切换至子夹 (全_子夹标识)
十四、接口_状态夹删除子夹\接口_工作夹删除子夹
功能:
删除由“接口_状态夹添加子夹\接口_工作夹添加子夹”的子夹
接口_状态夹删除子夹 (全_子夹标识)
接口_工作夹删除子夹 (全_子夹标识)
十五、接口_状态夹置子夹名称\接口_工作夹置子夹名称
功能:
设置由“接口_状态夹添加子夹\接口_工作夹添加子夹”子夹的名称
接口_状态夹置子夹名称 (全_子夹标识, “新的子夹名称”)
十六、IDE_添加输出子夹
功能:
在易语言IDE状态栏添加子夹
IDE_添加输出子夹 (添加到子夹的窗口句柄, “子夹名称[文本型]”, “子夹描述[文本型]”)
十七、IDE_调用IDE接口
功能:
根据接口号与参数调用易语言开放的接口,注意:需要支持调用接口的易语言版本
.版本 2
IDE_调用IDE接口 (“功能号[整数型]”, “功能参数1[整数型]”, “功能参数2[整数型]”)
' 参数一:【整数型】功能号,功能号和含义参看易语言根目录下\\sdk\\cpp\\elib\\lib2.h;
' 参数二:【整数型】备选参数,部分有参数的接口使用,默认0;
' 参数三:【整数型】备选参数:部分有参数的接口使用,默认0;
十八、接口_打开代码
功能:
直接打开源码,执行后会提示用户是否保存已修改的源码
.版本 2
接口_打开代码 (“路径[文本型]”)
' 参数:源码文件绝对路径
十九、接口_代码是否被改变
功能:
检查当前打开的源码代码是否有修改
.版本 2
接口_代码是否被改变 ()
' 有修改返回真
二十、接口_导入代码
功能:
直接在当前打开的源码中插入指定源码的代码,不会覆盖或触发提示用户保存
.版本 2
接口_导入代码 (“路径[文本型]”)
' 参数:源码文件绝对路径
二十一、接口_设置当前源码类型
功能:
更改当前源码编译类型
.版本 2
接口_设置当前源码类型 (“源码类型[整数型]”)
' 更改当前源码编译类型 参数参考常量:#IDE源码类型_
二十二、接口_是否调试运行中
功能:
判断当前易语言IDE是否处于调试运行中
.版本 2
接口_是否调试运行中 ()
' 判断当前易语言IDE是否处于调试运行中,调试运行中返回真
二十三、接口_输入框
功能:
调用输入框以便让用户输入内容并取回输入的内容
.版本 2
接口_输入框 (“提示信息[文本型]”, “窗口标题[文本型]”, “初始文本[文本型]”, “存放输入内容的变量[文本型]”)
' 参数一:提示用的内容
' 参数二:输入框窗口的标题
' 参数三:输入框编辑框的初始内容
' 参数四:输入框编辑框的输入内容
' 返回值,返回用户是否点击了确定按钮
二十四、接口_添加键盘消息处理
功能:
与ET.添加时间处理(#事件标识_键盘消息,&回调_键盘消息处理)用法一致
.版本 2
接口_添加键盘消息处理 (&回调_键盘消息处理)
.子程序 回调_键盘消息处理, , , 无返回值
.参数 键代码, 整数型
.参数 按键状态, 整数型, , 0=按下 1=弹起
.参数 功能键状态, 整数型
二十五、接口_添加主窗口消息调用后处理\接口_添加主窗口消息调用前处理
功能:
监听易语言IDE主窗口的消息
.版本 2
接口_添加主窗口消息调用前处理 (&回调_主窗口消息处理)
接口_添加主窗口消息调用后处理 (&回调_主窗口消息处理)
.子程序 回调_主窗口消息处理, , , 无返回值
.参数 hWnd, 整数型
.参数 uMsg, 整数型
.参数 lWaram, 整数型
.参数 lParam, 整数型
二十六、接口_调用编译事件
功能:
直接调用易语言IDE编译动作执行编译
.版本 2
接口_调用编译事件 (“事件标识[整数型]”)
' 事件标识 参考常量:#IDE编译事件_
二十七、接口_调用新建事件
功能:
直接调用易语言IDE新建动作新建源码
.版本 2
接口_调用新建事件 (“源码类型[整数型]”)
' 源码类型 参考常量:#IDE源码类型_
' 会强制关闭当前源码,使用前请判断[代码是否被改变],并提示用户
二十八、接口_新建空白源码
功能:
直接调用易语言IDE新建动作新建一个默认的空白源码
.版本 2
接口_新建空白源码 ()
' 会强制关闭当前源码,使用前请判断[代码是否被改变],并提示用
二十九、接口_易界面刷新
功能:
刷新易语言IDE界面
接口_易界面刷新 ()
三十、接口_智能编译 本接口由“智能编译插件”提供
功能:
直接调用“智能编译插件”接口执行智能编译动作
接口_智能编译 ()
三十一、接口_主线程调用
功能:
解决在易语言助手中调用启动线程等命令异常时,可以用此命令
.版本 2
接口_主线程调用 (“子程序[子程序指针]”, “参数[整数型]”)
' 参数一:待执行子程序指针
' 参数二:传递给子程序的参数
三十二、接口_主线程异步调用
功能:
线程异步调用子程序
.版本 2
接口_主线程异步调用 (“子程序[子程序指针]”, “参数[整数型]”)
' 参数一:待执行子程序指针
' 参数二:传递给子程序的参数
三十三、整数_取高16位\整数_取低16位
功能:
用于取出消息值中的高位和低位,例如:WM_SIZE 的 lParam 值 低位为宽度 高位为高度
.版本 2
整数_取高16位 (“参数[整数型]”)
整数_取低16位 (“参数[整数型]”)
' 用于取出消息值中的高位和低位