`
- 浏览:
144835 次
- 性别:
- 来自:
深圳
-
C#获取CPU占用率、内存占用、磁盘占用、进程信息
以下是代码片段:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Diagnostics;
usingSystem.Threading;
usingSystem.IO;
usingSystem.Text;
usingSystem.Management;
usingSystem.Runtime.InteropServices;
namespaceLemony.SystemInfo
{
///
///系统信息类-获取CPU、内存、磁盘、进程信息
///
publicclassSystemInfo
{
privateintm_ProcessorCount=0;//CPU个数
privatePerformanceCounterpcCpuLoad;//CPU计数器
privatelongm_PhysicalMemory=0;//物理内存
privateconstintGW_HWNDFIRST=0;
privateconstintGW_HWNDNEXT=2;
privateconstintGWL_STYLE=(-16);
privateconstintWS_VISIBLE=268435456;
privateconstintWS_BORDER=8388608;
#regionAIP声明
[DllImport("IpHlpApi.dll")]
externstaticpublicuintGetIfTable(byte[]pIfTable,refuintpdwSize,boolbOrder);
[DllImport("User32")]
privateexternstaticintGetWindow(inthWnd,intwCmd);
[DllImport("User32")]
privateexternstaticintGetWindowLongA(inthWnd,intwIndx);
[DllImport("user32.dll")]
privatestaticexternboolGetWindowText(inthWnd,StringBuildertitle,intmaxBufSize);
[DllImport("user32",CharSet=CharSet.Auto)]
privateexternstaticintGetWindowTextLength(IntPtrhWnd);
#endregion
#region构造函数
///
///构造函数,初始化计数器等
///
publicSystemInfo()
{
//初始化CPU计数器
pcCpuLoad=newPerformanceCounter("Processor","%ProcessorTime","_Total");
pcCpuLoad.MachineName=".";
pcCpuLoad.NextValue();
//CPU个数
m_ProcessorCount=Environment.ProcessorCount;
//获得物理内存
ManagementClassmc=newManagementClass("Win32_ComputerSystem");
ManagementObjectCollectionmoc=mc.GetInstances();
foreach(ManagementObjectmoinmoc)
{
if(mo["TotalPhysicalMemory"]!=null)
{
m_PhysicalMemory=long.Parse(mo["TotalPhysicalMemory"].ToString());
}
}
}
#endregion
#regionCPU个数
///
///获取CPU个数
///
publicintProcessorCount
{
get
{
returnm_ProcessorCount;
}
}
#endregion
#regionCPU占用率
///
///获取CPU占用率
///
publicfloatCpuLoad
{
get
{
returnpcCpuLoad.NextValue();
}
}
#endregion
#region可用内存
///
///获取可用内存
///
publiclongMemoryAvailable
{
get
{
longavailablebytes=0;
//ManagementObjectSearchermos=newManagementObjectSearcher("SELECT*FROMWin32_PerfRawData_PerfOS_Memory");
//foreach(ManagementObjectmoinmos.Get())
//{
//availablebytes=long.Parse(mo["Availablebytes"].ToString());
//}
ManagementClassmos=newManagementClass("Win32_OperatingSystem");
foreach(ManagementObjectmoinmos.GetInstances())
{
if(mo["FreePhysicalMemory"]!=null)
{
availablebytes=1024*long.Parse(mo["FreePhysicalMemory"].ToString());
}
}
returnavailablebytes;
}
}
#endregion
#region物理内存
///
///获取物理内存
///
publiclongPhysicalMemory
{
get
{
returnm_PhysicalMemory;
}
}
#endregion
#region获得分区信息
///
///获取分区信息
///
publicListGetLogicalDrives()
{
Listdrives=newList();
ManagementClassdiskClass=newManagementClass("Win32_LogicalDisk");
ManagementObjectCollectiondisks=diskClass.GetInstances();
foreach(ManagementObjectdiskindisks)
{
//DriveType.Fixed为固定磁盘(硬盘)
if(int.Parse(disk["DriveType"].ToString())==(int)DriveType.Fixed)
{
drives.Add(newDiskInfo(disk["Name"].ToString(),long.Parse(disk["Size"].ToString()),long.Parse(disk["FreeSpace"].ToString())));
}
}
returndrives;
}
///
///获取特定分区信息
///
///盘符
publicListGetLogicalDrives(charDriverID)
{
Listdrives=newList();
WqlObjectQuerywmiquery=newWqlObjectQuery("SELECT*FROMWin32_LogicalDiskWHEREDeviceID=’"+DriverID+":’");
ManagementObjectSearcherwmifind=newManagementObjectSearcher(wmiquery);
foreach(ManagementObjectdiskinwmifind.Get())
{
if(int.Parse(disk["DriveType"].ToString())==(int)DriveType.Fixed)
{
drives.Add(newDiskInfo(disk["Name"].ToString(),long.Parse(disk["Size"].ToString()),long.Parse(disk["FreeSpace"].ToString())));
}
}
returndrives;
}
#endregion
#region获得进程列表
///
///获得进程列表
///
publicListGetProcessInfo()
{
ListpInfo=newList();
Process[]processes=Process.GetProcesses();
foreach(Processinstanceinprocesses)
{
try
{
pInfo.Add(newProcessInfo(instance.Id,
instance.ProcessName,
instance.TotalProcessorTime.TotalMilliseconds,
instance.WorkingSet64,
instance.MainModule.FileName));
}
catch{}
}
returnpInfo;
}
///
///获得特定进程信息
///
///进程名称
publicListGetProcessInfo(stringProcessName)
{
ListpInfo=newList();
Process[]processes=Process.GetProcessesByName(ProcessName);
foreach(Processinstanceinprocesses)
{
try
{
pInfo.Add(newProcessInfo(instance.Id,
instance.ProcessName,
instance.TotalProcessorTime.TotalMilliseconds,
instance.WorkingSet64,
instance.MainModule.FileName));
}
catch{}
}
returnpInfo;
}
#endregion
#region结束指定进程
///
///结束指定进程
///
///进程的ProcessID
publicstaticvoidEndProcess(intpid)
{
try
{
Processprocess=Process.GetProcessById(pid);
process.Kill();
}
catch{}
}
#endregion
#region查找所有应用程序标题
///
///查找所有应用程序标题
///
///应用程序标题范型
publicstaticListFindAllApps(intHandle)
{
ListApps=newList();
inthwCurr;
hwCurr=GetWindow(Handle,GW_HWNDFIRST);
while(hwCurr>0)
{
intIsTask=(WS_VISIBLE|WS_BORDER);
intlngStyle=GetWindowLongA(hwCurr,GWL_STYLE);
boolTaskWindow=((lngStyle&IsTask)==IsTask);
if(TaskWindow)
{
intlength=GetWindowTextLength(newIntPtr(hwCurr));
StringBuildersb=newStringBuilder(2*length+1);
GetWindowText(hwCurr,sb,sb.Capacity);
stringstrTitle=sb.ToString();
if(!string.IsNullOrEmpty(strTitle))
{
Apps.Add(strTitle);
}
}
hwCurr=GetWindow(hwCurr,GW_HWNDNEXT);
}
returnApps;
}
#endregion
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
c#控制台示例程序 封装两个类 一个获取系统的CPU和内存占用率 一个获取指定进程的CPU和内存占用率 支持获取多个所有同名进程的信息
当有了进程对象后,可以通过进程对象名称来创建PerformanceCounter类型对象,通过设定PerformanceCounter构造函数的参数实现获取特定进程的CPU和内存使用情况。 具体实例代码如下: 首先是获取本机中所有进程对象,...
可以查看当前系统运行的各进程cpu占用率 在CSDN上找到两个都不太好用,自己写了一个VS2013环境下编译通过 也可以直接运行\bin\Debug目录下的ConsoleApplication1.exe文件 用途:查看自己写的程序那个线程运行时间...
C#获取CPU、内存、硬盘当前使用百分比函数。
为获取CPU占用率,找了很多资料, 大部分都不合用, 找到了人家做的, 但又是图形界面下的, 于是又改造了一个控制台版本, 感觉还不错。
内存使用率、总CPU百分比、获得物理总内存(、获得可用内存(G)、获取mac地址、获取分区信息使用空间 进程(XX)CPU百分比、进程(XX)占用的内存大小、进程(XX)占用的内存百分比。 PerformanceCount方面比较详细,...
C#获取CPU以及内存使用率的程序,有源码,使用Visual Studio 2013编译以及在Windows 8下调试。 蓝奏云下载链接:https://gfdgdxi.lanzous.com/b01nmiq4f 百度网盘下载链接:...
C#2.0进程CPU占用率,使用性能计数器实现,控制台程序
根据进程ID获取进程的内存使用量,CPU使用率,线程个数据信息,GetSysInfo
用c#代码实现,cpu实时利用率显示!!
c#获取系统cpu级内存使用情况,点击开始监控后可以得知cpu和内存使用情况。为什么非要我写到20的字?????
C# 获取网络流量与CPU使用率,C# 获取网络流量与CPU使用率,感兴趣的赶紧下载
C#检测cpu使用率,内存使用率的一个小工具
C#实现窗口显示CPU使用率内存占用率查看。
C#开发的操作系统任务进程信息监控 CPU使用率 内存使用率 和操作系统的任务管理器功能基本相同。希望对大家有所帮助。
使用C#版进行windows系统cpu使用率监控源码。测试时,与资源管理器的cpu使用率数值稍有不同,但是趋势是一致的。可以多采样几个点,取平均值。
1、记录每台服务器(本机)1~24小时的内存使用情况 2、记录每台服务器(本机)CPU负荷使用情况 3、记录每台服务器(本机)磁盘、网络的io流量统计 此程序是没分钟记录一次,然后自动写入Word文档。程序是自动创建...
获取当前所有进程线程Cpu占用率,系统进程管理源代码
自己写的控制台应用程序,获取的硬件信息2秒检测一次生成XML保存下来