• [转]关闭word进程


    命名空间 :System.Diagnostics

          以前在word的时候,经常碰到word进程产生一大堆,怕关错了,把用户自己打开的word也关闭,一直搞忽悠,今天上网花了10块钱,下了个文件,给我了一点启发,总于可以实现只关闭程序中打开的,,,我自己测试了,是可以实现的,各位也可以copy去试试,不行的话,给我留言。。。

                   //以下的定义为打开或保存word文件时,需要用到得参数

                    object confirmConversions = Type.Missing;
                    object readOnly = Type.Missing;
                    object addToRecentFiles = Type.Missing;
                    object passwordDocument = Type.Missing;
                    object passwordTemplate = Type.Missing;
                    object revert = Type.Missing;
                    object writePasswordDocument = Type.Missing;
                    object writePasswordTemplate = Type.Missing;
                    object format = Type.Missing;
                    object encoding = Type.Missing;
                    object visible = Type.Missing;
                    object openConflictDocument = Type.Missing;
                    object openAndRepair = Type.Missing;
                    object documentDirection = Type.Missing;
                    object noEncodingDialog = Type.Missing;
                    object missing = Type.Missing;
                    object filename = Filename;
                    object saveOption = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges; //解决normal.dot问题


                    Microsoft.Office.Interop.Word._Application wordApp = new Microsoft.Office.Interop.Word.ApplicationClass();
                    Microsoft.Office.Interop.Word._Document wordDoc = null;
                    try
                    {
                         
                        //打开Word文档对象  
                        wordDoc = wordApp.Documents.Open(ref filename, ref confirmConversions, ref readOnly, ref addToRecentFiles, ref passwordDocument, ref passwordTemplate, ref revert, ref writePasswordDocument, ref writePasswordTemplate, ref format, ref encoding, ref visible, ref openConflictDocument, ref openAndRepair, ref documentDirection, ref noEncodingDialog);
                        wordDoc.AcceptAllRevisions(); //接收word中所有的修订
                        wordDoc.Save();//保存
                        wordDoc.Close(ref missing, ref missing, ref missing);
                        wordApp.Application.Quit(ref saveOption, ref missing, ref missing);
                    }
                    catch { }
                    finally
                    {

                        //杀死打开的word进程
                        Process myProcess = new Process();
                        Process[] wordProcess = Process.GetProcessesByName("winword");
                        try
                        {
                            foreach (Process pro in wordProcess) //这里是找到那些没有界面的Word进程
                            {
                               IntPtr ip= pro.MainWindowHandle;

                               string str = pro.MainWindowTitle; //发现程序中打开跟用户自己打开的区别就在这个属性
                                //用户打开的str 是文件的名称,程序中打开的就是空字符串
                                if (string.IsNullOrEmpty(str))
                                {
                                    pro.Kill();
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            ex.ToString();
                        }

                    }
                }
                catch (Exception ex)
                {
                    bl = false;
                }

  • 相关阅读:
    第一个springboot程序,初识springboot
    创建一个简单的springBoot项目的两种方式
    vue过程中遇到的Uncaught (in promise) TypeError: Cannot read property '$message' of undefined
    springboot redis的db动态切换没有作用
    docker redis chown: changing ownership of '.': Permission denied
    axios url携带参数问题(params与data的区别)
    docker安装mysql8.0并挂载到主机
    android与服务器的登录验证与安全设计
    团队冲刺10 5.11
    构建之法01
  • 原文地址:https://www.cnblogs.com/skykang/p/3725143.html
Copyright © 2020-2023  润新知