当前位置:编程学习 > C#/ASP.NET >>

菜鸟求教:如何关闭除指定进程外的其他进程

.
各位老大好!
本著名(零基础)菜鸟又来麻烦大家了
.
最近一段时间偶抱着书啃 
再看看其他大侠做的东东
误以为自己的水平似乎有些提高了
所以想自己做个东东用
果然不出所料 马上又被“打回原形”了
.
情况是这样的:
本人使用电脑时有个坏习惯
总是打开一堆窗口
比如:用IE和TT浏览器分别浏览不同类型的网上信息 几个文件夹 MSN的几个对话窗口 QQ几个对话窗口 小游戏 等等
感觉都操作完了 一个一个的关太麻烦
就想自己做个小程序 
点击个按钮就可以关闭除了“system” “local service”“network service”和自己指定的程序(如msn和QQ的主程序 迅雷 BT)以外的不

再使用的进程
.
我用了个笨办法
几乎是“穷极例举法”了
因为打开的窗口如TT和IE在浏览不同页面时 
窗口的标题是随时改变的
所以本著名菜鸟偶是从进程入手的 方法如下:
Dim pProcess() As Process
        pProcess = Process.GetProcesses()
        Dim i As Integer
        For i = 0 To pProcess.Length() - 1
            Console.WriteLine(pProcess(i).ProcessName)
            If (pProcess(i).ProcessName <> "123" & "456" & "789" & "abc") Then   '判断进程   
                pProcess(i).Kill()   '关闭进程   
            End If
        Next
我在IF中 (pProcess(i).ProcessName <>) 的<>后面“穷极例举”了所有的“system” “local service”“network service”和自己指定的

程序 
本人洋洋得意地开始“启动调试”
(在调试之前我费了半天劲打开了足有四十多个各类窗口)
满怀期待的希望看到所有窗口都被自动关掉的壮观场面
结果令本大菜鸟非常震惊!
本以为大功告成了 结果一开始调试 电脑重启了!
偶呆呆的看着电脑重启直到重新看到了桌面!
重新试验了一次 结果还是如此!
晕死我了!哭啊!
.
请问各位大侠 这样写的问题在哪里?
可怜一下本菜鸟吧 赏我个“医治人参果树的方子”吧!
谢谢嗷!
.
另外 这个东东完成后 本菜鸟还想在此基础上做些改进 
后面的改进以后再说吧 我先把这个问题搞懂了再说了
.
再次感谢了!
.
--------------------编程问答-------------------- 天已经亮了 555555555555
这一夜算是白折腾了
偶好惨啊 --------------------编程问答-------------------- up --------------------编程问答-------------------- 请教 谢谢! --------------------编程问答--------------------   For Each oneProcess As Process In Process.GetProcesses()
            If (oneProcess.ProcessName = "IEXPLORE") Then   '判断进程   
                oneProcess.Kill()   '关闭进程  
                Exit For
            End If
        Next
        MessageBox.Show("OK")
樓主可以試下我的代易做图來關網頁。 --------------------编程问答-------------------- 忘了說,把那個 Exit For 去掉。。因為我測試時加上去的。 --------------------编程问答-------------------- 【 ping502 】兄 谢谢你!
关闭单个的进程我知道的 
我想关闭的是 除了指定进程之外的所有进程 呵呵
这个到现在还没解决呢!
.
如果有办法 请帮忙啦 呵呵 --------------------编程问答-------------------- 因为你把系统进程结束了
系统就自动重启了
这不应该是代码的问题
而是你设计思想的问题
并非所有的进程都可以随便结束
你仔细想想吧 --------------------编程问答--------------------
引用 7 楼 DotGod 的回复:
因为你把系统进程结束了 
系统就自动重启了 
这不应该是代码的问题 
而是你设计思想的问题 
并非所有的进程都可以随便结束 
你仔细想想吧


谢谢老大!
.
请问 如果我想实现这样的功能
怎么用比较好?
.
另外 代码的问题解决了 
但是 很多进程拒绝访问
请问 如果有的进程拒绝访问 如何执行下一个呢?
.
“生成”-“发布”后出现了如下问题:(有色字体部分)
有关调用实时(JIT)调试而不是此对话框的详细信息,
请参见此消息的结尾。

************** 异常文本 **************
System.ComponentModel.Win32Exception: 拒绝访问。
   在 System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited)
   在 System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited)
   在 System.Diagnostics.Process.Kill()
   在 Game.Uploading.Button7_Click(Object sender, EventArgs e)
   在 System.Windows.Forms.Control.OnClick(EventArgs e)
   在 System.Windows.Forms.Button.OnClick(EventArgs e)
   在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   在 System.Windows.Forms.Control.WndProc(Message& m)
   在 System.Windows.Forms.ButtonBase.WndProc(Message& m)
   在 System.Windows.Forms.Button.WndProc(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** 已加载的程序集 **************
mscorlib
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
    基本代码: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
Game
    程序集版本: 1.0.0.0
    Win32 版本: 1.0.0.0
    基本代码: file:///C:/Documents%20and%20Settings/ffd/Local%20Settings/Apps/2.0/6PXN8NZB.34R/BCPC9PMC.8LB/game..tion_1416cf9df9b71446_0001.0000_d7ab0cc39acdd8aa/Game.exe
----------------------------------------
Microsoft.VisualBasic
    程序集版本: 8.0.0.0
    Win32 版本: 8.0.50727.1433 (REDBITS.050727-1400)
    基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
    基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
    基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
    基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Runtime.Remoting
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
    基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
System.Windows.Forms.resources
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
    基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_zh-CHS_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
mscorlib.resources
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
    基本代码: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------

************** JIT 调试 **************
要启用实时(JIT)调试,
该应用程序或计算机的 .config 文件(machine.config)的 system.windows.forms 节中必须设置
jitDebugging 值。
编译应用程序时还必须启用
调试。

例如: 

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

启用 JIT 调试后,任何无法处理的异常
都将被发送到在此计算机上注册的 JIT 调试器,
而不是由此对话框处理。 --------------------编程问答-------------------- 如果有的进程无法结束 
如何强制结束?
谢谢! --------------------编程问答-------------------- 这个是很危险的,除..以外的,你肯定这里不包括有用的系统进程吗
还是指定一种关闭为好,比如楼上有说的,IE等这样比较安全 --------------------编程问答-------------------- 【 tjficcbw 】兄:
谢谢你!
我希望想“穷极例举”所有的系统进程
然后把不必要的进程都关掉 呵呵 
我知道应该怎样关闭单一、确定名称的进程
但是 不知道怎么关掉我自己不用的进程
.
.
.
.
.
.
.
.
请问各位高手:
学生偶能否换个方法,比如:
怎样才能关闭(除指定的(如:杀毒软件、防火墙)之外的)全部的用户进程呢?
.
还请赐教!
谢谢!!! --------------------编程问答-------------------- 这个你要把基本运用时的进程全部列出输出到文本框,复制出来,在程序中定义为一个字符串数组,写进这些进程,再对每个进程与之进行比较如不一样则KILL这样就行了,

列出平时正常的进程到文本框:
        textbox1.text = ""
        Dim TmpProc As Process
        Dim procs As Process() = Process.GetProcesses()
        For Each TmpProc In procs
            TextBox1.Text = TextBox1.Text & TmpProc.ProcessName.ToUpper & vbCrLf

        Next


比如你列出43个进程
那么你定义一个数组
dim ProcArray(42) 

赋值你的所有进程 

        ProcArray(0) = "进程0"
        ProcArray(1) = "进程1"
        ProcArray(2) = "进程2"
        .........

在比较KILL
        Dim i As Integer
        For Each TmpProc In procs
            For i = 0 To 42
                If Not TmpProc.ProcessName.ToUpper = ProcArray(i) Then
                    TmpProc.Kill()
                End If
            Next
        Next

--------------------编程问答-------------------- 還是指定要關閉的進程比較合理,指定不關閉的進程的話,就和上面說的,可能把電腦都關閉了。
补充:.NET技术 ,  VB.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,