精易论坛

标题: 如何让程序运行dll插件? [打印本页]

作者: wlyzn    时间: 2024-6-26 02:03
标题: 如何让程序运行dll插件?
各位大佬好
我自己根据对应平台提供的webscoket写了一个简易的监控软件
那我想像市面上机器人框架一样,支持载入自己写的插件,有办法吗
有办法的话简单还是麻烦,能请教到如何给这个监控软件加上运行dll插件就更好了
靴靴!

3d52b3fd1522850caf11c7b405fa1024.png (5.36 KB, 下载次数: 0)

3d52b3fd1522850caf11c7b405fa1024.png

作者: linby    时间: 2024-6-26 10:26
定义几个基本函数。比如:
1.插件信息。主程序主动调用这个DLL的子程序。根据返回信息,获取这个DLL插件的信息。
2.功能列表。主程序主动调用这个DLL的子程序。并根据返回的信息获取该DLL插件提供的功能。
作者: chungbin    时间: 2024-7-21 14:40
linby 发表于 2024-6-26 10:26
定义几个基本函数。比如:
1.插件信息。主程序主动调用这个DLL的子程序。根据返回信息,获取这个DLL插件的 ...

dll放在主程序所在目录的plugin文件夹下的插件名文件夹+app.dll这种的怎么调用
例:主程序在D:\chatai\主程序.exe
插件在D:\chatai\plugin\ai.chat.com\app.dll
然后我调用的时候提示错误:错误(10003): 指定Dll命令名称“版本号2”未找到。
代码:
.版本 2
.支持库 iext
.支持库 spec

.子程序 _加载插件按钮_被单击
.局部变量 link, 文本型
.局部变量 link1, 文本型
.局部变量 目录, 文本型

目录 = 取运行目录 () + “\plugin\*”
link = 寻找文件 (目录, #子目录)
.判断循环首 (link ≠ “”)
    .如果真 (link ≠ “.” 且 link ≠ “..”)
        超级列表框1.插入表项 (, link, , , , )
    .如果真结束
    link = 寻找文件 (, #子目录)
    调试输出 (link)
.判断循环尾 ()


.子程序 启动插件

' 运行 (取运行目录 () + “\plugin\” + 超级列表框1.取标题 (0, 0) + “\app.dll”, 假, )
运行 (“regsvr32 /s ” + 取运行目录 () + “\plugin\” + 超级列表框1.取标题 (0, 0) + “\app.dll”, 假, )
调试输出 (版本号2 ())

.版本 2

.DLL命令 版本号2, , "app.dll", "ver"


然后编译出去的DLL代码:
.版本 2

.程序集 程序集1

.子程序 _启动子程序, 整数型, , 请在本子程序中放置动态链接库初始化代码


_临时子程序 ()
ver ()  ' 在初始化代码执行完毕后调用测试代码
返回 (0)  ' 返回值被忽略。

.子程序 _临时子程序

' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。


.子程序 ver, 文本型, 公开
.局部变量 ver2, 文本型

ver2 = “1.0”
返回 (ver2)










欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4