得到系统进程和结束某个指定的进程 (C#)

进程

自己想了另一个办法来作

先修改注册表:
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Service\\PerfProc\\Performance
下的:Disable Performance Counters 的值改为0

得到系统当前进程,加入到listBox中:
System.Diagnostics.Process[] processOnComputer = System.Diagnostics.Process.GetProcesses();
foreach ( System.Diagnostics.Process p in processOnComputer )
{
this.listBox1.Items.Add(p.ProcessName);
}

关闭某个指定的进程:
System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName(this.listBox1.SelectedItem.ToString());

foreach ( System.Diagnostics.Process p in process)
{
p.Kill();
}

但是这样会关闭进程的所有实例,比如如果你打开了多个IE,会把所有的IE窗口都关闭。

下面实现关闭某个特定的IE实例
先声明一个ArrayList:
ArrayList windowHandle = new ArrayList();

得到指定进程的所有实例,放到一个ListBox中,同时把主窗口的Handle放到ArrayList中:
System.Diagnostics.Process[] processOnComputer = System.Diagnostics.Process.GetProcessesByName(this.listBox1.SelectedItem.ToString());
foreach ( System.Diagnostics.Process p in processOnComputer )
{
this.listBox2.Items.Add(p.MainWindowTitle);//在ListBox中显示主窗体的标题
windowHandle.Add(p.MainWindowHandle);
}

把指定的进程的主窗口的Handle和ArrayList中的比对,如果符合就关闭
System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName(this.listBox1.SelectedItem.ToString());
foreach ( System.Diagnostics.Process p in process )
{
if ( p.MainWindowHandle == (System.IntPtr)(windowHandle[this.listBox2.SelectedIndex]))
{
p.Kill();
this.listBox2.Items.RemoveAt(this.listBox2.SelectedIndex);
}
}

这样可以关闭有主窗体的进程,但是没有主窗体的还不行
还请大家多多指教

时间: 2024-10-31 20:58:06

得到系统进程和结束某个指定的进程 (C#)的相关文章

C#得到系统进程和结束某个指定的进程

进程 获得当前计算机系统内所有的已启动的进程: System.Diagnostics.Process[] processOnComputer = System.Diagnostics.Process.GetProcesses();foreach ( System.Diagnostics.Process p in processOnComputer ){System.Console.WriteLine(p.ToString());}Console.ReadLine(); 获得当前计算机系统内某个进

软件-C# 如何实现当一个指定的进程(非本身)结束后, 同时也结束掉自己的进程(本身)!

问题描述 C# 如何实现当一个指定的进程(非本身)结束后, 同时也结束掉自己的进程(本身)! 举例. 现在我同时打开了 软件A, 软件B, 软件A 是已经做好的软件或是游戏~ 不是我自己编写的. 软件B 是我自己现在要做的软件~ 如何实现 在两个软件同时打开的情况下, 关闭掉软件A, 那么软件B也会自动关闭. 关闭掉软件B, 强制结束掉软件A的进程! 解决方案 所谓的B自动关闭,其实就是B执行结束.因此来说,在B中只要判断A是否存活.A若存活,则继续执行.A若不存活,则结束程序,即可. 建议由B

C#关闭指定名字进程的方法

  本文实例讲述了C#关闭指定名字进程的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public static void stopNamedProcess(string name) { foreach (Process p in System.Diagnostics.Process.GetProcessesByName(name)) { try { p.Kill(); p.WaitForExit(); } ca

kill-C# 结束SQL连接程序进程

问题描述 C# 结束SQL连接程序进程 for (int iRow = 0; iRow <= spidTable.Rows.Count - 1; iRow++) { Cmd.CommandText = ""kill "" + spidTable.Rows[iRow][0].ToString(); //强行关闭用户进程 Cmd.ExecuteNonQuery(); } 用这个方法结束连接数据库的进程,但是总是提示我不能结束自己的进程,如何解决? 解决方案 通过存

利用命令提示符结束Windows7指定进程

  一般情况下,我们在需要结束某个进程往往会选择右键任务栏 - 任务管理器 - 右键某进程 - 结束的方式来进行.但其实我们还可以通过命令来对此操作进行更多的选项. 操作步骤 1. 开始菜单- 程序 - 附件 - 命令提示符. 2. 右键 - 以管理员身份运行. 3. 输入tasklist,出现几排列表: 4. 如果我们想要结束某个程序的所有进程的话,比如,notepad.exe,可以输入Taskkill /IM notepad.exe /F,这里的F表示强制结束. 5. 如果只想结束某程序的某

shell指令结束mysql指定用户的所有进程

例子,在linux中操作 $2横向第二栏用户栏  代码如下 复制代码 for i in $(mysql -uroot -p123456 -se "show processlist" | awk '{if($2=="admin")print $1}');do mysql -uroot -p123456 -e "kill $i";done 例子,在mysql中解决  代码如下 复制代码 mysql> select concat('KILL ',

判断指定的进程或程序是否存在方法小结(vc等)_C 语言

一.判断指定程序名的进程是否存在     BOOL EnumWindows( WNDENUMPROC lpEnumFunc, // pointer to callback function LPARAM lParam //   application-defined value);        The EnumWindows function enumerates all top-level windows on the screen by passing the handle to each

不知道程序的窗口句柄时结束该程序的进程

如果只要判断EXE的名字(不需要判断路径),可以省略EnumProcess,因为pe32.szExeFile 里就已经有EXE的名字了,因为没有路径,所以才又使用了函数EnumProcess来取得完整的路径.这样就简洁一些了. BOOL CALLBACK EnumWinProc(HWND hwnd, LPARAM lParam){ DWORD dwID; GetWindowThreadProcessId(hwnd, &dwID); if (dwID == (DWORD)lParam) { Pos

tomcat常见的错误与解决方案小结_Tomcat

一.tomcat启动时错误 问题1:The JAVA_HOME environment variable is not defined This environment variable is needed to run this program: 解决:没有在tomcat的配置文件.bash_profile中设置环境变量JAVA_HOME,具体设置方法为:加入如下几行: JAVA_HOME=/home/tomcat/j2sdk1.4.2_08(具体值要以实际的jdk安装路径为准) export