`
weizhai12
  • 浏览: 144835 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

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