我要的功能是:当然从程序中打开多个Word文档,每关闭一个我程序所打开的文档,则提示1.我的程序,可以打开多个Word文档(但不一定是Word文件,所以用Process,不能用Word引用)
2.因为打开多个Work文档,但进程中却只有一个Word.exe进程,所以,只有当所有Word都关闭时,才会触发Process.Exited事 件这不是我想要的,我要的是一对一的提示
3.如果用API寻找当前打开的窗口,然后循环是否有关掉,但是又有问题,因为找窗口是以caption寻找的,同样名称的Word文档但路径不同,又不能区分了。
4.示例代码如下:        private void button_Click(object sender, EventArgs e)
        {
            Thread myThread = new Thread(new ThreadStart(OpenFile));
            myThread.Start();
        }        private void OpenFile()
        {
            Process myProcess = new Process();
            myProcess.StartInfo.FileName = @"我的文件";
            myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
            myProcess.EnableRaisingEvents = true;
            myProcess.Exited += new EventHandler(myProcess_Exited);
            myProcess.Start();            //用WaitForExit()也不行,因为Word只开一个进程,所以当已经有打开了的Word,则报错“没有与此对象关联的进程”
            //myProcess.WaitForExit();
            //MessageBox.Show("你关闭了文档");
        }        private void myProcess_Exited(object sender, EventArgs e)
        {
            MessageBox.Show("你关闭了文档");
        }

解决方案 »

  1.   

    引用Microsoft.Office.Tools.Word.dll,有个 Microsoft.Office.Tools.Word.Document.BeforeClose 事件,不过不能用你的写法得重新设计
    临时翻到的,能不能用不好说,可以研究研究
      

  2.   

    能不能取出word进程的procID,然后通过Id结束!
      

  3.   

    监听进程,如果该进程结束就提示
    foreach (System.Diagnostics.Process thisproc in System.Diagnostics.Process.GetProcesses()) 

    if(thisproc.ProcessName.Equals("word")) 

    thisproc.Kill(); 

    }if (thisproc.Kill())
    {...
    }
      

  4.   

    如果想操作不同的峨word,估计不能单单使用Process ,需要使用转本操作word的DLL,可以引用MSWORD.OLB,然后
    Word.ApplicationClass myWordApp=new Word.ApplicationClass(); 
    Word.Document myWordDoc =...
    然后关闭的话,只关闭myWordDoc ,只有当word只有一个时再关闭myWordApp
      

  5.   

    风语者,这样不行的呀,我打开了A.doc,B.doc.我关掉A.doc,你直接杀了Word,我的B.doc不是也被杀了