zoukankan      html  css  js  c++  java
  • 监控电脑CPU,内存,文件大小,硬盘空间,IP,用户名

     public class MonitorTools
        {
            /// <summary>
            /// 获取具体进程的内存,线程等参数情况
            /// </summary>
            /// <param name="processName"></param>
            public static void getWorkingSet(string processName)
            {
                Process[] ps = Process.GetProcesses();
                foreach (Process p in ps)
                {
                    if (p.MainWindowHandle != null)
                    {
                        if (processName == p.ProcessName)
                        {
                            using (var process = Process.GetProcessesByName(processName)[0])
                            using (var p1 = new PerformanceCounter("Process", "Working Set - Private", processName))
                            using (var p2 = new PerformanceCounter("Process", "Working Set", processName))
                            {
                                Console.WriteLine("{0}{1:N} KB", "工作集(进程类)", process.WorkingSet64 / 1024);
                                Console.WriteLine("{0}{1:N} KB", "内存(专用工作集)", p1.NextValue() / 1024);
                                Console.WriteLine(process.Threads.Count.ToString());//线程
                                Console.WriteLine(process.Id.ToString());//PID
                            }
                        }
                    }
                }
            }
    
            /// <summary>
            /// 遍历获取所有硬盘的可用空间
            /// </summary>
            /// <returns></returns>
            public static string GetDriveInfo()
            {
                string result = string.Empty;
                foreach (DriveInfo item in DriveInfo.GetDrives())
                {
                    if (item.DriveType == DriveType.Fixed)
                    {
                        result += string.Format("{0} 可用空间{1:N} 
    ", item.Name, item.AvailableFreeSpace / (1024 * 1024) + "MB");
                    }
                }
                return result;
            }
    
            /// <summary>
            /// 根据文件路径获得文件的大小信息
            /// </summary>
            /// <param name="filePath"></param>
            /// <returns></returns>
            public static string GetFileSize(string filePath)
            {
                string length = string.Empty;
                try
                {
                    FileInfo file = new FileInfo(filePath);
                    if (file != null)
                    {
                        length = file.Length.ToString();                    
                    }
                    return length;
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                    return string.Empty;
                }
            }
    
            //测试获取CPU,内存等运行情况
            [DllImport("kernel32")]
            public static extern void GetSystemInfo(ref CPU_INFO cpuinfo);
            [DllImport("kernel32")]
            public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);
    
            //定义CPU的信息结构
            [StructLayout(LayoutKind.Sequential)]
            public struct CPU_INFO
            {
                public uint dwOemId;
                public uint dwPageSize;
                public uint lpMinimumApplicationAddress;
                public uint lpMaximumApplicationAddress;
                public uint dwActiveProcessorMask;
                public uint dwNumberOfProcessors;
                public uint dwProcessorType;
                public uint dwAllocationGranularity;
                public uint dwProcessorLevel;
                public uint dwProcessorRevision;
            }
    
            //定义内存的信息结构
            [StructLayout(LayoutKind.Sequential)]
            public struct MEMORY_INFO
            {
                public uint dwLength;
                public uint dwMemoryLoad;
                public uint dwTotalPhys;
                public uint dwAvailPhys;
                public uint dwTotalPageFile;
                public uint dwAvailPageFile;
                public uint dwTotalVirtual;
                public uint dwAvailVirtual;
            }
    
            /// <summary>
            /// 调用GetSystemInfo函数获取CPU的相关信息
            /// </summary>
            /// <returns></returns>
            public static string GetCPUInfo()
            {
                try
                {
                    string CPUresult = string.Empty;
                    CPU_INFO CpuInfo;
                    CpuInfo = new CPU_INFO();
                    GetSystemInfo(ref CpuInfo);
                    CPUresult += "本计算机中有" + CpuInfo.dwNumberOfProcessors.ToString() + "个CPU";
                    CPUresult += "CPU的类型为" + CpuInfo.dwProcessorType.ToString();
                    CPUresult += "CPU等级为" + String.Format("{0:N}", CpuInfo.dwProcessorLevel.ToString());
                    CPUresult += "CPU的OEM ID为" + String.Format("{0:N}", CpuInfo.dwOemId.ToString());
                    CPUresult += "CPU中的页面大小为" + String.Format("{0:N}", CpuInfo.dwPageSize.ToString());
    
                    return CPUresult;
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                    return string.Empty;
                }
            }
    
            /// <summary>
            /// 调用GlobalMemoryStatus函数获取内存的相关信息
            /// </summary>
            /// <returns></returns>
            public static string GetMemoryInfo()
            {
                try
                {
                    string Memoryresult = string.Empty;
                    MEMORY_INFO MemInfo;
                    MemInfo = new MEMORY_INFO();
                    GlobalMemoryStatus(ref MemInfo);
                    Memoryresult += MemInfo.dwMemoryLoad.ToString() + "%的内存正在使用";
                    Memoryresult += "物理内存共有" + (MemInfo.dwTotalPhys) / (1024 * 1024) + " MB";
                    Memoryresult += "可使用的物理内存有" + (MemInfo.dwAvailPhys) / (1024 * 1024) + " MB";
                    Memoryresult += "交换文件总大小为" + (MemInfo.dwTotalPageFile) / (1024 * 1024) + " MB";
                    Memoryresult += "尚可交换文件大小为" + (MemInfo.dwAvailPageFile) / (1024 * 1024) + " MB";
                    Memoryresult += "总虚拟内存有" + (MemInfo.dwTotalVirtual) / (1024 * 1024) + " MB";
                    Memoryresult += "未用虚拟内存有" + (MemInfo.dwAvailVirtual) / (1024 * 1024) + " MB";
    
                    return Memoryresult;
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                    return string.Empty;
                }
            }
        }
     /// <summary>
            /// 根据PID结束指定进程
            /// </summary>
            /// <param name="pid"></param>
            public static bool EndProcess(int pid)
            {
                try
                {
                    Process process = Process.GetProcessById(pid);
                    process.Kill();
                    return true;
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                    return false;
                }
            }
    
            /// <summary>
            /// 监控线程的运行情况,如果退出,则记录退出的错误码和退出时间
            /// </summary>
            /// <param name="pid"></param>
            /// <returns></returns>
            public static string MonitorProcess(int pid)
            {
                string Message = string.Empty;
                try
                {
                    Process process = Process.GetProcessById(pid);
                    if (process.HasExited)
                    {
                        Message = string.Format("ExitCode:{0};ExitTime:{1}", process.ExitCode, process.ExitTime.ToString("yyyy年MM月dd HH时mm分ss秒"));
                    }
                    return Message;
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                    return string.Empty;
                }
            }
            /// <summary>
            /// 调用GetSystemInfo函数获取CPU的相关信息,获取CPU占用率
            /// </summary>
            /// <returns></returns>
            public static string GetCPUInfo()
            {
                string CPUresult = string.Empty;
                try
                {
                    PerformanceCounter pcCpuLoad = new PerformanceCounter("Processor", "% Processor Time", "_Total");
                    pcCpuLoad.MachineName = ".";
                    pcCpuLoad.NextValue();
                    float cpuLoad = pcCpuLoad.NextValue();
                    string.Format("CPU占用率:{0} %",cpuLoad);
                    return CPUresult;
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                    return string.Empty;
                }
            }

    C#获取客服端ip和用户名:

    1. 在asp.Net中专用属性: 
            获取服务器电脑名:page.server.manchinename 
            获取用户信息:page.user 
            获取客户端电脑名:page.request.userhostname 
            获取客户端电脑ip:page.request.userhostaddress 
    
     2. 在网络编程中的通用方法: 
            获取当前电脑名:static system.Net.dns.gethostname() 
            根据电脑名取出全部ip地址:static system.Net.dns.resolve(电脑名).addresslist 
            也可根据ip地址取出电脑名:static system.Net.dns.resolve(ip地址).hostname 
    
     3. 系统环境类的通用属性: 
            当前电脑名:static system.environment.machinename 
            当前电脑所属网域:static system.environment.userdomainname 
            当前电脑用户:static system.environment.username
    
              举例子来说明:
    
              using system.Net; 
                  private void buttonip_click(object sender, system.eventargs e) 
                  { 
                      system.Net.ipaddress[] addresslist = dns.gethostbyname(dns.gethostname()).addresslist; 
                      if (addresslist.length>1) 
                      {   
                          textlip.text = addresslist[0].tostring(); 
                          textsip.text = addresslist[1].tostring(); 
                      } 
                     else 
                     { 
                          textlip.text = addresslist[0].tostring(); 
                          textsip.text = "没有可用的连接"; 
                     }
                 }
     
  • 相关阅读:
    Java——多线程之方法详解
    Java——深入理解Java异常体系
    Java——Java代码的执行顺序
    Java——抽象类与接口的前世今生
    存储系列之 LUN 和 LVM
    存储系列之 RAID技术原理简介
    存储系列之 硬盘接口与SCSI总线协议
    存储系列之 介质(软盘、硬盘、固态)和磁盘寻址
    Redis设计原理简介
    MySQL InnoDB索引介绍以及在线添加索引实例分析
  • 原文地址:https://www.cnblogs.com/kennyliu/p/3734116.html
Copyright © 2011-2022 走看看