对我而言是个高难度的问题!

ninliu 2003-11-19 04:30:31
我现在编写一个Dll,名字为A.Dll,同事有一个B.Dll。Dll中包含各自的Form窗口,主程序(Exe)打开我的A.dll,获取了一个Handle,在我的Form。close事件中发送了一个消息给Application,程序接收到消息就从内存中释放了我的Dll,同理B.dll也是一样的处理!
问题出现在我的A.Dll中打开了B.dll的窗体,在B窗体关闭的时候发送了一个消息。怎么让Application释放B.dll呢,能不能通过A.dll自动释放B.dll
高手前来Look一下
...全文
62 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
aiirii 2003-11-20
  • 打赏
  • 举报
回复
b.dll在窗體釋放時, 可以將自己申請的資源都釋放, 這個沒問題, 但, 誰調用它的, 就要由誰來釋放調用b.dll的handle!!!
ninliu 2003-11-19
  • 打赏
  • 举报
回复
好象不是这个意思,在A.dll中释放B.dll是可以的。我要的是B.dll中窗体关闭的时候自动释放自己!
saien 2003-11-19
  • 打赏
  • 举报
回复
同意楼上的解决方法.
aiirii 2003-11-19
  • 打赏
  • 举报
回复
其实我还看不懂你的要求, 但你可试试下面的代码, 将你的 b.dll 传进去!

function KillDll(aDllName: string): Boolean;
var
hDLL: THandle;
aName: array[0..10] of char;
FoundDLL: Boolean;
begin
StrPCopy(aName, aDllName);
FoundDLL := False;
repeat
hDLL := GetModuleHandle(aName);
if hDLL = 0 then
Break;
FoundDLL := True;
FreeLibrary(hDLL);
until False;
if FoundDLL then
MessageDlg('Success!', mtInformation, [mbOK], 0)
else
MessageDlg('DLL not found!', mtInformation, [mbOK], 0);
end;

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧