我要的功能是:当然从程序中打开多个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("你关闭了文档");
}
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("你关闭了文档");
}
临时翻到的,能不能用不好说,可以研究研究
foreach (System.Diagnostics.Process thisproc in System.Diagnostics.Process.GetProcesses())
{
if(thisproc.ProcessName.Equals("word"))
{
thisproc.Kill();
}
}if (thisproc.Kill())
{...
}
Word.ApplicationClass myWordApp=new Word.ApplicationClass();
Word.Document myWordDoc =...
然后关闭的话,只关闭myWordDoc ,只有当word只有一个时再关闭myWordApp