• 一个简单的进程察看器


    using System;
    using System.Diagnostics;

    namespace ProcessManager
    {
        
    /// <summary>
        
    /// Summary description for Class1.
        
    /// </summary>

        class MainEntry
        
    {
            
    /// <summary>
            
    /// The main entry point for the application.
            
    /// </summary>

            [STAThread]
            
    static void Main(string[] args)
            
    {
                
    if(args.Length<1)ListProcesses();
                
    else if(args[0].Length>0)ListProcess(args[0]);
            }


            
    private static void ListProcesses()
            
    {
                
    string output = "";
                
    int limit = 36;
                Console.WriteLine(
    "PID".PadRight(6)+"Name".PadRight(16)+"Memory".PadLeft(10)+"VM size".PadLeft(10)+"Threads count".PadLeft(20));
                Console.WriteLine(
    "-".PadRight(limit+34,'-'));
                
    foreach(Process proc in Process.GetProcesses())
                
    {
                    
                    
    string pid = proc.Id.ToString();
                    
    string pname = proc.ProcessName;
                    
    string pcount = proc.Threads.Count.ToString();
                    
    string pmemsize = (proc.PeakWorkingSet/1024).ToString()+"K";
                    
    string pvmsize = (proc.PeakPagedMemorySize/1024).ToString()+"K";
                    
                    output 
    = String.Format("{0}{1}{2}{3}{4}",pid.PadRight(6),pname.PadRight(16),pmemsize.PadLeft(10),pvmsize.PadLeft(10),pcount.PadLeft(10));
                    Console.WriteLine(output);
                }

            }
             

            
    private static void ListProcess(string processid)
            
    {
                
    int pid = -1;
                
    try
                
    {
                    pid 
    = Convert.ToInt32(processid);
                }

                
    catch
                
    {

                }


                
    if(-1 == pid)
                
    {
                    Console.WriteLine(
    "Invalid processID!");
                    
    return;
                }


                
    string output = "";
                Process proc 
    = null;
                
    try
                
    {
                    proc 
    = Process.GetProcessById(pid);
                }

                
    catch
                
    {

                }

                
    if(null == proc)
                
    {
                    Console.WriteLine(
    "Invalid processID!");
                    
    return;
                }


                Console.WriteLine(
    "PID:"+proc.Id.ToString());
                
                Console.WriteLine(
    "-".PadRight(50,'-'));
    //            Console.WriteLine("Main Module");
    //            Console.WriteLine("-".PadRight(50,'-'));
                Console.WriteLine("Module Name".PadRight(50)+"Memory Size");
                WriteModuleInformation(proc.MainModule);

                Console.WriteLine(
    "-".PadRight(50,'-'));
    //            Console.WriteLine("All Modules");
    //            Console.WriteLine("-".PadRight(50,'-'));
                Console.WriteLine("Module Name".PadRight(50)+"Memory Size");
                
    foreach(ProcessModule pm in proc.Modules)WriteModuleInformation(pm);
                
                Console.WriteLine(
    "-".PadRight(50,'-'));
                Console.WriteLine(
    "Thread List:");
                Console.WriteLine(
    "-".PadRight(50,'-'));
                Console.WriteLine(
    "ID".PadRight(6)+"Thread State".PadRight(20)+"Total Processor Time");
                Console.WriteLine(
    "-".PadRight(50,'-'));
                
    foreach(ProcessThread pt in proc.Threads)
                
    {
                    output 
    = String.Format("{0}{1}{2}",pt.Id.ToString().PadRight(6),pt.ThreadState.ToString().PadRight(20),pt.TotalProcessorTime);
                    Console.WriteLine(output);
                }

            }


            
    private static void WriteModuleInformation(ProcessModule pm)
            
    {
                Console.WriteLine(String.Format(
    "{0}{1}",pm.ModuleName.PadRight(50),(pm.ModuleMemorySize/1024).ToString().PadLeft(10)+"K"));
            }

        }

    }

  • 相关阅读:
    [na]ip数据包格式
    [js]浏览器同源策略(same-origin policy)
    [sql] 同库表(结构)的备份和sql聚合&navicat使用
    [svc]tcp三次握手四次挥手&tcp的11种状态(半连接)&tcp的time-wait
    [svc]ip地址划分
    [css]单/多行居中&字体设置
    时间戳转为C#格式时间
    windows 8 中 使用 httpclient
    oralce 查看是否启动 登陆 创建用户 常用命令小记
    SQL递归查询(with cte as)
  • 原文地址:https://www.cnblogs.com/juqiang/p/51322.html
Copyright © 2020-2023  润新知