c# 如何用using引入 process 类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 如何用using引入 process 类相关的知识,希望对你有一定的参考价值。
在c#中不是识别process类如何 用using引入
1 c#之process类相关整理2 2010-06-11 10:55
3
4 一、根据进程名获取进程的用户名?
5
6 需要添加对 System.Management.dll 的引用
7
8 using System.Diagnostics;
9 using System.Management;
10
11 static void Main(string[] args)
12
13 foreach (Process p in Process.GetProcesses())
14
15 Console.Write(p.ProcessName);
16 Console.Write("----");
17 Console.WriteLine(GetProcessUserName(p.Id));
18
19
20 Console.ReadKey();
21
22
23 private static string GetProcessUserName(int pID)
24
25 string text1 = null;
26
27 SelectQuery query1 = new SelectQuery("Select * from Win32_Process WHERE processID=" + pID);
28 ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(query1);
29
30 try
31
32 foreach (ManagementObject disk in searcher1.Get())
33
34 ManagementBaseObject inPar = null;
35 ManagementBaseObject outPar = null;
36
37 inPar = disk.GetMethodParameters("GetOwner");
38
39 outPar = disk.InvokeMethod("GetOwner", inPar, null);
40
41 text1 = outPar["User"].ToString();
42 break;
43
44
45 catch
46
47 text1 = "SYSTEM";
48
49
50 return text1;
51
52
53
54 进程名 是 p.ProcessName
55
56 二、获取进程
57
58 using System.Diagnostics;
59 【注】System.Diagnostics 命名空间提供特定的类,使您能够与系统进程、事件日志和性能计数器进行交互。
60 string str = "";
61 Process[] processes;
62 //Get the list of current active processes.
63 processes = System.Diagnostics.Process.GetProcesses();
64 //Grab some basic information for each process.
65 Process process;
66 for(int i = 0;i<processes.Length-1;i++)
67
68 process = processes[i];
69 str = str + Convert.ToString(process.Id) + " : " +
70 process.ProcessName + "\r\n";
71
72 System.Windows.Forms.MessageBox.Show(str);
73 txtProcessID.Text = processes[0].Id.ToString();
74
75 //显示进程相关信息
76 string s = "";
77 System.Int32 processid;
78 Process process;
79 processid = Int32.Parse(txtProcessID.Text);
80 process = System.Diagnostics.Process.GetProcessById(processid);
81 s = s + "该进程的总体优先级类别:" + Convert.ToString(process.PriorityClass) + " \r\n";
82 s = s + "由该进程打开的句柄数:" + process.HandleCount + "\r\n";
83 s = s + "该进程的主窗口标题:" + process.MainWindowTitle + "\r\n";
84 s = s + " 该进程允许的最小工作集大小:" + process.MinWorkingSet.ToString() + " \r\n";
85 s = s + "该进程允许的最大工作集大小:" + process.MaxWorkingSet.ToString() + " \r\n";
86 s = s + "该进程的分页内存大小:" + process.PagedMemorySize + "\r\n";
87 s = s + "该进程的峰值分页内存大小:" + process.PeakPagedMemorySize + "\r\n";
88 System.Windows.Forms.MessageBox.Show(s);
89
90 catch
91
92 System.Windows.Forms.MessageBox.Show("不合法的进程ID!");
93
94 【注】Int32 值类型表示值介于-2,147,483,648 到+2,147,483,647 之间的有符号整数。
95 Int32 提供了一些方法,来比较该类型的实例、将实例的值转换为它的String 表示形式以及将数字的String 表示形式转换为该类型的实例。
96 有关格式规范代码如何控制值类型的String 表示形式的信息,请参阅格式设置概述。
97 此类型实现接口IComparable、IFormattable 和IConvertible。使用Convert 类进行转换,而不是使用此类型的IConvertible 显式接口成员实现。
98 值得一提的是,Process 类具有很多成员变量,这些成员变量可以获得进程的几乎每一个细节。上面的例子中只是简单地选择了几个成员加以演示。如果开发中有需要,可以参考MSDN Library,查询Process类成员以获得更详细的信息,这里就不一一列出了。
99
100 三、杀死进程
101
102 private void button2_Click(object sender, EventArgs e)
103
104 if (listView1.SelectedItems.Count > 0)
105
106 try
107
108 string proName = listView1.SelectedItems[0].Text;
109 Process[] p = Process.GetProcessesByName(proName);
110 p[0].Kill();
111 MessageBox.Show("进程关闭成功!");
112 GetProcess();
113
114 catch
115
116 MessageBox.Show("无法关闭此进程!");
117
118
119 else
120
121 MessageBox.Show("请选择要终止的进程!");
122
123
124
125 四、C#中利用process类调用外部程序以及执行dos命令
126
127 private string RunCmd(string command)
128
129 //实例一个Process类,启动一个独立进程
130 Process p = new Process();
131 //Process类有一个StartInfo属性
132 //设定程序名
133 p.StartInfo.FileName = "cmd.exe";
134 //设定程式执行参数
135 p.StartInfo.Arguments = "/c " + command;
136 //关闭Shell的使用
137 p.StartInfo.UseShellExecute = false;
138 //重定向标准输入
139 p.StartInfo.RedirectStandardInput = true;
140 p.StartInfo.RedirectStandardOutput = true;
141 //重定向错误输出
142 p.StartInfo.RedirectStandardError = true;
143 //设置不显示窗口
144 p.StartInfo.CreateNoWindow = true;
145 //启动
146 p.Start();
147 //也可以用这种方式输入要执行的命令
148 //不过要记得加上Exit要不然下一行程式执行的时候会当机
149 //p.StandardInput.WriteLine(command);
150 //p.StandardInput.WriteLine("exit");
151 //从输出流取得命令执行结果
152 return p.StandardOutput.ReadToEnd();
153 参考技术A 引用空间如下:
using System.Diagnostics;
引用后,可以添加Process这个类在代码中;
是不是这个意思,不行可以hi我, 参考技术B 如何process类是外部DLL组件中的类 ,则需要先引入项目 项目右击->添加引用->找到外部DLL 确定.
如果是VS自带的,则只要用 using classpath就行 参考技术C using System.Diagnostics;
c#中如何用list对文本文件中的词语按行去重并统计每个词语的次数
问题1:“文本1”中按行存放词语,不但要去重,还要把所有词语出现的次数统计出来,结果如“文本2”。
问题2:针对“文本2”按照词语次数的大小降序排列,结果如“文本3”。
这样的问题用Linq处理非常方便!
1)代码如下:
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
class Program
static void Main(string[] args)
//从文本文件中读出所有行
string[] lines = File.ReadAllLines("文本1.txt");
//构造一个Linq查询
var qry = from s in lines
group s by s into ws
orderby ws.Count() descending
select new
Num= ws.Count(),
Word = ws.Key
;
//将结果写入文件
StreamWriter w = File.CreateText("文本3.txt");
foreach (var item in qry)
w.WriteLine(string.Format("0 1", item.Word, item.Num));
w.Close();
2)文本1.txt的内容
3)文本3.txt的内容(运行结果)
追问非常感谢。您这个是用了SQL查询方面的语句吗,
这个方面没接触过,不是很懂。另外就是,在一个文件夹下如果有很多类似的“文本1”需要进行处理(也就是说批处理),这个怎么实现。还有能够不用那个查询语句实现吗。麻烦大神附上代码,谢谢。
用StreamReader 读入内存,然后定义语句变量
用 while ((line = sr.ReadLine()) != null)一行一行读入
然后相同变量相加。最后统计出来后写入
list中,代码不放了,自己想 参考技术B 不需要用到list吧。
直接逐行读取出来就是 字符串数组 了。
以上是关于c# 如何用using引入 process 类的主要内容,如果未能解决你的问题,请参考以下文章
c#中如何用list对文本文件中的词语按行去重并统计每个词语的次数
如何用C#编写程序监测某个文件夹内是不是有文件进行了增,删,改的动作?
如何用 APT(Annotation Processing Tool)自动生成代码