起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 338|回复: 20

【结贴】关于代码创建的office进程**

[复制链接]
发表于 2008-10-27 16:42:45 | 显示全部楼层 |阅读模式
请问如何立即销毁代码创建的office进程,而不是等到系统完全退出时才释放
回复

使用道具 举报

发表于 2008-10-27 16:58:22 | 显示全部楼层
procedure TMainForm.Button1Click(Sender: TObject);
var
  openDialog:TOpenDialog;
  o,o1: Object ;
  excelApp,b: DispatchHelper;
begin
  openDialog:=TOpenDialog.Create(nil);
  if openDialog.Execute then
  begin
    o:=ComObj.CreateOleObject('Excel.Application');
    excelApp := DispatchHelper.Create(o);
    o1:=excelApp.PropertyGet('WorkBooks',[]);
  DispatchHelper.Create(o1).InvokeMethod('Open',[openDialog.FileName]);
//   =DispatchHelper.Create(excelApp.PropertyGet('WorkBooks',[])).InvokeMethod('Open',[openDialog.FileName]);
///用这样的方法可以关掉,我这边测试环境是win xp+office2003
     excelApp.InvokeMethod('Quit',[]);
     (o1 as System.IDisposable).Dispose;
    (o as System.IDisposable).Dispose;

  end;

end;
回复 支持 反对

使用道具 举报

发表于 2008-10-28 08:44:55 | 显示全部楼层
win xp +office2007环境下也没有问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-28 09:35:57 | 显示全部楼层

试验你的代码确实可以

但我的代码就要等主进程关闭了才会终止office进程,现在感觉可能是所有创建出的office内部对象都要代码释放一下才行,我再试试
回复 支持 反对

使用道具 举报

发表于 2008-10-28 09:39:45 | 显示全部楼层
好。无论结果如何请反馈。
回复 支持 反对

使用道具 举报

发表于 2008-10-28 11:28:09 | 显示全部楼层
在 Windows Server 2008 Standard SP1 + Microsoft Office 2007 Enterprise 有没有问题?
或者Vista + Office 2007下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-28 11:34:29 | 显示全部楼层

问题部分解决

问题确实出在有些代码创建office内部对象没有释放,修改后可以了,环境是windows2003+office2003

但是用你上面最基本的代码在windows2008+office2007下试验不能关闭excel进程,其他系统环境有待进一步测试确认,希望你们有时间也测一下,各种windows和office版本组合环境下是否能成功关闭进程
回复 支持 反对

使用道具 举报

发表于 2008-10-28 11:52:18 | 显示全部楼层
WINDOWS 2003 + OFFICE 2007也没有问题。
  没有vista环境,不知道vista好使不,按理说windows2008跟vista在很多地方都是相似的。windows2008咋就不行泥。
回复 支持 反对

使用道具 举报

发表于 2008-10-28 13:25:21 | 显示全部楼层
楼主,我在win vista+office2007下测试也没有问题。
回复 支持 反对

使用道具 举报

发表于 2008-10-28 13:26:07 | 显示全部楼层
是不是程序报异常,然后没有处理关闭的原因引起的?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-24 12:21 , Processed in 0.049427 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表