社区
.NET Framework
帖子详情
C#中怎样杀掉指定的进程
caolilong11
2010-03-24 09:38:55
如果不是应用程序打开的进程不能杀掉。那位能帮忙解决??
...全文
1898
24
打赏
收藏
C#中怎样杀掉指定的进程
如果不是应用程序打开的进程不能杀掉。那位能帮忙解决??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
24 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
aboutibm
2012-05-30
打赏
举报
回复
process.MainWindowTitle是打开的doc文件名
caolilong11
2010-03-25
打赏
举报
回复
楼上的,我有管理员的权限,我是以管理员身份登录的。
mjay0210
2010-03-25
打赏
举报
回复
[Quote=引用 7 楼 wuyq11 的回复:]
private void KillProcess(string processName)
{
System.Diagnostics.Process myproc= new System.Diagnostics.Process();
foreach (Process thisproc in Process.GetProcessesByName(processName)) {
if(!this……
[/Quote]
你要有管理员权限才可以哦
caolilong11
2010-03-25
打赏
举报
回复
有按错键盘了,具体如下,通过单击按钮打开word
private void button1_Click(object sender, System.EventArgs e)
{
axWebBrowser1.Navigate(url, ref refmissing, ref refmissing, ref refmissing, ref refmissing);
}
public void axWebBrowser1_NavigateComplete2(object sender, AxSHDocVw.DWebBrowserEvents2_NavigateComplete2Event e)
{
Object o = e.pDisp;
oDocument = o.GetType().InvokeMember("Document", BindingFlags.GetProperty, null, o, null);
DateTime date = DateTime.Now;Object oApplication = o.GetType().InvokeMember("Application", BindingFlags.GetProperty, null, oDocument, null);
Object oName = o.GetType().InvokeMember("Name", BindingFlags.GetProperty, null, oApplication, null);
caolilong11
2010-03-25
打赏
举报
回复
刚刚按错键了,还没写完就发送了,还有如下代码
caolilong11
2010-03-25
打赏
举报
回复
是的我明白楼上的意思。我之前使用processname杀进程,就是因为这样不行,所以在这里请教各位。
楼上的要我把代码贴出来,因代码太多,只贴些关键的代码,如下
private void button1_Click(object sender, System.EventArgs e)
{
axWebBrowser1.Navigate(url, ref refmissing, ref refmissing, ref refmissing, ref refmissing);
鸭梨山大帝
2010-03-25
打赏
举报
回复
如果不行,贴代码出来.
(其实在窗体中Dispose/Exit应该是可以自我释放创建的子进程的)
楼主贴代码出来看看
鸭梨山大帝
2010-03-25
打赏
举报
回复
lz,我帖子的意思是你不要按Process.ProcessName去杀进程.
你看一下Process类,其中有很多地方标记了该Process的信息的.
比如
Process.MainModule中的多项属性
Process.MainWindowTitle
等
根据这些信息肯定可以定位到你在进程内创建到窗体上的Word
[Quote=引用 13 楼 caolilong11 的回复:]
是的,楼上说的方法我做过,你说在程式中New WordApplication会生成一个新进程,而且关掉它时根本不会
影响其他的winword.exe,是这样的。
但是我要做的是word在窗体里面打开(因为客户是这样要求的),我使用的是组件显示word ,而New WordApplication 会在新的word界面打开word,而不是在窗体上打开,所以这样还是不行。
[/Quote]
caolilong11
2010-03-25
打赏
举报
回复
引用楼上的代码
if ("stock" == myProcess.ProcessName)
myProcess.Kill();
}
就像Lost_Painting说的,根据进程名杀掉进程,所有同名的进程都会杀掉。我之前也是用的这种方法,
我只想杀掉winform窗体内打开的winword.exe,不要把其他的winword.exe杀掉。所以问题还是没解决,
不过还是要谢谢楼上的。
liuchangsheng
2010-03-25
打赏
举报
回复
private void MainFrm_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("确定退出吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
// notifyIcon1.Visible = false;
System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcesses();
foreach (System.Diagnostics.Process myProcess in myProcesses)
{
if ("stock" == myProcess.ProcessName)
myProcess.Kill();
}
}
else
{
MainFrm app = new MainFrm();
app.Show();
}
}
caolilong11
2010-03-25
打赏
举报
回复
是的,楼上说的方法我做过,你说在程式中New WordApplication会生成一个新进程,而且关掉它时根本不会
影响其他的winword.exe,是这样的。
但是我要做的是word在窗体里面打开(因为客户是这样要求的),我使用的是组件显示word ,而New WordApplication 会在新的word界面打开word,而不是在窗体上打开,所以这样还是不行。
鸭梨山大帝
2010-03-25
打赏
举报
回复
应该不会的.
我这里直接在程式中New WordApplication 是会生成一个新的进程的.杀掉这个进程不会影响其他Word进程
楼主肯定是根据Word.exe这个进程文件名去杀的,那肯定全杀光了.
caolilong11
2010-03-25
打赏
举报
回复
如果直接kill的话所有的winword.exe将会被结束掉。
可能大家还没明白我的问题,比如我在桌面打开一个word文档,然后我通过winform窗体打开一个word文档,
当我要杀掉winform窗体打开的word进程时,桌面打开的word文档也会关闭,问题是我并不要它关闭,
希望大家给出好的建议和方法!
段传涛
2010-03-25
打赏
举报
回复
不是释放。
直接kill 就行了。
caolilong11
2010-03-25
打赏
举报
回复
我试了wuyq11给的方法,应用程序内打开的文档的进程是杀掉了,但问题还是存在,当执行到
if (!thisproc.CloseMainWindow())这段代码时,
在应用程序外打开的文档还是被关闭了,
caolilong11
2010-03-25
打赏
举报
回复
感谢各位的建议!谢了!
caolilong11
2010-03-25
打赏
举报
回复
终于自己解决了!不过谢谢Lost_Painting的提示,利用到了process.MainWindowTitle属性,
如果在winform里面打开的word这个属性值是个空字符串。谢谢各位,结贴给分了。
caolilong11
2010-03-24
打赏
举报
回复
我可能没说的很具体,我用的是windows应用程序,比如说我在winform里面打开word,我想关闭的word,
于是就只能结束的winword.exe,我用的是process.kill()方法,发现程序外打开的word文档也会被关闭。
楼上说的使这种方法吗?
System.Windows.Forms.Application.Exit();
Form1 form = new Form1();
form.Dispose();
我试了好像不行,我想做的是在不关闭窗体时,结束掉winword.exe
nosuchtracter
2010-03-24
打赏
举报
回复
先释放资源
再dispose
wuyq11
2010-03-24
打赏
举报
回复
private void KillProcess(string processName)
{
System.Diagnostics.Process myproc= new System.Diagnostics.Process();
foreach (Process thisproc in Process.GetProcessesByName(processName)) {
if(!thisproc.CloseMainWindow()){
thisproc.Kill();
GC.Collect();
}
Process[] prcs = Process.GetProcesses();
foreach (Process p in prcs) {
if (p.ProcessName.Equals("程序名")) {
p.Kill();
}
}
加载更多回复(4)
详解
C#
获取特定
进程
CPU和内存使用率
首先是获取特定
进程
对象,可以使用Process.GetProcesses()方法来获取系统
中
运行的所有
进程
,或者使用Process.GetCurrentProcess()方法来获取当前程序所对应的
进程
对象。当有了
进程
对象后,可以通过
进程
对象名称来...
C#
进程
回收管理工具CraneofficeProcessGC
在使用 COM 模式操作 OFFICE 组件的开发过程
中
,当操作完相关文档后,在某些情况下仍然无法释放
掉
Word 或 EXCEL 等应用
进程
,因此根据
进程
活动情况或时间点范围开发了一个强制
杀
掉
指定
进程
名称的 WinForm 程序,做...
C#
高级程序设计
为什么要学习
C#
?
C#
是微软的**语言,拥有接近20年的历史和广泛的应用。目前国内对
C#
的书籍和视频相对较少,但
C#
和.NET的发展前程是十分...含宿舍管理系统的讲解 希望本套课程在你学习
C#
的过程
中
,可以对你有所帮助。
如何通过
C#
kill
指定
进程
?
咨询区 robr我用代码动态的打开了一个 IE
进程
,参考如下代码:staticvoidMain(string[]args) { Proces...
C#
杀
死
指定
pid
进程
方法 Process p = Process.GetProcessById(id); p.Kill();
.NET Framework
17,741
社区成员
24,334
社区内容
发帖
与我相关
我的任务
.NET Framework
.NET技术 .NET Framework
复制链接
扫一扫
分享
社区描述
.NET技术 .NET Framework
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章