怎么才能不出错?才能挽留主???救我!(100分)

  • 主题发起人 主题发起人 zitai
  • 开始时间 开始时间
Z

zitai

Unregistered / Unconfirmed
GUEST, unregistred user!
dll中:
var
oldapplication:THandle

procedure ModMain(ParentWnd: HWND); stdcall;
begin
oldapplication:=application.handle;
Application.handle := ParentWnd; //传递句柄
FormMain:=TFormMain.Create(application);
With FormMain do
begin
try
Show;
except
Free;
end;
end;
end;
主form中:
loadlibrary正常,就是释放时出错。调试时最后出现cpu信息框是地址出错。
释放代码如下:
procedure TFrame.freemodel(modhandle:THandle);
begin
freelibrary(Thandle);
end;
一运行这个函数freemodel后,主程序就自动释放了。?????


后来在dll中加了段代码是:
procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Application.MessageBox('退出?','退出信息',MB_ICONQUESTION+MB_YESNO+MB_DEFBUTTON1)=IDYES then
begin
Action:=caFree;
application:=oldapplication
end
else
Action:=caNone;
end;

同样不可以的。???
 
Dll中的窗体还没有释放你主程序就退出了,当然会出错。
 
我已经在DLL的close事件已经释放了呀!
 
我清楚你说的是不是release(longint(FormMain))?可惜我已经试过了呀。
另外写一个方法???
我已经尝试过这种方法了。
procedure FreeIns(AFormRef:longint);
begin
if AFormRef >0 then
TFormMain(AFormRef).release;
end;
再在freelibrary之前加上FreeIns(AFormRef)
可惜问题还是在。
而且dll窗口的show方法只在创建时使用过一次,只有一个实例。
 
应该是窗体没有释放

你可以再写一个监听进程,遍历所有窗口,在你dll结束前后,观察一下是否有哪个窗体
未释放,不然好象很快就会把系统资源耗完的。
 
将Show改为ShowModal
 
哪里有TPREVIEW控件下载呀?
能不能给我发一个
88162O2@SINA.COM
 
怎么分配给分呀,你们没有解决我的问题呀。悲酥清风:有些时候我不释放dll库退出主程序,
它不会报错.????我的问题在close事件中加了sendmessage引起的,一开始我使用wm_copydata同样也是不可以
只能使用postmessage.jackyzhang:今天就发.
 
后退
顶部