windows的任务管理器一次只能 强制结束一个程序,很麻烦,
能不能预先用一个按钮记录一个程序名,
当点击那个按钮的时候, 强制结束当时正在运行所有的同名那个程序。
假如我开了很多阅览器,手动关闭的话,窗口关掉了,但程序还没有结束(任务管理器里还有),想要一次 强制结束很多同名的程序应该怎么办?
程序要完成的任务:
比如我开了6个iexplore.exe
手动关了,
但任务管理器里还显示:
iexplore.exe
iexplore.exe
iexplore.exe
iexplore.exe
iexplore.exe
iexplore.exe
......
在程序中,我点一个记录了iexplore.exe的按钮,然后把所有名字为iexplore.exe的程序都 强制结束。
我现在也在学c#但是不知道c#怎么强制结束程序,
希望
源码+程序
or源码
or强制结束程序用到的类和方法的用法(怎么实现,怎么调用,什么参数等等)
谢谢指点!
11 个解决方案
#1
有个kill方法吧~~~~
#2
For Each pTempProcess In System.Diagnostics.Process.GetProcesses()
Dim sProcessName As String = pTempProcess.ProcessName
If sProcessName = "xxoo" Then
Dim sProcessID As String = pTempProcess.Id.ToString()
Dim pProcessTemp As System.Diagnostics.Process = Process.GetProcessById(sProcessID)
pProcessTemp.Kill()
pProcessTemp.Close()
Exit For
End If
Next
vb的
#3
到www.codeproject.com里面找,关于进程处理方面的有很多
#4
找到了,但不会用,网上的讲解有些模糊,代码解释下就好了~
#5
Thread threadReceive;
if (threadReceive.ThreadState==ThreadState.Running)//当前状态为启动线程
{
threadReceive.Abort();
this.Close();
}
else if (threadReceive.ThreadState == ThreadState.Suspended)//当前状态为挂起线程
{
threadReceive.Resume();
threadReceive.Abort();
this.Close();
}
else if (threadReceive.ThreadState == ThreadState.SuspendRequested)//当前状态为正在挂起线程
{
threadReceive.Resume();
threadReceive.Abort();
this.Close();
}
else if (threadReceive.ThreadState == ThreadState.Unstarted)
{
this.Close();
}
#6
这个看得懂一部分,但是里面的一些
System.Diagnostics.Process
Process.GetProcessById
Dim
这些用法不懂,另外,我vb没怎么学,
c#里有没有类似的方法?c#的我想学!有的话能讲解下最好~
#7
是不是我说的不清楚,还是我没看明白?
我是想强制结束本程序外的程序,
这个看起来像能结束程序内的线程,
如果要强制结束本程序外的程序,是不是要搜索程序外的进程?
(说白了,就像是一个任务管理器一样的程序,只不过能很方便的一下子强制结束很多个同名的正在运行的程序)
#8
楼主,这些东西C#全部都有。vb.net 和 c# 是可以互相转换的,网上N多转换工具。
foreach (var pTempProcess in System.Diagnostics.Process.GetProcesses()) {
string sProcessName = pTempProcess.ProcessName; //获取进程名称
if (sProcessName == "xxoo") {
string sProcessID = pTempProcess.Id.ToString(); //获取进程ID
System.Diagnostics.Process pProcessTemp = Process.GetProcessById(sProcessID);
pProcessTemp.Kill(); //杀死它
pProcessTemp.Close();
}
}
#9
报错:
System.Diagnostics.Process pProcessTemp = Process.GetProcessById(sProcessID);
错误
红色的Process
1 当前上下文中不存在名称“Process” F:\Documents and Settings\Administrator\My Documents\c#练习\kill\kill\kill\Form1.cs 27 63 kill
#10
foreach (var pTempProcess in System.Diagnostics.Process.GetProcesses())
{
string sProcessName = pTempProcess.ProcessName; //获取进程名称
if (sProcessName == "notepad.exe")
{
string sProcessID = pTempProcess.Id.ToString(); //获取进程ID
System.Diagnostics.Process pProcessTemp = System.Diagnostics.Process.GetProcessById(sProcessID);
pProcessTemp.Kill(); //杀死它
pProcessTemp.Close();
}
}
这样的话:有报错:
错误 1 与“System.Diagnostics.Process.GetProcessById(int)”最匹配的重载方法具有一些无效参数 F:\Documents and Settings\Administrator\My Documents\c#练习\kill\kill\kill\Form1.cs 28 63 kill
错误 2 参数“1”: 无法从“string”转换为“int” F:\Documents and Settings\Administrator\My Documents\c#练习\kill\kill\kill\Form1.cs 28 86 kill
{
string sProcessName = pTempProcess.ProcessName; //获取进程名称
if (sProcessName == "notepad.exe")
{
string sProcessID = pTempProcess.Id.ToString(); //获取进程ID
System.Diagnostics.Process pProcessTemp = System.Diagnostics.Process.GetProcessById(sProcessID);
pProcessTemp.Kill(); //杀死它
pProcessTemp.Close();
}
}
这样的话:有报错:
错误 1 与“System.Diagnostics.Process.GetProcessById(int)”最匹配的重载方法具有一些无效参数 F:\Documents and Settings\Administrator\My Documents\c#练习\kill\kill\kill\Form1.cs 28 63 kill
错误 2 参数“1”: 无法从“string”转换为“int” F:\Documents and Settings\Administrator\My Documents\c#练习\kill\kill\kill\Form1.cs 28 86 kill
#11
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
namespace kill
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
foreach (var pTempProcess in System.Diagnostics.Process.GetProcesses())
{
string sProcessName = pTempProcess.ProcessName; //获取进程名称
if (sProcessName == "notepad")
{
string sProcessID = pTempProcess.Id.ToString(); //获取进程ID
System.Diagnostics.Process pProcessTemp = System.Diagnostics.Process.GetProcessById(int.Parse (sProcessID));
pProcessTemp.Kill(); //杀死它
pProcessTemp.Close();
}
}
}
}
}
ok结贴!
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
namespace kill
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
foreach (var pTempProcess in System.Diagnostics.Process.GetProcesses())
{
string sProcessName = pTempProcess.ProcessName; //获取进程名称
if (sProcessName == "notepad")
{
string sProcessID = pTempProcess.Id.ToString(); //获取进程ID
System.Diagnostics.Process pProcessTemp = System.Diagnostics.Process.GetProcessById(int.Parse (sProcessID));
pProcessTemp.Kill(); //杀死它
pProcessTemp.Close();
}
}
}
}
}
ok结贴!
#1
有个kill方法吧~~~~
#2
For Each pTempProcess In System.Diagnostics.Process.GetProcesses()
Dim sProcessName As String = pTempProcess.ProcessName
If sProcessName = "xxoo" Then
Dim sProcessID As String = pTempProcess.Id.ToString()
Dim pProcessTemp As System.Diagnostics.Process = Process.GetProcessById(sProcessID)
pProcessTemp.Kill()
pProcessTemp.Close()
Exit For
End If
Next
vb的
#3
到www.codeproject.com里面找,关于进程处理方面的有很多
#4
找到了,但不会用,网上的讲解有些模糊,代码解释下就好了~
#5
Thread threadReceive;
if (threadReceive.ThreadState==ThreadState.Running)//当前状态为启动线程
{
threadReceive.Abort();
this.Close();
}
else if (threadReceive.ThreadState == ThreadState.Suspended)//当前状态为挂起线程
{
threadReceive.Resume();
threadReceive.Abort();
this.Close();
}
else if (threadReceive.ThreadState == ThreadState.SuspendRequested)//当前状态为正在挂起线程
{
threadReceive.Resume();
threadReceive.Abort();
this.Close();
}
else if (threadReceive.ThreadState == ThreadState.Unstarted)
{
this.Close();
}
#6
这个看得懂一部分,但是里面的一些
System.Diagnostics.Process
Process.GetProcessById
Dim
这些用法不懂,另外,我vb没怎么学,
c#里有没有类似的方法?c#的我想学!有的话能讲解下最好~
#7
是不是我说的不清楚,还是我没看明白?
我是想强制结束本程序外的程序,
这个看起来像能结束程序内的线程,
如果要强制结束本程序外的程序,是不是要搜索程序外的进程?
(说白了,就像是一个任务管理器一样的程序,只不过能很方便的一下子强制结束很多个同名的正在运行的程序)
#8
楼主,这些东西C#全部都有。vb.net 和 c# 是可以互相转换的,网上N多转换工具。
foreach (var pTempProcess in System.Diagnostics.Process.GetProcesses()) {
string sProcessName = pTempProcess.ProcessName; //获取进程名称
if (sProcessName == "xxoo") {
string sProcessID = pTempProcess.Id.ToString(); //获取进程ID
System.Diagnostics.Process pProcessTemp = Process.GetProcessById(sProcessID);
pProcessTemp.Kill(); //杀死它
pProcessTemp.Close();
}
}
#9
报错:
System.Diagnostics.Process pProcessTemp = Process.GetProcessById(sProcessID);
错误
红色的Process
1 当前上下文中不存在名称“Process” F:\Documents and Settings\Administrator\My Documents\c#练习\kill\kill\kill\Form1.cs 27 63 kill
#10
foreach (var pTempProcess in System.Diagnostics.Process.GetProcesses())
{
string sProcessName = pTempProcess.ProcessName; //获取进程名称
if (sProcessName == "notepad.exe")
{
string sProcessID = pTempProcess.Id.ToString(); //获取进程ID
System.Diagnostics.Process pProcessTemp = System.Diagnostics.Process.GetProcessById(sProcessID);
pProcessTemp.Kill(); //杀死它
pProcessTemp.Close();
}
}
这样的话:有报错:
错误 1 与“System.Diagnostics.Process.GetProcessById(int)”最匹配的重载方法具有一些无效参数 F:\Documents and Settings\Administrator\My Documents\c#练习\kill\kill\kill\Form1.cs 28 63 kill
错误 2 参数“1”: 无法从“string”转换为“int” F:\Documents and Settings\Administrator\My Documents\c#练习\kill\kill\kill\Form1.cs 28 86 kill
{
string sProcessName = pTempProcess.ProcessName; //获取进程名称
if (sProcessName == "notepad.exe")
{
string sProcessID = pTempProcess.Id.ToString(); //获取进程ID
System.Diagnostics.Process pProcessTemp = System.Diagnostics.Process.GetProcessById(sProcessID);
pProcessTemp.Kill(); //杀死它
pProcessTemp.Close();
}
}
这样的话:有报错:
错误 1 与“System.Diagnostics.Process.GetProcessById(int)”最匹配的重载方法具有一些无效参数 F:\Documents and Settings\Administrator\My Documents\c#练习\kill\kill\kill\Form1.cs 28 63 kill
错误 2 参数“1”: 无法从“string”转换为“int” F:\Documents and Settings\Administrator\My Documents\c#练习\kill\kill\kill\Form1.cs 28 86 kill
#11
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
namespace kill
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
foreach (var pTempProcess in System.Diagnostics.Process.GetProcesses())
{
string sProcessName = pTempProcess.ProcessName; //获取进程名称
if (sProcessName == "notepad")
{
string sProcessID = pTempProcess.Id.ToString(); //获取进程ID
System.Diagnostics.Process pProcessTemp = System.Diagnostics.Process.GetProcessById(int.Parse (sProcessID));
pProcessTemp.Kill(); //杀死它
pProcessTemp.Close();
}
}
}
}
}
ok结贴!
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
namespace kill
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
foreach (var pTempProcess in System.Diagnostics.Process.GetProcesses())
{
string sProcessName = pTempProcess.ProcessName; //获取进程名称
if (sProcessName == "notepad")
{
string sProcessID = pTempProcess.Id.ToString(); //获取进程ID
System.Diagnostics.Process pProcessTemp = System.Diagnostics.Process.GetProcessById(int.Parse (sProcessID));
pProcessTemp.Kill(); //杀死它
pProcessTemp.Close();
}
}
}
}
}
ok结贴!