请教如何根据kill Excel Application 的进程。

ufo20020427 ufo20020427 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
用微软自带Interop.Excel的操作,大家都知道即使关闭了,仍存在着EXCEL进程。



[DllImport("User32.dll", CharSet = CharSet.Auto)]
private static extern int GetWindowThreadProcessId(IntPtr hwnd, out uint ID);

IntPtr hwndExcel = new IntPtr(_excel.Hwnd);

GetWindowThreadProcessId(hwndExcel, out processId);

//根据获取到的processId,就可以 kill该进程。


//以上代码在vs.net运行(即F5),是正常的。
但是部署到iis中,则 GetWindowThreadProcessId里面返回的processId总是0
不管我在dcomcnfg的标识中,用哪种启动方式,都不可以(我都是用administrator)

于是我想着,既然上面方式行不通,换种方式


IntPtr hwndExcel = new IntPtr(_excel.Hwnd);

Process[] localByName = Process.GetProcessesByName("excel");
foreach (Process p in localByName)
{
//这里可以获取到进程名称为Excel的进程。
//但是我如何转换成Excel Application,
//也就是说我要如何才能知道该进程其实对应加载的是哪个.xls文件

}



baidu google,搜了很久,都没有一个能解决。
麻烦大家有试过可以成功的,再贴出来。
谢谢!
...全文

相关推荐

评论 18
收藏 已收藏
分享
返回顶部
ufo20020427
C# 111,128 成员 642,537 内容