c#之process类相关整理
来源:互联网 发布:网络直播是如何赚钱的 编辑:程序博客网 时间:2024/06/05 04:34
转自:http://www.oschina.net/code/snippet_119226_6188
c#之process类相关整理
2010-06-11 10:55一、根据进程名获取进程的用户名?
需要添加对 System.Management.dll 的引用
using System.Diagnostics;using System.Management; static void Main(string[] args){foreach (Process p in Process.GetProcesses()) { Console.Write(p.ProcessName); Console.Write("----"); Console.WriteLine(GetProcessUserName(p.Id)); } Console.ReadKey();} private static string GetProcessUserName(int pID){ string text1 = null; SelectQuery query1 = new SelectQuery("Select * from Win32_Process WHERE processID=" + pID); ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(query1); try { foreach (ManagementObject disk in searcher1.Get()) { ManagementBaseObject inPar = null; ManagementBaseObject outPar = null; inPar = disk.GetMethodParameters("GetOwner"); outPar = disk.InvokeMethod("GetOwner", inPar, null); text1 = outPar["User"].ToString(); break; } } catch { text1 = "SYSTEM"; } return text1;}
进程名 是 p.ProcessName
二、获取进程
using System.Diagnostics;【注】System.Diagnostics 命名空间提供特定的类,使您能够与系统进程、事件日志和性能计数器进行交互。string str = "";Process[] processes;//Get the list of current active processes.processes = System.Diagnostics.Process.GetProcesses();//Grab some basic information for each process.Process process;for(int i = 0;i<processes.Length-1;i++){process = processes[i];str = str + Convert.ToString(process.Id) + " : " +process.ProcessName + "\r\n";}System.Windows.Forms.MessageBox.Show(str);txtProcessID.Text = processes[0].Id.ToString(); //显示进程相关信息string s = "";System.Int32 processid;Process process;processid = Int32.Parse(txtProcessID.Text);process = System.Diagnostics.Process.GetProcessById(processid);s = s + "该进程的总体优先级类别:" + Convert.ToString(process.PriorityClass) + " \r\n";s = s + "由该进程打开的句柄数:" + process.HandleCount + "\r\n";s = s + "该进程的主窗口标题:" + process.MainWindowTitle + "\r\n";s = s + " 该进程允许的最小工作集大小:" + process.MinWorkingSet.ToString() + " \r\n";s = s + "该进程允许的最大工作集大小:" + process.MaxWorkingSet.ToString() + " \r\n";s = s + "该进程的分页内存大小:" + process.PagedMemorySize + "\r\n";s = s + "该进程的峰值分页内存大小:" + process.PeakPagedMemorySize + "\r\n";System.Windows.Forms.MessageBox.Show(s);}catch{System.Windows.Forms.MessageBox.Show("不合法的进程ID!");}
【注】Int32 值类型表示值介于-2,147,483,648 到+2,147,483,647 之间的有符号整数。
Int32 提供了一些方法,来比较该类型的实例、将实例的值转换为它的String 表示形式以及将数字的String 表示形式转换为该类型的实例。
有关格式规范代码如何控制值类型的String 表示形式的信息,请参阅格式设置概述。
此类型实现接口IComparable、IFormattable 和IConvertible。使用Convert 类进行转换,而不是使用此类型的IConvertible 显式接口成员实现。
值得一提的是,Process 类具有很多成员变量,这些成员变量可以获得进程的几乎每一个细节。上面的例子中只是简单地选择了几个成员加以演示。如果开发中有需要,可以参考MSDN Library,查询Process类成员以获得更详细的信息,这里就不一一列出了。
三、杀死进程
private void button2_Click(object sender, EventArgs e){if (listView1.SelectedItems.Count > 0){ try { string proName = listView1.SelectedItems[0].Text; Process[] p = Process.GetProcessesByName(proName); p[0].Kill(); MessageBox.Show("进程关闭成功!"); GetProcess(); } catch { MessageBox.Show("无法关闭此进程!"); }}else{ MessageBox.Show("请选择要终止的进程!");}}
四、C#中利用process类调用外部程序以及执行dos命令
private string RunCmd(string command){//实例一个Process类,启动一个独立进程Process p = new Process();//Process类有一个StartInfo属性//设定程序名p.StartInfo.FileName = "cmd.exe";//设定程式执行参数 p.StartInfo.Arguments = "/c " + command;//关闭Shell的使用 p.StartInfo.UseShellExecute = false; //重定向标准输入 p.StartInfo.RedirectStandardInput = true;p.StartInfo.RedirectStandardOutput = true;//重定向错误输出 p.StartInfo.RedirectStandardError = true; //设置不显示窗口p.StartInfo.CreateNoWindow = true; //启动p.Start(); //也可以用这种方式输入要执行的命令//不过要记得加上Exit要不然下一行程式执行的时候会当机//p.StandardInput.WriteLine(command);//p.StandardInput.WriteLine("exit"); //从输出流取得命令执行结果return p.StandardOutput.ReadToEnd();}
附加:MSDN中 Process.StandardOutput 属性 一节的一个举例:
示例
The following example runs the ipconfig.exe command and redirects its standard output to the example’s console window.
using System;using System.IO;using System.Diagnostics;class StandardOutputExample{ public static void Main() { Process process = new Process(); process.StartInfo.FileName = "ipconfig.exe"; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; process.Start(); // Synchronously read the standard output of the spawned process. StreamReader reader = process.StandardOutput; string output = reader.ReadToEnd(); // Write the redirected output to this application's window. Console.WriteLine(output); process.WaitForExit(); process.Close(); Console.WriteLine("\n\nPress any key to exit."); Console.ReadLine(); }}
0 0
- c#之process类相关整理
- C#之Process
- C# 进程类 Process
- 一些C#相关知识整理
- C#中的Process类使用
- C#中的Process类使用
- C#中的Process类使用
- C#之进程 Process.Start()用法举例
- C# Process
- C# Process
- java之JDBC相关整理
- c#之Time相关
- C# 文件流下载相关整理
- 温故而知新 知识整理之Bitmap相关类ExifInterface
- C#中Process类的使用
- (转)c# process类的使用
- C#中 Process的扩展类ProcessExtensions
- c# Process类使用小例
- django 个人博客系统开发 - 日志器 基本信息的全局使用
- Python函数/方法装饰器
- 再遇UML之用例图
- ios系统中各种设置项的url链接
- Top 6 Free Remote Desktop Connections Manager
- c#之process类相关整理
- Requests库的用法
- pluck()取表中一列中所有值组成数组
- NLP's score meaning
- jenkins学习笔记---问题总结
- 使用框架的意义与spring的主要内容
- LightOJ 1305-Area of a Parallelogram【几何】
- FAST Corner Detection -- Edward Rosten
- zookeeper的单机多实例配置和分布式配置