千
千中元
Unregistered / Unconfirmed
GUEST, unregistred user!
dll插件。
1)如果当前目录下有插件,则自动load, 好像不符合习惯。那么如何控制引入插件的
时机呢?
2)如下代码引入插件的时候,好像没有处理以前已经引入插件的情况(自动覆盖还是??)
是我没看出来么?请指点。
该如何判断以前该插件已经被引入了。。
代码如下:
LibHandle := LoadLibrary(Pchar(sr.Name));
if LibHandle <> 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, 好像不符合习惯。那么如何控制引入插件的
时机呢?
2)如下代码引入插件的时候,好像没有处理以前已经引入插件的情况(自动覆盖还是??)
是我没看出来么?请指点。
该如何判断以前该插件已经被引入了。。
代码如下:
LibHandle := LoadLibrary(Pchar(sr.Name));
if LibHandle <> 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