关于在ACTIVEFORM中调用WORD的,每次运行到第9次时就报错。(100分)

  • 主题发起人 主题发起人 deadren
  • 开始时间 开始时间
D

deadren

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个嵌入到WEB中的ACTIVEFORM,之中只有一个按钮,点击这个按钮弹出一个FORM
在这个FORM中创建WORD并嵌入一个panel中,点击按钮运行前8次都正常,但是到第九次以后就会出错,WORD可以创建但是不能打开文档。
错误信息是:
access violation at address 006D6574.read of address 006D6574.
但是刷新一下WEB页面,就又正常了
代码如下:
if FindWindow('OpusApp', nil)<>0 then
BEGIN
cfg.MessageDlg('word 正在使用,系统将关闭它!', mtinformation, [mbok], 0);
SendMessage(FindWindow('OpusApp', nil), WM_CLOSE, 0, 0);
END;
try
myapp := CreateOleObject('word.application');
except
cfg.MessageDlg('创建WORD对象失败!您可能未安装WORD或安装已损坏!', mtinformation, [mbok], 0);
Application.Terminate;
end;
myapp.Visible := true;

------------------
try
WDHD := FindWindow('OpusApp', nil); ////查找该对象句柄
except
cfg.MessageDlg('初始化WORD失败!', mtinformation, [mbok], 0);
Application.Terminate;
end;
if wdhd<>0 then
begin
try
Windows.SetParent(WDHD, Self.Panel1.Handle); //将对象内嵌到panel中
except
cfg.MessageDlg('嵌入WORD失败!', mtinformation, [mbok], 0);
Application.Terminate;
end;
end
else
begin
cfg.MessageDlg('嵌入WORD失败!', mtinformation, [mbok], 0);
Application.Terminate;
end;
-------------------------
try
doc := myapp.documents.open(tempdir + 'temp.doc',False,False,False,'','',False,'','',0);
except
cfg.MessageDlg('打开文档失败!', mtinformation, [mbok], 0);
docstate := False;
exit;
Self.Close;
不知那位前辈遇到过这种情况。请赐教
 
我四年前遇到过这个问题 现在忘了如何解决的了 检查一下是否释放或者关闭
 
我在后面都使用MYAPP.QUIT关闭了WORD,并且关闭了窗口以后确实没有了WORD进程
 
自己解决了,我在每次创建了FORM以后,都将它销毁一次就不会出现这个问题了,
 
后退
顶部