`
- 浏览:
12034503 次
- 性别:
- 来自:
深圳
-
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
相关推荐
1. 获取指定进程CPU占用率: - 创建一个`Process`对象,传入进程ID或者进程名称。 - 调用`Process`对象的`PercentProcessorTime`属性,它返回进程在最近一段时间内的CPU使用率。 2. 获取指定进程内存占用率: - ...
其中,`Process`类用于获取当前进程的信息,`PerformanceCounter`类则用于监视各种性能计数器,包括CPU和内存的使用情况。 1. **获取CPU使用情况**: - 使用`PerformanceCounter`类的`CategoryName`属性设置为...
内存使用率、总CPU百分比、获得物理总内存(、获得可用内存(G)、获取mac地址、获取分区信息使用空间 进程(XX)CPU百分比、进程(XX)占用的内存大小、进程(XX)占用的内存百分比。 PerformanceCount方面比较详细,...
在C#编程中,检测CPU和内存使用率是常见的系统监控任务,这有助于优化应用程序性能、排查资源占用问题。下面将详细介绍如何使用C#来实现这一功能。 首先,我们需要了解CPU使用率和内存使用率的基本概念。CPU使用率...
本文将深入探讨如何使用C#语言来获取并显示计算机的硬件状态,包括CPU温度、CPU占用率、显卡温度、GPU占用率、风扇转速、内存使用率以及磁盘读写速率。 首先,我们需要了解C#的基本编程环境和.NET框架。C#是一种...
CPU使用率通常表示CPU在一段时间内被占用的百分比,而内存占用量则指系统当前分配给各个进程的内存总量。这种实时监控功能对于系统管理员来说非常重要,可以帮助他们了解系统的运行状况,及时发现并处理可能导致性能...
工作集是指进程在物理内存中占用的空间,而虚拟内存则包括进程的全部地址空间,包括已交换到磁盘的部分。 在C#中,System.Diagnostics命名空间提供Process类,用于管理和控制进程。通过这个类,我们可以获取或设置...
这些工具不仅能提供总体的CPU利用率,还能细分到各个进程,以便分析哪个程序占用了大量的CPU资源。 在编程层面,可以使用各种编程语言的库来实现动态显示CPU利用率。例如,Python有psutil库,Java有Java Management...
- 可以使用`Process`类获取当前进程或所有进程的信息,如CPU占用率、内存使用、启动时间等。 - `System.Threading.Thread`类用于管理线程,可以获取当前线程或系统线程的信息。 7. **网络信息**: - `System.Net...
通过这些方法,我们可以获取进程ID、CPU使用率、内存占用等信息,并将它们显示在监视器中。 总的来说,构建一个C#的CPU资源监视器是一个综合性的项目,它涉及到系统层面的数据采集、处理和展示。开发者需要对C#的...
包括列出所有进程(`Process.GetProcesses()`),获取特定进程(`Process.GetProcessById()`或`Process.GetProcessByName()`),以及查看进程的CPU、内存等资源占用。 6. **1.xls**: - 这可能是包含服务器性能...
5. **内存和性能指标**:任务管理器展示了每个进程的内存使用情况和CPU占用率。在C#中,可以通过`Process`对象的`WorkingSet`属性获取进程的虚拟内存大小,`PrivateMemorySize`获取私有内存,`ProcessorTime`获取CPU...
C#的Process类可以帮助获取和管理操作系统中的进程信息,结合System.Net.NetworkInformation命名空间的功能,可以检测到非正常行为的进程,如占用大量资源、异常的网络通信等。同时,对注册表的垃圾清理也是系统优化...
1. 进程列表:模拟程序应能列出所有运行的进程,包括进程ID、进程名、CPU占用率、内存使用情况等。 2. 详细信息:展示每个进程的详细信息,如进程路径、启动时间、用户账户等。 3. 结束进程:模拟程序应提供功能,...
程序会根据预设的参数或用户自定义设置,模拟大量进程或线程的创建,同时记录和显示系统资源的使用情况,如CPU占用率、内存消耗、上下文切换频率等关键指标。测试结果可以帮助开发者分析系统在高负载下的行为,找出...
在实现"任务管理器"功能时,C#开发者会使用System.Diagnostics命名空间中的Process类来获取和管理进程信息,包括进程ID、名称、CPU使用率等。此外,Process类还允许控制进程的启动、停止和资源使用情况。 对于网络...
9. 系统性能指标:CPU占用率、内存使用情况、磁盘读写速度等。 在压缩包内的“WinAppReadSYS.exe”文件,根据文件扩展名,它是一个Windows应用程序,可能是一个用于展示或提取系统信息的工具。执行这个程序可能允许...
1. **查看进程列表**:显示所有运行的进程及其基本信息,如进程ID、CPU使用率、内存占用等。 2. **结束进程**:允许用户选择并结束特定的进程,以强制停止无响应的应用或释放资源。 3. **启动新进程**:用户可以输入...
Process类可以用来获取当前运行的进程信息,包括CPU使用率;PerformanceCounter类则用于监视各种性能计数器,如内存使用情况和磁盘活动。 其次,界面设计是360加速球的重要组成部分。C#中的Windows Forms或WPF...
2. **系统资源监控**:监控CPU使用率、内存占用、磁盘I/O和网络流量,以便于优化系统性能或预警资源瓶颈。 3. **进程和服务监控**:跟踪系统中的进程和服务状态,识别异常行为,例如高CPU消耗、无响应的服务等。 4...