便便代码人生

关注技术, 偶尔动动手

[原] Powerpoint(PPT) 2003和2007添加http开头的图片的问题解决

Posted by bianbian on 2011-08-11 04:50


本文Tags: , , ,

powerpoint 2003 直接 “AddPicture (http://” 可行,如:

  1. string pic = "http://bianbian.org/example.gif";
  2. _Slide.Shapes.AddPicture(pic, MsoTriState.msoFalse, MsoTriState.msoTrue,
  3.     0, 0, _Pres.PageSetup.SlideWidth, _Pres.PageSetup.SlideHeight);

但在ppt 2007中,无法通过AddPicture添加http开头的图片,必须先AddShape,然后Fill:

  1. PPT.Shape shape = _Slide.Shapes.AddShape(MsoAutoShapeType.msoShapeRectangle,
  2.     0, 0, _Pres.PageSetup.SlideWidth, _Pres.PageSetup.SlideHeight);
  3. shape.Fill.UserPicture(pic);

详见:http://support.microsoft.com/kb/928983/en-us

标签: , , ,

遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道

相关日志

Posted in C#, Technology, Windows | No Comments »

[原] COM调用PowerPoint后PowerPNT.exe进程仍驻留内存的问题

Posted by bianbian on 2010-04-16 12:42


本文Tags: , , , , ,

前阵子一直纳闷一件事,不是写了个早上10点自动生成天气会商ppt的程序嘛,不过时好时坏。具体的说:我去维护了一下后第二天是正常的,但是第三天就又不行了。看cron的日志(顺便推荐一下nnCron Lite),程序都正常启动了,但是ppt就是没有正常生成。
像我现在写的代码一般都不会有问题了,很少需要debug;看了几遍也没问题,所以很纳闷呀很纳闷。
后来没办法,开始在程序里输出log,才发现cron运行的时候(用户是SYSTEM),第二次运行:
using PPT = Microsoft.Office.Interop.PowerPoint;
_App = new PPT.Application();
这里会报COMException,真是奇怪了。
而调试的时候又是一切正常(用户是Administrator)。

最后总算捕捉到问题出现的情形:
cron运行,第一次正常产生ppt后,进程里仍驻留了PowerPNT.exe这个程序。
尽管程序是写了:
_App.Quit();
_App = null;
但是进程不会退出。不退出就算了,关键在SYSTEM用户下,第二次再跑程序的时候就会报前面提到的COMException,似乎一Quit(),这个PowerPNT.exe就挂在那里了。而在有用户界面的Administrator用户下,即使上一次进程没退出,也是可以正常工作的。

试了两种办法,可以使功能正常:
1)暴力一点,用完直接把进程kill掉:
Process ps = Process.GetProcessesByName(“POWERPNT.EXE”)[0];
ps.Kill();

2)最后不写 _App.Quit() ,让进程在内存里驻留。

最后还是选了2),毕竟服务器内存有10G,一个PPT进程也就20多M,而且PPT进程一个用户只有一个,相当于preload了,呵呵。。。

回家后找了一下文章,这个确实是Microsoft的问题。希望这篇文章对遇到这个问题的朋友有用。

如下是相关地址:
PPT2000: PowerPoint 2000 Remains in Memory After Getting a Presentation and Being Closed
powerpnt.exe remains running after OLE Quit()
GetObject and CreateObject behavior of Office automation servers

标签: , , , , ,

遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道

相关日志

Posted in C#, Meteorology | No Comments »

[原] 自动生成天气会商PPT了

Posted by bianbian on 2010-02-21 05:03


本文Tags: ,

每天的例行天气会商PPT,现在由程序自动采集数据、图片,通过PowerPoint的COM功能,来自动化生成了。

标签: ,

遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道

相关日志

Posted in Meteorology | No Comments »