社区
C++ Builder
帖子详情
对插件感兴趣的进来一下
MEFULEU
2006-02-22 10:51:11
某一程序,想添加一些新的功能,现在已经使用DLL来实现了新的功能,
使用这种方法似乎每次新增功能都必须重新的编译主程序才可以;
看了看有些说明说使用插件可以不用重新编译主程序,
那么问题来了:
我看很多的插件例子调用时都是像DLL一样加载,究竟怎么加载才可以一劳百逸呢?
就是一句话,我不想每次都编译源程序;直接添加一个DLL都相应目录即可;
那么怎么主程序加载插件过程究竟怎么写才可以???????????????????
...全文
136
15
打赏
收藏
对插件感兴趣的进来一下
某一程序,想添加一些新的功能,现在已经使用DLL来实现了新的功能, 使用这种方法似乎每次新增功能都必须重新的编译主程序才可以; 看了看有些说明说使用插件可以不用重新编译主程序, 那么问题来了: 我看很多的插件例子调用时都是像DLL一样加载,究竟怎么加载才可以一劳百逸呢? 就是一句话,我不想每次都编译源程序;直接添加一个DLL都相应目录即可; 那么怎么主程序加载插件过程究竟怎么写才可以???????????????????
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
MEFULEU
2006-02-23
打赏
举报
回复
下了那个spywin看了看才发现自己编程才接触冰山一角;
惭愧!!!!!!!!!!!111!!!
MEFULEU
2006-02-23
打赏
举报
回复
a,b,c,d,e,f
诸类DLL一样的输出接口,那么也就是说在主程序每个角落都要进行判断调用一下了?
假设我有N个子窗口,每个字窗口都要调用一下这些接口函数?
那么对应于每个子窗口来说也必须要调用预定义好的DLL??---是不是就是说预留接口?
可是这样子怎么知道那个DLL是他的?
另外既然开始已经知道了开始要调用什么东西?干吗我在后边再重新的搞什么插件????
constantine
2006-02-23
打赏
举报
回复
//---------------------------------------------------------------------------
#include <vcl.h>
#include <windows.h>
#pragma hdrstop
#pragma argsused
extern "C" __declspec(dllexport)
void __stdcall GetPlugInEffectName(LPTSTR Effect,LPTSTR Info);
extern "C" __declspec(dllexport)
void __stdcall DoEffect(Graphics::TBitmap *Bmp);
struct RGB
{
byte BlueColor;
byte GreenColor;
byte RedColor;
};
//--------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
void __stdcall GetPlugInEffectName(LPTSTR Effect,LPTSTR Info)
{
strcpy(Effect,"旋转180度");
strcpy(Info,"Rotate180 Plug-In v1.0 [Rotate180.DLL]");
}
void __stdcall DoEffect(Graphics::TBitmap *Bmp)
{
Graphics::TBitmap *Bmp1;
TRect MyRect, MyOther;
MyRect = Rect(Bmp->Width,Bmp->Height,0,0);
MyOther = Rect(0,0,Bmp->Width,Bmp->Height);
Bmp1=new Graphics::TBitmap;
Bmp1->Width=Bmp->Width;
Bmp1->Height=Bmp->Height;
Bmp1->Canvas->Draw(0,0,Bmp);
Bmp->Canvas->CopyRect(MyOther, Bmp1->Canvas, MyRect);
delete Bmp1;
}
一个简单的例子GetPlugInEffectName,DoEffect 这2个函数是每个插件都有的,不管你调用那个dll,都是这2个函数,通过第一个知道插件的作用,使用的时候就调用第二个函数,调用都用动态调用,这个相信你一定会
dll的名字可以用ini记录,注册表也可以,或者放在同一个目录下,每次启动就遍历一下目录下面所有的*.dll,这样就知道有那些dll文件,就这么简单
constantine
2006-02-23
打赏
举报
回复
简单点说,这些dll的输出函数是一样的,一样的名字,一样的参数,一样的返回值,不过函数实现的内容不一样,dll文件的名字不一样,如果你知道有多少个dll了,你当然调用几次就可以了
这么调用就不用说了
如果实在还不明白就说一下,我回去给你copy个例子过来,上面说的书好像后面还有“技术”2字
在里面介绍图像编程那一章就有代码
qybao
2006-02-23
打赏
举报
回复
我是这么想的
1. 主程序从配文件(如ini)或注册表中载入dll
2. 每个dll都有相同的接口(函数参数,返回类型一致)
3. 主程序根据具体逻辑需要,调用不同的dll(接口都是一样的,只是载入的dll不同,主程序可以不用重新编译,只需要发布dll的时候,重新修改一下配置文件或注册表就可以)
constantine
2006-02-23
打赏
举报
回复
添加插件的模板不是你自己规定的吗,你要这么写就这么写,以后插件都要按照他的样子来做,
实际上就是知道有多少个dll,然后调用就行了,因为每个dll的接口都是一样的
你可以看看C++builder 高级编程 里面有例子
cczlp
2006-02-23
打赏
举报
回复
到老妖网站www.ccrun.com下载个Spy4win, 里面有说明和例子.
cczlp
2006-02-22
打赏
举报
回复
函数接口是固定的, 调用就行
奥爸
2006-02-22
打赏
举报
回复
用工厂模式, 插件的接口都定义好
1: 每生成一个插件的dll,把dll的名字都象主程序注册一下,放配置文件或者注册表等等之中.
2: 主程序 根据注册的dll的名称调用不同的dll,调用该dll的函数跟你返回插件的实例
MEFULEU
2006-02-22
打赏
举报
回复
我看过Aweay提供的MySpy插件膜板,可是没有怎么说明主程序怎么加载插件的;
这样子,就算我添加了一个调用新的窗口的过程,他里边也不知道去那调用阿?
难道我查找他的窗口句柄?然后动态生成按钮?
constantine
2006-02-22
打赏
举报
回复
就如不惑说的,
你看看ccrun那个工具里面的文件吧,里面有说这么帮他的工具写插件的,就是一样的接口
然后自己判断有多少个dll,所有dll的调用都一个样
sanyou98
2006-02-22
打赏
举报
回复
up
奥爸
2006-02-22
打赏
举报
回复
把 活的东西都定义成接口, 主程序只是一个框架.
菜单什么的,把菜单句柄传递给插件,让插件去实现,其余的都类似了.只能把活的东西都拿走,让插件去实现
MEFULEU
2006-02-22
打赏
举报
回复
to:cczlp(不惑)
函数接口怎么会固定的?
那么我第一次想在主程序实现多添加一个菜单。
第二次我想在主程序调用出来的某个页面添加一些参数设定页面;
第三次我想在主程序某个地方多添加一个工具按钮;
那么是不是说,一开始主程序就必须考虑到这些东西;
这个好像有些.......有些不知道如何实现阿???
netsys2
2006-02-22
打赏
举报
回复
没插过,帮顶
新版Android开发教程.rar
� 由于是源代码开放的产品,对非主导厂商而言,可以避开与主导厂商在核心技术上面的差距,开发出 更 具竞争力和差异化的产品。 对运营商的影响 � 丰富的数据业务,将导致数据流量的显著增加 。 � 手机来源增加,...
java代码 提示
插件
_推荐4款个人珍藏的IDEA
插件
!帮你写出不那么差的代码
代码结构清晰,实现优雅(这个自夸就很不要脸),
感兴趣
的小伙伴可以看
一下
。在写代码的时候,有几个 IDEA
插件
对于我规范代码以及更高效地完成编码工作有奇效。那今天就简单聊聊我平时写代码过程中,有哪些 IDEA
插件
...
adobe pr cep
插件
开发,
进来
学习
感兴趣
的小伙伴可以晚上8点进入直播间观看up操作,后续会免费开放给粉丝使用 原创技术,期待大家的关注与建议 脑洞:用sql+素材打标实现剪辑自动化,你们说可能吗? 补充:查件已打包,具体项目地址与安装方式见:...
Intellij IDEA 实用
插件
1. 前言 从2020 年JVM生态报告解读可以看出Intellij IDEA目前已经稳坐Java IDE头把交椅。而且统计得出付费用户已经超过了...Intellij IDEA大部分功能是通过
插件
集成
进来
的。默认情况下已经集成了很多
插件
。你可以...
插件
式设计的架构模型与实例
Server就是基于
插件
式设计的,除了核心功能外,它所有的扩展功能和设备驱动都是以
插件
方式加入
进来
的。 基于
插件
的设计好处很多:把扩展功能从框架中剥离出来,降低了框架的复杂度,让框架更容易实现。扩展...
C++ Builder
13,871
社区成员
102,694
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章