Spiga

.NET关于操作进程的简单示例

2006-08-13 17:15 by Snowtoday, 1101 visits, 收藏, 编辑

好久未更新,惭愧惭愧……

引入名称空间:using System.Diagnostics;

 

开始某个进程,例如,打开记事本:

Process process1 = new Process();

process1.StartInfo.FileName = "NotePad.exe";

process1.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;

process1.Start();

 

终止某个进程:

Process[] p = Process.GetProcessesByName("NotePad");

if (p.Length >0)

{

if (!p[0].HasExited)

{

if (p[0].Responding)

{

p[0].CloseMainWindow();

}

else

{

p[0].Kill();

}

}

}

 

线程的HasExited属性用来确定线程是否已关闭。如果进程已关闭,将返回 true 属性值;如果进程仍在运行,将返回 false 属性值。

 

线程的Responding属性确定进程的用户界面是否正在响应。尝试读取 Responding 属性时,将向目标进程的用户界面发送一个请求。如果立即有响应,则返回属性值为 trues,可以调用 CloseMainWindow方法关闭应用程序;如果界面没有响应,则返回 false 属性值,可以调用 Kill 方法强制进程关闭。

 

 

 

Add your comment

4 条回复

  1. #1楼 Java、.Net技术网      2006-08-14 10:17
    我测试一下:启动进程可以,关闭不行!

    启动进程
    private void proccess_Click(object sender, System.EventArgs e)
    {
    Process pc=new Process();

    pc.StartInfo.FileName="NotePad.exe";

    pc.StartInfo.WindowStyle=ProcessWindowStyle.Normal;

    pc.Start();

    }

    关闭进程:
    private void CloseProcessBtn_Click(object sender, System.EventArgs e)
    {
    Process[] pc=Process.GetProcessesByName("NotePad.exe");

    if (pc.Length>0)
    {
    for (int i=0;i<pc.Length;i++)
    {
    if (!pc[i].HasExited)
    {
    if (pc[i].Responding)
    {
    pc[i].CloseMainWindow();
    }
    else
    {
    pc[i].Kill();

    }
    }
    }
    }
    }

    我点关闭进程按钮,没有反映!
     回复 引用 查看   
  2. #2楼[楼主] KissKnife      2006-08-14 12:53
    Process[] pc=Process.GetProcessesByName("NotePad.exe");
    应该是:
    Process[] pc=Process.GetProcessesByName("NotePad");
     回复 引用 查看   
  3. #3楼 xing      2006-08-14 13:44
    学习一下
     回复 引用 查看   
  4. #4楼 Java、.Net技术网      2006-08-18 11:46
    谢谢楼主,可以了
     回复 引用 查看