首页 > 编程 > C# > 正文

C#实现进程管理的启动和停止实例

2019-10-29 21:41:56
字体:
来源:转载
供稿:网友

这篇文章主要介绍了C#实现进程管理的启动和停止方法,以操作记事本程序为例,实例分析了C#针对进程操作的基本技巧,需要的朋友可以参考下

本文实例讲述了C#实现进程管理的启动和停止方法。分享给大家供大家参考。具体实现方法如下:

 

 
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.ComponentModel; 
  4. using System.Data; 
  5. using System.Drawing; 
  6. using System.Text; 
  7. using System.Windows.Forms; 
  8. using System.IO; 
  9. //引用命名空间 
  10. using System.Diagnostics; 
  11. using System.Threading; 
  12. namespace StartStopProcess 
  13. public partial class Form1 : Form 
  14. int fileIndex; 
  15. string fileName = "Notepad.exe"
  16. Process process1 = new Process(); 
  17. public Form1() 
  18. InitializeComponent(); 
  19. //以详细列表方式显示 
  20. listView1.View = View.Details; 
  21. //参数含义:列名称,宽度(像素),水平对齐方式 
  22. listView1.Columns.Add("进程ID", 70, HorizontalAlignment.Left); 
  23. listView1.Columns.Add("进程名称", 70, HorizontalAlignment.Left); 
  24. listView1.Columns.Add("占用内存", 70, HorizontalAlignment.Left); 
  25. listView1.Columns.Add("启动时间", 70, HorizontalAlignment.Left); 
  26. listView1.Columns.Add("文件名", 280, HorizontalAlignment.Left); 
  27. private void buttonStart_Click(object sender, EventArgs e) 
  28. string argument = Application.StartupPath + "//myfile" + fileIndex + ".txt"
  29. if (File.Exists(argument)==false
  30. File.CreateText(argument); 
  31. //设置要启动的应用程序名称及参数 
  32. ProcessStartInfo ps = new ProcessStartInfo(fileName, argument); 
  33. ps.WindowStyle = ProcessWindowStyle.Normal; 
  34. fileIndex++; 
  35. Process p = new Process(); 
  36. p.StartInfo = ps; 
  37. p.Start(); 
  38. //等待启动完成,否则获取进程信息可能会失败 
  39. p.WaitForInputIdle(); 
  40. RefreshListView(); 
  41. private void buttonStop_Click(object sender, EventArgs e) 
  42. this.Cursor = Cursors.WaitCursor; 
  43. //创建新的Process组件的数组,并将它们与指定的进程名称(Notepad)的所有进程资源相关联. 
  44. Process[] myprocesses; 
  45. myprocesses = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(fileName)); 
  46. foreach (Process p in myprocesses) 
  47. //通过向进程主窗口发送关闭消息达到关闭进程的目的 
  48. p.CloseMainWindow(); 
  49. //等待1000毫秒 
  50. Thread.Sleep(1000); 
  51. //释放与此组件关联的所有资源 
  52. p.Close(); 
  53. fileIndex = 0; 
  54. RefreshListView(); 
  55. this.Cursor = Cursors.Default; 
  56. private void RefreshListView() 
  57. listView1.Items.Clear(); 
  58. //创建Process类型的数组,并将它们与系统内所有进程相关联 
  59. Process[] processes; 
  60. processes = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(fileName)); 
  61. foreach (Process p in processes) 
  62. //将每个进程的进程名称、占用的物理内存以及进程开始时间加入listView中 
  63. ListViewItem item = new ListViewItem( 
  64. new string[]{ 
  65. p.Id.ToString(), 
  66. p.ProcessName, 
  67. string.Format("{0} KB", p.PrivateMemorySize64/1024.0f), 
  68. string.Format("{0}",p.StartTime), 
  69. p.MainModule.FileName 
  70. }); 
  71. listView1.Items.Add(item); 
  72. private void buttonRefresh_Click(object sender, EventArgs e) 
  73. RefreshListView(); 
  74. private void Form1_Load(object sender, EventArgs e) 
  75.  

希望本文所述对大家的C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表