打开word后如何知道该word进程的PID? 请问:c#打开word后如何知道该word进程的PID?---------------------------------打开word的操作是抛到线程实现的,也就是同一时间可能有几个word.exe进程存在,因此只能用进程pid去杀。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 试试这样行不? 通过 Process newp = Process.Start (openFileDialog1.FileName );开启word后 string [] processInfo={ newp.newp.ProcessName , //进程名字 newp.Id.ToString() //进程号 };在结束word的方法中这样写: //获取计算机中的进程 Process[] processes; processes = System.Diagnostics.Process.GetProcesses(); for (int i = 0; i < processes.Length; i++) { Process process = processes[i]; string processname = process.ProcessName.ToString(); if(processname="word.exe") { processes[i].kill(); } } 没这么简单啊,我是通过api操作word时引发的进程里word.exe未背销毁就是在word打开的瞬间如何取到进程pid部分代码如下:Microsoft.Office.Interop.Word.Application newApp = new Microsoft.Office.Interop.Word.Application(); Microsoft.Office.Interop.Word.Document doc = null;....... // 打开doc文件 doc = newApp.Documents.Open(ref Source, ref Unknown, ref readOnly, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown); // 转换格式 doc.SaveAs(ref Target, ref format, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown);.... finally { if (doc != null) { // 关闭文档和Word程序 doc.Close(ref Unknown, ref Unknown, ref Unknown); } newApp.Quit(ref Unknown, ref Unknown, ref Unknown); //逐步关闭所有 System.Runtime.InteropServices.Marshal.ReleaseComObject(doc); System.Runtime.InteropServices.Marshal.ReleaseComObject(newApp);} 我自己测试时 如果不单开word 运行程序 可以自动销毁如果打开一个word 然后再运行此程序时,计算机会响一声 然后那个进程也不会关闭,就是有两个word.exe进程。如果再运行一次此程序会有三个word.exe进程 。。 System.Runtime.InteropServices.Marshal.ReleaseComObject(app);System.Runtime.InteropServices.Marshal.ReleaseComObject(Doc);app=null;Doc=null;GC.Collect();GC.Collect();System.Diagnostics.Process myproc= new System.Diagnostics.Process();foreach (Process thisproc in Process.GetProcessesByName(processName)) {if(!thisproc.CloseMainWindow()){thisproc.Kill();}} 你可以先检测有word进程运行没有,有的话,在原进程下运行新文档怎么样?那样只要关一个word进程了。 http://www.cnblogs.com/deepnight/archive/2010/01/27/Query_Parent_Process.htmlProcess.GetProcessesByName(processName)获取所有word进程,然后判断这些进程的父进程ID是不是你自已的程序,不是不需要kill gridView 绑定string[]数组,列名的问题 VS2008快捷键 aspx 页面 怎么让秒钟同步 请大侠援助一下.aspx访问远程数据库的问题(net1.1下) 高分求助,如何使用C#更改ACCESS密码? 请教各位高手 谁能讲讲dataList 关于处理空参数问题 斑竹老爷,为啥扣俺信誉分! 在线等,一段简单代码如何用DELPHI来写?请赐教 有没有开发过配置工作流程的给点建议啊 如何使用DeviceIoControl控制端口输出??
通过 Process newp = Process.Start (openFileDialog1.FileName );开启word后
string [] processInfo={
newp.newp.ProcessName , //进程名字
newp.Id.ToString() //进程号
};
在结束word的方法中这样写:
//获取计算机中的进程
Process[] processes;
processes = System.Diagnostics.Process.GetProcesses(); for (int i = 0; i < processes.Length; i++)
{ Process process = processes[i];
string processname = process.ProcessName.ToString();
if(processname="word.exe")
{
processes[i].kill();
}
}
我是通过api操作word时引发的进程里word.exe未背销毁就是在word打开的瞬间如何取到进程pid
部分代码如下:
Microsoft.Office.Interop.Word.Application newApp = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document doc = null;
...
....
// 打开doc文件
doc = newApp.Documents.Open(ref Source, ref Unknown, ref readOnly,
ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown,
ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown); // 转换格式
doc.SaveAs(ref Target, ref format,
ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown,
ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown);..
.. finally
{
if (doc != null)
{
// 关闭文档和Word程序
doc.Close(ref Unknown, ref Unknown, ref Unknown);
}
newApp.Quit(ref Unknown, ref Unknown, ref Unknown); //逐步关闭所有
System.Runtime.InteropServices.Marshal.ReleaseComObject(doc);
System.Runtime.InteropServices.Marshal.ReleaseComObject(newApp);
}
计算机会响一声 然后那个进程也不会关闭,就是有两个word.exe进程。
如果再运行一次此程序会有三个word.exe进程 。。
System.Runtime.InteropServices.Marshal.ReleaseComObject(Doc);
app=null;
Doc=null;
GC.Collect();
GC.Collect();
System.Diagnostics.Process myproc= new System.Diagnostics.Process();
foreach (Process thisproc in Process.GetProcessesByName(processName)) {
if(!thisproc.CloseMainWindow()){
thisproc.Kill();
}}
那样只要关一个word进程了。
Process.GetProcessesByName(processName)
获取所有word进程,然后判断这些进程的父进程ID是不是你自已的程序,不是不需要kill