C#操作windows系统进程的方法

2022-05-25 12:06:55

一、概述

一个Process组件提供了在计算机运行进程的访问权限。>

属性

    Id   >ProcessName    获取该进程的名称。MachineName    获取关联进程正在其上运行的计算机的名称。SessionId    获取关联进程的终端服务会话标识符。StandardError    获取用于读取应用程序错误输出的流。StandardInput    获取用于写入应用程序输入的流。StandardOutput    获取用于读取应用程序文本输出的流。StartInfo    获取或设置要传递给 Process 的 Start() 方法的属性。StartTime    获取关联进程启动的时间。Threads    获取在关联进程中运行的一组线程。Handle    获取关联进程的本机句柄。MainWindowHandle    获取关联进程主窗口的窗口句柄。MainWindowTitle    获取进程的主窗口标题。   MainModule    获取关联进程的主模块。Modules    获取已由关联进程加载的模块。

    方法

      GetCurrentProcess()   >GetProcessById(Int32)    返回新的 Process 组件(给定本地计算机上某个进程的标识符)。GetProcesses()    为本地计算机上的每个进程资源创建一个新的 Process 组件。GetProcessesByName(String)    创建新的 Process 组件的数组,并将它们与本地计算机上共享指定的进程名称的所有进程资源关联。Kill()    立即停止关联的进程。Start()    启动(或重用)此 Process 组件的 StartInfo 属性指定的进程资源,并将其与该组件关联。WaitForExit(Int32)         指示 Process 组件在指定的毫秒数内等待关联进程退出。

      二、使用方法

      1、建立和销毁进程>
      System.Diagnostics.Process p=Process.Start("notepad.exe","File.txt");
      Thread.Sleep(2000);
      p.Kill();

      2、后台运行进程:

      ProcessStartInfo psi = new ProcessStartInfo("cmd.exe");
      psi.Arguments = @"/c copy c:1.txt lpt1";
      psi.CreateNoWindow = true;
      psi.UseShellExecute = false;//默认为true, 使用外壳程序启动进程。否则,直接从可执行文件创建进程。
      Process p = Process.Start(psi);
      if (!p.WaitForExit(1000 * 7))//启动外部程序,等待其退出
      {
          p.Kill();
      }
      p.Close();

      或者

      ProcessStartInfo psi = new ProcessStartInfo("cmd.exe");//FileName
      psi.RedirectStandardInput = true;
      psi.RedirectStandardOutput = true;
      psi.CreateNoWindow = true;//将此属性设置为false,就能重定向进程。。。
      psi.UseShellExecute = false;//
      Process p = Process.Start(psi);
      StreamWriter sw = p.StandardInput;
      StreamReader sr = p.StandardOutput;
      sw.WriteLine(@"/c copy c:1.txt lpt1");
      sw.Close();
      Console.Write(sr.ReadToEnd());
      sr.Close();
      p.Close();

      3、启动外部程序

      System.Diagnostics.Process.Start("explorer.exe", @"c:/"); //用资源管理器打开C:/  
      System.Diagnostics.Process.Start("rundll32.exe", @"shell32.dll,Control_RunDLL appwiz.cpl,,0");//打开“添加或删除程序”的面板:

      4、列举计算机中运行中的进程

      var pList = Process.GetProcesses().OrderBy(x => x.Id).Take(10);
      foreach (var p in pList)
      {
          Console.WriteLine(string.Format("ProcessID is {0} t ProcessName is {1}", p.Id, p.ProcessName));
      }

      5、获取进程中的多个模块

      var mList = Process.GetCurrentProcess().Modules;
      foreach (ProcessModule m in mList)
      {
          Console.WriteLine(string.Format("ModuleName is {0} t ModuleURL  is {1} t ModuleVersion is {2}", m.ModuleName, m.FileName, m.FileVersionInfo.FileVersion));
      }

      到此这篇关于C#操作windows系统进程的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持易采站长站。