通过dll调用子窗口,出现灾难性故障的问题,请各位朋友e |
尚未結案
|
nxwuyong
一般會員 發表:10 回覆:3 積分:2 註冊:2004-09-17 發送簡訊給我 |
我通过主程序利用dll调用子窗口,开始没有问题,子窗口可以出现,我没有对子窗口作任何操作就关闭该子窗口,然后再一次调用子窗口。这样调用操作l连续执行几次,结果报错:
Project Project1.exe raised exception class EOleException with message '灾难性故障'Process stopped.Use Step or Run to continue.
主程序调用dll:
。。。。。。
DllFileName:=trim(DM.SQL_sys_menu.FieldValues['func_id']);
DLLHandle:= LoadLibrary(Pchar(DllFileName));
if DLLHandle <> 0 then
begin
@ProcAddr := GetProcAddress(DLLHandle, 'CreateDllForm');
if @DLLForm <> nil then
DLLForm := ProcAddr(Application, Screen );
end;
。。。。
dll程序:
var
DLLApp: TApplication;
DllScr:TScreen; function CreateDllForm(ParentApplication: TApplication; Scr:TScreen):TForm; stdcall;
//var
//DllProc: Pointer; { Called whenever DLL entry point is called }
begin
Application:=ParentApplication;
Screen :=Scr;
Application.CreateForm(Tmenu_def_form,menu_def_form);
result:=menu_def_form;
end; procedure ExitDllForm(Reason: Integer); register;
begin
if Reason = DLL_PROCESS_DETACH then
begin
Application:=DLLApp;
Screen:=DLLScr;
end;
end;
exports
CreateDLLForm; begin
DLLApp:=Application;
DLLScr:=Screen;
DLLProc := @ExitDllForm;
end.
子窗口close按钮直接close;关闭该窗口! 这个灾难性故障,为什么产生?
请各位朋友帮忙解决
|
Vicen
高階會員 發表:13 回覆:145 積分:151 註冊:2005-03-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |