<font color=red>插件问题</font>:引入插件的时机。。(特别是eLan和Yuner要看过来)(129分)

  • 主题发起人 主题发起人 千中元
  • 开始时间 开始时间

千中元

Unregistered / Unconfirmed
GUEST, unregistred user!
dll插件。
1)如果当前目录下有插件,则自动load, 好像不符合习惯。那么如何控制引入插件的
时机呢?
2)如下代码引入插件的时候,好像没有处理以前已经引入插件的情况(自动覆盖还是??)
是我没看出来么?请指点。
该如何判断以前该插件已经被引入了。。
代码如下:
LibHandle := LoadLibrary(Pchar(sr.Name));
if LibHandle &lt;&gt; 0 then
begin
DescribeProc := GetProcAddress(LibHandle,
cPLUGIN_DESCRIBE);
if Assigned(DescribeProc) then
begin
DescribeProc(Description); //过程类型的使用;
memPlugins.Lines.Add(Description);
InitProc := GetProcAddress(LibHandle, cPLUGIN_INIT);

if Assigned(InitProc) then
begin
// 调用 InitPlugin.
InitProc(MainMenu1);
end;
InitEvents := GetProcAddress(LibHandle,
cPLUGIN_INITEVENTS);
if Assigned(InitEvents) then
begin
// 调用 InitPlugin.
InitEvents(lstMinMax);
end;
end
 
..
居然没有看明白问题 :)
 
1、当前目录下有插件,不一定要自动load,可以在设置里由用户选择么。用户选择
load它就load它。
2、你可以自己设个flag变量啊,不是什么问题
 
1 在启动软件时定位目录下的所有 dll 插件,生成插件的名称和
功能列表,并结合插件文件本身的校验值写入配置文件,在下次
启动时读这个文件,检验文件的更新,以避免重复工作。
2 在用户选择了插件功能时,在列表中找到它,然后尝试载入,
并运行。
 
在启动时,可动态生成一个插件列表,
让用户自己选呀,
通用按装插件模块,维护一个插件列表。
 
卖儿收到,谢谢!谢谢!谢谢!
这几天有些杂事,顾不上看了,
我先把页考比下来,过几天再来讨论
 
1、显然应该是动态的,即时读取。比如菜单弹出时就重建一次。
2、用注册表。
 
关于问题2:
我这里有份代码,连续的执行exe(每次自动load dll插件),
从结果看是覆盖了上次的。
没有对注册表操作或者设置flag
 
瞧瞧
又准备看DELPHI了
 
照着葫芦花飘,作了一个很简单的插件程序。在引入插件以后,退出exe,则
引起内存错误,谁有兴趣帮忙看看。
 
多人接受答案了。
 
后退
顶部