查看: 4120|回复: 9
收起左侧

[软件] C# 怎么结束explorer这个进程 每次都自动重启啊

[复制链接]
沧海ふ无涯
发表于 2014-8-1 14:51:11 | 显示全部楼层 |阅读模式
        /// <summary>
        /// 结束指定进程
        /// </summary>
        /// <param name="name">进程名</param>
        static public void killProcess(string name)
        {
            try
            {
                System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcesses();
                foreach (System.Diagnostics.Process myProcess in myProcesses)
                {
                    if (name == myProcess.ProcessName)
                        myProcess.Kill();
                }
            }
            catch (Exception ee)
            { MessageBox.Show(ee.Message); } //抛出异常

        }

这代码不行的.....桌面每次都重启   根本关不掉  我之前用taskkill的  但会出现一个黑色的窗口 持续时间在0.6秒左右
不太美观   求解该怎么解决?
有人说要修改退出代码为1  就是正常退出...
但这个是explorer的事情,不知道该怎么写代码
linyinlu
发表于 2014-8-1 16:22:53 | 显示全部楼层
将中断放置到:
if (name == myProcess.ProcessName)
上,然后看传入的参数是否正确
从代码上看,我没有看出什么问题。我通常用C#进行网页开发,没有进行过Windows程序开发,所以暂且这么建议
沧海ふ无涯
 楼主| 发表于 2014-8-1 20:47:32 | 显示全部楼层
linyinlu 发表于 2014-8-1 16:22
将中断放置到:
if (name == myProcess.ProcessName)
上,然后看传入的参数是否正确

进程是可以结束的  但explorer会自动重启的
linyinlu
发表于 2014-8-1 23:46:43 | 显示全部楼层
沧海ふ无涯 发表于 2014-8-1 20:47
进程是可以结束的  但explorer会自动重启的

这个很奇怪,我家里的计算机上还未安装Visual Studio,我安装调试以后再看是什么问题
linyinlu
发表于 2014-8-2 20:15:02 | 显示全部楼层
沧海ふ无涯 发表于 2014-8-1 20:47
进程是可以结束的  但explorer会自动重启的

我尝试了一下,创建一个Project,全部代码如下:
[mw_shl_code=python,true]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Inv
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {

        }
        static public void killProcess(string name)
        {
            try
            {
                System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcesses();
                foreach (System.Diagnostics.Process myProcess in myProcesses)
                {
                    if (name == myProcess.ProcessName)
                        myProcess.Kill();
                }
            }
            catch (Exception ee)
            { MessageBox.Show(ee.Message); } //抛出异常
        }

        private void button1_Click(object sender, EventArgs e)
        {
            killProcess("Inv");
        }
    }
}[/mw_shl_code]

运行时状态:

进程:

点击结束进程按钮后,直接关闭该窗口和应用程序,并没有导致Explorer.exe重启。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
沧海ふ无涯
 楼主| 发表于 2014-8-2 20:31:49 | 显示全部楼层
linyinlu 发表于 2014-8-2 20:15
我尝试了一下,创建一个Project,全部代码如下:
[mw_shl_code=python,true]using System;
using Syste ...

我这里是explorer重启了   貌似是系统设置的问题
linyinlu
发表于 2014-8-2 20:34:51 | 显示全部楼层
沧海ふ无涯 发表于 2014-8-2 20:31
我这里是explorer重启了   貌似是系统设置的问题

应该是系统设置问题,要么你在应用程序调用时需要使用到Explorer进程,那样的话,有可能会连带Kill
914525753
发表于 2014-8-3 08:59:37 | 显示全部楼层
用cmd结束不就得了,至于黑色框框的话:
可以编辑一个vbs脚本,在其中以隐藏窗口运行批处理程序。
------------------------------------------------------------
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c 批处理程序名",vbhide
------------------------------------------------------------
(扩展名必须是.vbs)然后点击运行,即可隐藏运行指定的批处理程序。这个vbs脚本也可以在其它环境中直接调用。
沧海ふ无涯
 楼主| 发表于 2014-8-3 09:25:33 | 显示全部楼层
914525753 发表于 2014-8-3 08:59
用cmd结束不就得了,至于黑色框框的话:
可以编辑一个vbs脚本,在其中以隐藏窗口运行批处理程序。
----- ...

杀软不会报毒?  这个是给客户用的诶~~~~

我不想被退货。。。
914525753
发表于 2014-8-3 17:12:05 | 显示全部楼层
沧海ふ无涯 发表于 2014-8-3 09:25
杀软不会报毒?  这个是给客户用的诶~~~~

我不想被退货。。。

用易语言编写,隐藏运行cmd命令,然后静态编译。杀软肯定不报。
其他的编程我就没学过了。
最简单的方法就是远程协助,在客户的电脑里打开cmd,输入命令
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-1-11 06:35 , Processed in 0.146312 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表