如何svchost.exe结束进程程序打开excel所产生的excel.exe进程

君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
C_彻底关闭Excel进程excel.exe
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口关于vc操作excel,如何杀掉进程的问题!用过vc打开excel模板,并显示,然后手动关闭该excel后,excel的进程并没有关闭。请问如何解决。(注:excel文档是手动关闭的,并不是通过代码使其关闭)
回答1:杀掉进程的方法太多了。
1.&远程注入线程再随便来个访问违规。
2.&PostMessage&+&WM_DESTROY
3.&在控制台上调用系统命令taskkill
&如:&TASKKILL&/F&/IM&notepad.exe&/IM&mspaint.exe
&&在VC中可以用system()来调用这个命令。
4.&OpenProcess得到进程句柄再TerminateProcess
回答2:可以打开excel后FindWindow它的窗口句柄,当窗口关闭时,其窗口句柄会被触发,用等待函数WaitForSingleObject就可以获得这一操作。
WaitForSingleObject函数的使用可以参考我写的《秒杀多线程第六篇&经典线程同步&事件Event》
引用:  引用:
杀掉进程的方法太多了。
1.&远程注入线程再随便来个访问违规。
2.&PostMessage&+&WM_DESTROY
3.&在控制台上调用系统命令taskkill
&如:&TASKKILL&/F&/IM&notepad.exe&/IM&mspaint.exe
&&在VC中可以用system()来调用这个命令。
4.&OpenProce……
回答3:这个是因为你在关闭程序的时候没有释放好对象。按下面的方式释放就不会有excel.exe残留了。
book.Close(covFalse,covOptional,covOptional);
books.Close();
app.Quit();
range.ReleaseDispatch();
sheet.ReleaseDispatch();
sheets.ReleaseDispatch();
book.ReleaseDispatch();
books.ReleaseDispatch();
app.ReleaseDispatch();
最主要的是app.Quit要放在前面。查看: 48|回复: 1
VB6封装excel为exe,打开再关闭后,进程中残留excel.exe,多种方法无法关闭
本帖最后由 cunfu2010 于
05:48 编辑
密码为空,双击窗体关闭退出。
请指点,谢谢主!
1、关闭窗体后,打开其他文件时,会自动打开一个临时文件。(应该是进程中的文件)
2、按网上说法在Set Nothing前面加入xlapp.quit后,结果出现的错误提示:
Put #1, 1, myfile.Bytes   提示路径/文件访问错误
05:45 上传
点击文件名下载附件
221.34 KB, 下载次数: 4
别沉,自己顶一下,请求高手们帮忙
Powered byC#如何退出excel的进程
在前面的文章中,说了如何最简单的打开一个excel:
但是,有时候发现,程序退出后,进程中依然有excel。搜索了不少的文章,发现多少都有点问题,伪代码太多,很多根本无法运行的也帖出来。研究了几天之后,大致给出Kill进程的方法和GC.Collect的方法。
GC.Collect的代码是:
/// &summary&
/// 读取xls(用GC的方法,手工设置book为null)
/// &/summary&
private void ReadXlsGetRangeA1()
&&&&&&&&&&&
string path = "C:\\abc.xls";
&&&&&&&&&&&
// 判断文件不存在,返回
&&&&&&&&&&&
if (!File.Exists(path))
&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
Excel.Application excel = new Excel.ApplicationClass(); // 某人
&&&&&&&&&&&
//Excel.Workbooks workbooks = // 不用单独定义也可以
&&&&&&&&&&&
Excel.Workbook book =
&&&&&&&&&&&
Excel.Worksheet sheet =
&&&&&&&&&&&
Excel.Range range =
&&&&&&&&&&&
object oV = System.Reflection.Missing.V // 反复用到
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
// 步骤1:打开某人的表xls
&&&&&&&&&&&&&&&
book = excel.Workbooks.Open(path, oV, oV, oV, oV,
&&&&&&&&&&&&&&&&&&&
oV, oV, oV, oV, oV, oV, oV, oV, oV, oV); // 打开一个工作簿
&&&&&&&&&&&&&&&
sheet = (Excel.Worksheet)excel.ActiveS// 获取当前工作表
&&&&&&&&&&&&&&&
sheet.Name = "Salary详细"; // 修改工作表的名字
&&&&&&&&&&&&&&&
excel.Visible =
&&&&&&&&&&&&&&&
// 步骤2:读取数据
&&&&&&&&&&&&&&&
range = sheet.Cells.get_Range("A1", "A1"); //读取第一行第一列的内容
&&&&&&&&&&&&&&&
this.Text = range.Value2.ToString(); // 现在是form的标题
&&&&&&&&&&&&&&&
// 步骤3:保存表格
&&&&&&&&&&&&&&&
book.Save();
&&&&&&&&&&&&&&&
// 步骤4:关闭book
&&&&&&&&&&&&&&&
excel.Workbooks.Close();
&&&&&&&&&&&
&&&&&&&&&&&
catch (Exception ex)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
MessageBox.Show(ex.Message);
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
System.Runtime.InteropServices.Marshal.ReleaseComObject(book);
&&&&&&&&&&&&&&&
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
&&&&&&&&&&&&&&&
System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
&&&&&&&&&&&&&&&
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
GC.Collect(); //
前提是:所有的对象都=null后才能调用此函数,然后才会结束“任务管理器”中的excel.exe进程
&&&&&&&&&&&
用Kill的方法的代码是:
using System.Runtime.InteropS // DllImport用
[DllImport("User32.dll", CharSet = CharSet.Auto)]
public static extern int GetWindowThreadProcessId(IntPtr hwnd,
/// &summary&
/// 读取xls(用kill的方法)
/// &/summary&
private void KillReadXlsGetRangeA1()
&&&&&&&&&&&
string path = "C:\\abc.xls";
&&&&&&&&&&&
// 判断文件不存在,返回
&&&&&&&&&&&
if (!File.Exists(path))
&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
Excel.Application excel = new Excel.ApplicationClass(); // 某人
&&&&&&&&&&&
//Excel.Workbooks workbooks = // 不用单独定义也可以
&&&&&&&&&&&
Excel.Workbook book =
&&&&&&&&&&&
Excel.Worksheet sheet =
&&&&&&&&&&&
Excel.Range range =
&&&&&&&&&&&
object oV = System.Reflection.Missing.V // 反复用到
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
// 步骤1:打开某人的表xls
&&&&&&&&&&&&&&&
book = excel.Workbooks.Open(path, oV, oV, oV, oV,
&&&&&&&&&&&&&&&&&&&
oV, oV, oV, oV, oV, oV, oV, oV, oV, oV); // 打开一个工作簿
&&&&&&&&&&&&&&&
sheet = (Excel.Worksheet)excel.ActiveS// 获取当前工作表
&&&&&&&&&&&&&&&
sheet.Name = "Salary详细"; // 修改工作表的名字
&&&&&&&&&&&&&&&
excel.Visible =
&&&&&&&&&&&&&&&
// 步骤2:读取数据
&&&&&&&&&&&&&&&
range = sheet.Cells.get_Range("A1", "A1"); //读取第一行第一列的内容
&&&&&&&&&&&&&&&
this.Text = range.Value2.ToString(); // 现在是form的标题
&&&&&&&&&&&&&&&
// 步骤3:保存表格
&&&&&&&&&&&&&&&
book.Save();
&&&&&&&&&&&&&&&
// 步骤4:关闭book
&&&&&&&&&&&&&&&
excel.Workbooks.Close();
&&&&&&&&&&&
&&&&&&&&&&&
catch (Exception ex)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
MessageBox.Show(ex.Message);
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
excel.Quit();
&&&&&&&&&&&&&&&
//excel = // 注意:如果要获得excel的Hwnd,不能设置excel = null。
&&&&&&&&&&&&&&&
IntPtr t = new IntPtr(excel.Hwnd);
&&&&&&&&&&&&&&&
int k = 0;
&&&&&&&&&&&&&&&
GetWindowThreadProcessId(t, out k);
&&&&&&&&&&&&&&&
System.Diagnostics.Process p =
System.Diagnostics.Process.GetProcessById(k);
&&&&&&&&&&&&&&&
&&&&&&&&&&&
Kill的方法参考了&的代码
而&显然是错误的,设置了null后无法获得句柄。
我们研究一下最简单的例子:
/// &summary&
/// 读取xls(最简洁的方式,什么变量都不用,只是用excel, 程序释放后才会终止excel进程)
/// &/summary&
private void ReadXlsEasy()
&&&&&&&&&&&
// 什么变量都不用,只是用excel, 最后excel.Quit() excel = null都无法退出
&&&&&&&&&&&
// 结论:必须用GC.Collect() 结束;否则,只能等程序释放后进程中的excel才会退出
&&&&&&&&&&&
Excel.Application excel = new Excel.ApplicationClass(); // 某人
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
excel.Visible =
&&&&&&&&&&&
&&&&&&&&&&&
catch (Exception ex)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
MessageBox.Show(ex.Message);
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
excel.Quit();
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
//GC.Collect(); // 如果强制对所有代进行垃圾回收,那么不退出程序,excel进程也会终止
&&&&&&&&&&&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 java.exe进程无法结束 的文章

 

随机推荐