private void button2_Click(object sender, EventArgs e)
{//关闭指定的正在运行的程序
try
{
string MyProgram = "excel";
Process[] MyProcesses = Process.GetProcessesByName(MyProgram);
foreach (Process MyProcess in MyProcesses)
{
MyProcess.CloseMainWindow();
MessageBox.Show("成功关闭程序:" + MyProgram, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch(Exception a)
{
MessageBox.Show(a.Message );
}
}
private void button3_Click(object sender, EventArgs e)
{//获取当前系统正在运行的程序
string MyInfo = "当前系统正在运行的程序包括:\n";
Process[] MyProcesses = Process.GetProcesses();
foreach (Process MyProcess in MyProcesses)
{
if (MyProcess.MainWindowTitle.Length > 0)
MyInfo += MyProcess.MainWindowTitle+"\n";
}
MessageBox.Show(MyInfo, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void button4_Click(object sender, EventArgs e)
{//获取系统指定进程信息
string MyProgram = "excel";
Process[] MyProcesses = Process.GetProcessesByName(MyProgram);
string MyInfo = MyProgram+"程序的进程信息如下:\n";
foreach (Process MyProcess in MyProcesses)
{
MyInfo += "\n进程名称:" + MyProcess.ProcessName;
MyInfo += "\n进程ID:" + MyProcess.Id.ToString();
MyInfo += "\n启动时间:" + MyProcess.StartTime.ToLongDateString() + MyProcess.StartTime.ToLongTimeString();
MyInfo += "\n是否响应:" + MyProcess.Responding.ToString();
 ,
各种转运小方法; MyInfo += "\n关联进程句柄:" + MyProcess.Handle.ToString();
MyInfo += "\n进程打开的句柄数:" + MyProcess.HandleCount.ToString();
MyInfo += "\n主窗口句柄:" + MyProcess.MainWindowHandle.ToString();
MyInfo += "\n主窗口标题:" + MyProcess.MainWindowTitle;
MyInfo += "\n主模块:" + MyProcess.MainModule.ModuleName;
MyInfo += "\n模块数量:" + MyProcess.Modules.Count.ToString();
MyInfo += "\n基本优先级:" + MyProcess.BasePriority.ToString();
MyInfo += "\n提升优先级:" + MyProcess.PriorityBoostEnabled.ToString();
MyInfo += "\n处理器:" + MyProcess.ProcessorAffinity.ToInt32().ToString();
MyInfo += "\n线程数量:" + MyProcess.Threads.Count.ToString();
MyInfo += "\n最小工作集:" +MyProcess.MinWorkingSet.ToInt32().ToString();
MyInfo += "\n最大工作集:" + MyProcess.MaxWorkingSet.ToInt32().ToString();
MyInfo += "\n工作集:" + MyProcess.WorkingSet.ToString();
MyInfo += "\n峰值工作集:" + MyProcess.PeakWorkingSet.ToString();
MyInfo += "\n专用内存大小:" + MyProcess.PrivateMemorySize.ToString();
MyInfo += "\n未分页内存大小:" +MyProcess.NonpagedSystemMemorySize.ToString();
MyInfo += "\n分页内存大小:" + MyProcess.PagedMemorySize.ToString();
MyInfo += "\n峰值分页内存大小:" + MyProcess.PeakPagedMemorySize.ToString();
MyInfo += "\n虚拟内存大小:" + MyProcess.VirtualMemorySize.ToString();
MyInfo += "\n峰值虚拟内存大小:" + MyProcess.PeakVirtualMemorySize.ToString();
MyInfo += "\n占用总时间:" +MyProcess.TotalProcessorTime.ToString();
MyInfo += "\n特权占用时间:" + MyProcess.PrivilegedProcessorTime.ToString();
MyInfo += "\n用户占用时间:" + MyProcess.UserProcessorTime.ToString();
}
MessageBox.Show(MyInfo, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void button5_Click(object sender, EventArgs e)
{//获取指定系统进程的模块信息
string MyProgram = "excel";
Process[] MyProcesses = Process.GetProcessesByName(MyProgram);
string MyInfo = MyProgram + "程序的进程模块信息如下:\n";
foreach (Process MyProcess in MyProcesses)
{
ProcessModuleCollection MyModules = MyProcess.Modules;
foreach (ProcessModule MyModule in MyModules)
{
MyInfo += "\n=====================================================";
MyInfo+="\n模块名称:"+MyModule.ModuleName;
MyInfo+="\n公司名称:"+MyModule.FileVersionInfo.CompanyName;
MyInfo+="\n文件名称:"+MyModule.FileVersionInfo.FileName;
MyInfo+="\n文件版本:"+MyModule.FileVersionInfo.FileVersion;
if (!MyModule.FileVersionInfo.FileDescription.Equals(""))
MyInfo+="\n文件说明:"+MyModule.FileVersionInfo.FileDescription;
MyInfo+="\n文件创建时间:"+File.GetCreationTime(MyModule.FileVersionInfo.FileName).ToString();
//获取并显示文件大小.
FileInfo MyFileInfo = new FileInfo(MyModule.FileVersionInfo.FileName);
MyInfo+="\n文件大小:"+MyFileInfo.Length.ToString();
}
}
MessageBox.Show(MyInfo, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void button6_Click(object sender, EventArgs e)
{//获取指定系统进程的线程信息
string MyProgram = "excel";
Process[] MyProcesses = Process.GetProcessesByName(MyProgram);
string MyInfo = MyProgram + "程序的进程线程信息如下:\n";
foreach (Process MyProcess in MyProcesses)
{
int MyCount = 0;
while (MyCount < MyProcess.Threads.Count)
{
ProcessThread MyThread = MyProcess.Threads[MyCount];
MyInfo += "\n===================================================";
MyInfo += "\n标识符:" + MyThread.Id.ToString();
MyInfo += "\n基本优先级:" + MyThread.BasePriority.ToString();
MyInfo += "\n当前优先级:" + MyThread.CurrentPriority.ToString();
 ,
转发 有点经典; MyInfo += "\n内存地址:" + MyThread.StartAddress.ToString();
MyInfo += "\n启动时间:" + MyThread.StartTime.ToString();
MyInfo += "\n使用时间:" + MyThread.UserProcessorTime.ToString();
if (MyThread.ThreadState == ThreadState.Initialized)
MyInfo += "\n当前状态:线程已初始化但尚未启动";
if (MyThread.ThreadState == ThreadState.Ready)
MyInfo += "\n当前状态:线程准备在下一个可用的处理器上运行";
if (MyThread.ThreadState == ThreadState.Running)
MyInfo += "\n当前状态:当前正在使用处理器";
if (MyThread.ThreadState == ThreadState.Standby)
MyInfo += "\n当前状态:将要使用处理器";
if (MyThread.ThreadState == ThreadState.Terminated)
MyInfo += "\n当前状态:已完成执行并已退出";
if (MyThread.ThreadState == ThreadState.Transition)
MyInfo += "\n当前状态:在可以执行前等待处理器之外的资源";
if (MyThread.ThreadState == ThreadState.Unknown)
MyInfo += "\n当前状态:状态未知";
if (MyThread.ThreadState == ThreadState.Wait)
MyInfo += "\n当前状态:正在等待外围操作完成或等待资源释放";
if (MyThread.WaitReason == ThreadWaitReason.EventPairHigh)
MyInfo += "\n等待原因:线程正在等待事件对高";
if (MyThread.WaitReason == ThreadWaitReason.EventPairLow)
MyInfo += "\n等待原因:线程正在等待事件对低";
if (MyThread.WaitReason == ThreadWaitReason.ExecutionDelay)
MyInfo += "\n等待原因:线程执行延迟";
if (MyThread.WaitReason == ThreadWaitReason.Executive)
MyInfo += "\n等待原因:线程正在等待计划程序";
if (MyThread.WaitReason == ThreadWaitReason.FreePage)
MyInfo += "\n等待原因:线程正在等待可用的虚拟内存页";
if (MyThread.WaitReason == ThreadWaitReason.LpcReceive)
MyInfo += "\n等待原因:线程正在等待本地过程调用到达";
if (MyThread.WaitReason == ThreadWaitReason.LpcReply)
MyInfo += "\n等待原因:线程正在等待对本地过程调用的回复到达";
if (MyThread.WaitReason == ThreadWaitReason.PageIn)
MyInfo += "\n等待原因:线程正在等待虚拟内存页到达内存";
if (MyThread.WaitReason == ThreadWaitReason.PageOut)
MyInfo += "\n等待原因:线程正在等待虚拟内存页写入磁盘";
if (MyThread.WaitReason == ThreadWaitReason.Suspended)
MyInfo += "\n等待原因:线程执行暂停";
 ,
选择; if (MyThread.WaitReason == ThreadWaitReason.SystemAllocation)
MyInfo += "\n等待原因:线程正在等待系统分配";
if (MyThread.WaitReason == ThreadWaitReason.Unknown)
MyInfo += "\n等待原因:线程正在因未知原因而等待";
if (MyThread.WaitReason == ThreadWaitReason.UserRequest)
MyInfo += "\n等待原因:线程正在等待用户请求";
if (MyThread.WaitReason == ThreadWaitReason.VirtualMemory)
MyInfo += "\n等待原因:线程正在等待系统分配虚拟内存";
MyCount++;
}
}
MessageBox.Show(MyInfo, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
 ,
劲舞团私服卡级; }
}