主页
Top.Mail.Ru Yandeks.Metrika
论坛:“主要”;
当前存档:2002.04.25;
下载:[xml.tar.bz2];

向下

插件技术 找到类似的分支


Rat King   (2002-04-08 11:08) [0]

告诉我在哪里可以阅读有关连接外部处理功能(例如图像)的信息。 它们位于DLL中,并且可以采用任何形式。 任意数量的处理功能 在运行时连接 程序。 通常,DLL允许您执行此操作,或者COM?



Fox   (2002-04-08 11:40) [1]

也许有兴趣?
关于“法师地牢”下的“德尔菲王国”
http://www.delphikingdom.com/mastering/plugins.htm
http://www.delphikingdom.com/mastering/plugins01.htm



RatKing   (2002-04-10 18:43) [2]

谢谢你,福克斯,一切都消失了...



Digitman   (2002-04-10 18:57) [3]

任何DLL也是一种插件。



RatKing   (2002-04-11 10:34) [4]

至:Digitman
我的意思是在程序执行期间(而不是在编译期间)将相同的DLL与函数的知名语法连接。



Digitman   (2002-04-11 12:34) [5]

请问有什么区别?

看看这里发生了什么,以及如何轻松地使其适应您的需求。

操作系统尝试首先加载应用程序请求的某些库文件时,其行为如下:
-将该文件作为常规文件打开;
-按照严格定义的顺序(主要是签名)分析头,建议将其放置在文件中PE规范严格定义的位置;
-如果检测到的标头符合规范,则操作系统将展开一系列操作,以在调用进程的VAS上显示CS和DS“正确”的DLL,初始化DS等。 等

可以使用标准DLL功能(不仅作为抽象库,而且作为插件库),在应用程序的应用程序机制中实现大约同一件事(以免“浪费时间”)。

这是允许您使用现成的系统加载/导入机制以满足您的需要的近似方案之一:

-您为所有将来的DLL插件提供某种形式的ffy,并且与名为QueryMyPluginInfo()的原始(显然,出现在其他DLL中的可能性最小,而不是出现在您的插件中); 为了独具匠心,在组装插件时,您可以要求他们提供某些扩展名,不同的扩展名。 来自“ * .DLL”,例如“ * .MyPlugin”;

-您导出(根据您最初开发的专用)在插件中实现的强制性和可选功能/过程;

-在安装插件时,将其放置在预定义目录(例如,%SystemRoot%)中,或者放置在其路径在为此专门创建的注册表项中固定的目录中;

-您的应用程序“能够”在初始化期间与自己的插件一起使用,搜索(通过注册表中或臭名昭著的%SystemRoot%中的信息),并编译具有预定义扩展名(更好)或标准插件库的临时列表。 扩展名“ * .DLL”;

-对于每个电子邮件时间表,试图加载通常的调用LoadLibrary(); 如果下载失败,则将e-t从时间列表中排除;

-成功加载后,尝试通过对GetProcAddr()的常规调用来获取QueryMyPluginInfo()函数的地址; 如果在导出的文件中没有这样的功能,则该模块不被视为插件,而是通过调用UnloadLibrary()立即被卸载,并且e-t被排除在时间列表之外;

-成功调用模块中检测到的QueryMyPluginInfo()函数后,将对与您期望的插件有关的预先返回的块进行分析和处理(对于标准/非标准插件和插件方法); 如果该块是正确的,则在给定的时刻将插件文件的链接及其参数信息添加到您的应用程序可用的潜在插件列表中,并由UnloadLibrary()卸载该插件(如果在给定的时刻您不需要它直接工作);

-根据潜在可用插件列表的状态,例如,形成一个特定菜单,用于快速访问检测到并检查是否符合您的规范的其中一个插件; 当您在应用程序中的此菜单上选择一个项目时,有关其位置和参数/功能的信息,您将用来加载适当的库并调用您的专业定义的插件功能; 如果下载分别由于一个或另一个原因而失败。 列表和菜单电子邮件
被排除在外。

仅此而已! 而且实际上-没有问题,没有头痛! 最主要的是“软”地处理DLL的加载/卸载错误以及调用它期望的功能的错误,而不会导致调用过程崩溃。



RatKing   (2002-04-12 10:06) [6]

至:Digitman© 谢谢



RatKing   (2002-04-12 10:23) [7]

另外,挖出什么:
1.如何编写自己的PLUGIN(例如对各种文件格式的支持...)
http://z-ol.chat.ru/system.htm#T30
2. Delphi中的插件
http://iamhere.inso.ru/2



Бурундук   (2002-04-12 10:51) [8]

2Digitman©
...它分析并处理有关您预先期望的插件的信息返回单元(关于标准/非标准插件和插件方法);

隐约让我想起了IDispatch ...



Digitman   (2002-04-12 11:31) [9]

>花栗鼠
是的,我同意,有一些相似之处。
什么使您感到困惑?



Страницы: 1 整个分支

论坛:“主要”;
当前存档:2002.04.25;
下载:[xml.tar.bz2];

楼上





内存:0.58 MB
时间:0.023 c
1-80983
博士 卷筒纸
2002-04-12 12:47
2002.04.25
说一下OpenOffice ...


3-80780
荣耀
2002-04-04 15:02
2002.04.25
将表从Delphi转换为Access


1-80869
lipskiy
2002-04-13 14:43
2002.04.25
如何轻松识别程序中未使用的代码?


3-80783
OlegM
2002-04-03 15:33
2002.04.25
请求结果请求


1-80996
奇斯佳科夫
2002-04-12 18:28
2002.04.25
RxTrayIcon





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法语
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 淡米尔文 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский