当前位置: 代码迷 >> C# >> c#完结winword.exe进程
  详细解决方案

c#完结winword.exe进程

热度:27   发布时间:2016-05-05 04:10:16.0
c#结束winword.exe进程、

最近在做一个c#生成word的功能、调用了微软自带的COM组件。 生成完以后发现有一个winword.exe无法关闭、调试或修改代码都没有搞明白。  遂强制关闭进程了。

            System.Diagnostics.Process[] myPs;            myPs = System.Diagnostics.Process.GetProcesses();            foreach (System.Diagnostics.Process p in myPs)            {                if (p.Id != 0)                {                    string myS = "WINWORD.EXE" + p.ProcessName + "  ID:" + p.Id.ToString();                    try                    {                        if (p.Modules != null)                            if (p.Modules.Count > 0)                            {                                System.Diagnostics.ProcessModule pm = p.Modules[0];                                myS += "/n Modules[0].FileName:" + pm.FileName;                                myS += "/n Modules[0].ModuleName:" + pm.ModuleName;                                myS += "/n Modules[0].FileVersionInfo:/n" + pm.FileVersionInfo.ToString();                                if (pm.ModuleName.ToLower() == "winword.exe")                                    p.Kill();                            }                    }                    catch                    { }                    finally                    {                    }                }            }

 

另生成word时还有一个问题:每次生成的word最后都会有一个空页、想办法删除、查阅了网上,但是拿过来都无法解决、遂请教各位有没有什么办法。

 Word.Range range1, range2;                // 跳转种类                object objWhat = Word.WdGoToItem.wdGoToPage;                // 跳转位置                object objWhich = Word.WdGoToDirection.wdGoToLast;                // 转向最后一页                WordApp.Selection.GoTo(ref objWhat, ref objWhich, ref Nothing, ref Nothing);                // Range取得                range1 = WordApp.Selection.Range;                range2 = WordApp.ActiveDocument.Range(ref Nothing, ref Nothing);                object start = range1.Start;                object end = range2.End;                // 删除最后一页                WordApp.ActiveDocument.Range(ref start, ref end).Delete(ref Nothing, ref Nothing);

这个是从网上找到的。但是在我这里无法起到效果、我是先生成word、往word插入数据完成以后SaveAs()前再执行这一段代码。求指导。

2楼LarryIsTaken
https://technet.microsoft.com/en-us/library/ff730962.aspx
1楼马洪彪
结束word的话,也可以调用Command,kill task
  相关解决方案