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

firewoods 2008-04-04 05:38:01
.
各位老大好!
本著名(零基础)菜鸟又来麻烦大家了
.
最近一段时间偶抱着书啃
再看看其他大侠做的东东
误以为自己的水平似乎有些提高了
所以想自己做个东东用
果然不出所料 马上又被“打回原形”了
.
情况是这样的:
本人使用电脑时有个坏习惯
总是打开一堆窗口
比如:用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”和自己指定的

程序
本人洋洋得意地开始“启动调试”
(在调试之前我费了半天劲打开了足有四十多个各类窗口)
满怀期待的希望看到所有窗口都被自动关掉的壮观场面
结果令本大菜鸟非常震惊!
本以为大功告成了 结果一开始调试 电脑重启了!
偶呆呆的看着电脑重启直到重新看到了桌面!
重新试验了一次 结果还是如此!
晕死我了!哭啊!
.
请问各位大侠 这样写的问题在哪里?
可怜一下本菜鸟吧 赏我个“医治人参果树的方子”吧!
谢谢嗷!
.
另外 这个东东完成后 本菜鸟还想在此基础上做些改进
后面的改进以后再说吧 我先把这个问题搞懂了再说了
.
再次感谢了!
.
...全文
325 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
rockyvan 2008-04-16
  • 打赏
  • 举报
回复
還是指定要關閉的進程比較合理,指定不關閉的進程的話,就和上面說的,可能把電腦都關閉了。
tjficcbw 2008-04-16
  • 打赏
  • 举报
回复
这个你要把基本运用时的进程全部列出输出到文本框,复制出来,在程序中定义为一个字符串数组,写进这些进程,再对每个进程与之进行比较如不一样则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

tjficcbw 2008-04-11
  • 打赏
  • 举报
回复
这个是很危险的,除..以外的,你肯定这里不包括有用的系统进程吗
还是指定一种关闭为好,比如楼上有说的,IE等这样比较安全
firewoods 2008-04-11
  • 打赏
  • 举报
回复
【 tjficcbw 】兄:
谢谢你!
我希望想“穷极例举”所有的系统进程
然后把不必要的进程都关掉 呵呵
我知道应该怎样关闭单一、确定名称的进程
但是 不知道怎么关掉我自己不用的进程
.
.
.
.
.
.
.
.
请问各位高手:
学生偶能否换个方法,比如:
怎样才能关闭(除指定的(如:杀毒软件、防火墙)之外的)全部的用户进程呢?
.
还请赐教!
谢谢!!!
firewoods 2008-04-07
  • 打赏
  • 举报
回复
如果有的进程无法结束
如何强制结束?
谢谢!
firewoods 2008-04-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 DotGod 的回复:]
因为你把系统进程结束了
系统就自动重启了
这不应该是代码的问题
而是你设计思想的问题
并非所有的进程都可以随便结束
你仔细想想吧
[/Quote]

谢谢老大!
.
请问 如果我想实现这样的功能
怎么用比较好?
.
另外 代码的问题解决了
但是 很多进程拒绝访问
请问 如果有的进程拒绝访问 如何执行下一个呢?
.
“生成”-“发布”后出现了如下问题:(有色字体部分)
有关调用实时(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 调试器,
而不是由此对话框处理。
DotGod 2008-04-07
  • 打赏
  • 举报
回复
因为你把系统进程结束了
系统就自动重启了
这不应该是代码的问题
而是你设计思想的问题
并非所有的进程都可以随便结束
你仔细想想吧
firewoods 2008-04-06
  • 打赏
  • 举报
回复
【 ping502 】兄 谢谢你!
关闭单个的进程我知道的
我想关闭的是 除了指定进程之外的所有进程 呵呵
这个到现在还没解决呢!
.
如果有办法 请帮忙啦 呵呵
ping502 2008-04-06
  • 打赏
  • 举报
回复
忘了說,把那個 Exit For 去掉。。因為我測試時加上去的。
ping502 2008-04-06
  • 打赏
  • 举报
回复
For Each oneProcess As Process In Process.GetProcesses()
If (oneProcess.ProcessName = "IEXPLORE") Then '判断进程
oneProcess.Kill() '关闭进程
Exit For
End If
Next
MessageBox.Show("OK")
樓主可以試下我的代碼來關網頁。
firewoods 2008-04-06
  • 打赏
  • 举报
回复
请教 谢谢!
scq2099yt 2008-04-04
  • 打赏
  • 举报
回复
up
firewoods 2008-04-04
  • 打赏
  • 举报
回复
天已经亮了 555555555555
这一夜算是白折腾了
偶好惨啊

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧