2012-03-23 57 views
2

我有一个任务杀手程序,它具有当前正在运行的进程的列表框。选择一个项目后,点击按钮将运行代码以终止所选任务。这一切工作正常,但我需要帮助的是操纵我的窗体上的字符串输出,显示最后一项任务是什么。例如,如果我打开计算器并终止该任务,那么我的字符串输出为:“System.Diagnostics.Process(calc)”。我宁愿如果这只是说“calc”。所以,我需要能够剥离而不是在c中操作输出字符串#

Killed.Text = p.ToString(); 

public bool KillProcess(ListBox PList, TextBox Killed) 
    { 
     bool Kill = true; 
     string x = ""; 
     Killed.Text = ""; 


     if (PList.SelectedItem != null) 
     { 

      foreach (Process p in Process.GetProcesses(Environment.MachineName)) 
      { 
       x = PList.SelectedItem.ToString(); 

       if (p.ProcessName.Equals(x)) 
       { 

        try 
        { 
         p.Kill(); 

    //*************** Here is where I have the process killed placed into a textbox 
        //Which I would like to not say "System.Diagnostics.Process..." 

         Killed.Text = p.ToString(); 
        } 
        catch 
        { 
         MessageBox.Show(p.ProcessName.ToString() + " cannot be killed. ", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); 
         Kill = false; 
        } 
       } 


      } 
     } 
     else 
     { 
      MessageBox.Show("Please select a process to be killed.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); 
      Kill = false; 
     } 

     return Kill; 
    } 
+4

你为什么不简单地使用p.ProcessName? – BlackBear 2012-03-23 14:42:57

回答

6

的 “()的System.Diagnostics.Process” 尝试

Killed.Text = p.ProcessName; 

此外,作为一个单独的说明,您不需要在其他地方说p.ProcessName.ToString(),因为p.ProcessName已经是一个字符串。

+1

谢谢!这样可行。看起来很简单! – Richard 2012-03-23 14:44:51

+0

@Richard,因为它的工作原理,你可能想用它旁边的绿色复选框来标记这个答案。 – 2012-03-23 14:46:49

3

您可以简单地使用p.ProcessName

您也可以访问p.StartInfo就可以进入ProcessStartInfo这也为您提供有关该方法进一步信息(如文件名) - 这可能是有用的。