获取 CPU 使用率
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Gauges;
type
_SYSTEM_PERFORMANCE_INFORMATION = record
IdleTime: LARGE_INTEGER;
Reserved: array[0..75] of DWORD;
end;
PSystemPerformanceInformation = ^TSystemPerformanceInformation;
TSystemPerformanceInformation = _SYSTEM_PERFORMANCE_INFORMATION;
_SYSTEM_BASIC_INFORMATION = record
Reserved1: array[0..23] of Byte;
Reserved2: array[0..3] of Pointer;
NumberOfProcessors: UCHAR;
end;
PSystemBasicInformation = ^TSystemBasicInformation;
TSystemBasicInformation = _SYSTEM_BASIC_INFORMATION;
_SYSTEM_TIME_INFORMATION = record
KeBootTime: LARGE_INTEGER;
KeSystemTime: LARGE_INTEGER;
ExpTimeZoneBias: LARGE_INTEGER;
CurrentTimeZoneId: ULONG;
end;
PSystemTimeInformation = ^TSystemTimeInformation;
TSystemTimeInformation = _SYSTEM_TIME_INFORMATION;
type
TForm1 = class(TForm)
Gauge1: TGauge;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function NtQuerySystemInformation(
SystemInformationClass: UINT;
SystemInformation: Pointer;
SystemInformationLength: ULONG;
ReturnLength: PULONG): Integer; stdcall; external 'ntdll.dll';
var
FOldIdleTime: LARGE_INTEGER;
FOldSystemTime: LARGE_INTEGER;
Form1: TForm1;
implementation
{$R *.dfm}
function GetCPURate: Byte;
var
PerfInfo: TSystemPerformanceInformation;
TimeInfo: TSystemTimeInformation;
BaseInfo: TSystemBasicInformation;
IdleTime: INT64;
SystemTime: INT64;
begin
Result := 0;
if NtQuerySystemInformation(3, @TimeInfo, SizeOf(TimeInfo), nil) <> NO_ERROR then
Exit;
if NtQuerySystemInformation(2, @PerfInfo, SizeOf(PerfInfo), nil) <> NO_ERROR then
Exit;
if NtQuerySystemInformation(0, @BaseInfo, SizeOf(BaseInfo), nil) <> NO_ERROR then
Exit;
if (FOldIdleTime.QuadPart <> 0) and (BaseInfo.NumberOfProcessors <> 0) then
begin
IdleTime := PerfInfo.IdleTime.QuadPart - FOldIdleTime.QuadPart;
SystemTime := TimeInfo.KeSystemTime.QuadPart - FOldSystemTime.QuadPart;
if SystemTime <> 0 then
Result := Trunc(100.0 - (IdleTime / SystemTime) * 100.0 / BaseInfo.NumberOfProcessors);
end;
FOldIdleTime := PerfInfo.IdleTime;
FOldSystemTime := TimeInfo.KeSystemTime;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
self.Caption := inttostr(GetCPURate);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
gauge1.Progress := GetCPURate;
end;
end.
分享到:
相关推荐
在IT领域,特别是系统监控与性能分析中,获取CPU占用率是评估系统健康状况和优化资源分配的关键步骤。本文将详细解析如何使用Java语言来获取CPU占用率,这不仅涉及了基本的Java编程技巧,还深入到了操作系统级别的...
在Android平台上,获取CPU使用率和内存实时数据是开发者进行性能监控、优化应用或实现系统监控功能的关键步骤。本文将详细介绍如何在Android中获取这些关键信息,并提供相关的代码示例。 首先,我们要理解CPU使用率...
在IT领域,尤其是在系统监控和性能分析中,了解如何获取CPU占用率对于开发者和系统管理员至关重要。本项目专注于使用C#编程语言实现一个任务管理器功能,特别关注于获取CPU占用率较高的前三个进程,这对于识别系统...
通过编程方式获取CPU使用率,可以帮助开发者了解程序运行时对系统资源的占用情况,从而优化程序性能。以下是一些关于如何使用VC++(MFC库)和其他相关工具来获取CPU使用率的知识点。 首先,VC++中的MFC库并没有直接...
以下是一个简单的示例,展示了如何在Linux上使用标准I/O流和文件解析来获取CPU使用率: ```cpp #include #include #include // 解析/proc/stat文件 std::vector<unsigned long long> parseStatFile(const std::...
在C++编程中,获取CPU使用率是一项常见的需求,无论是为了监控系统性能,还是分析某个特定进程的资源消耗。本文将详细讲解如何使用C++来获取系统整体的CPU使用率以及单个进程的CPU使用率。 首先,我们需要理解CPU...
标题中提到的“delphi调用C#DLL获取cpu使用率”说明了本次讨论的两个主要知识点:一是Delphi编程语言,二是C#语言创建的动态链接库(DLL)文件的应用。 在Delphi中调用C#生成的DLL文件,涉及到跨语言交互和系统级...
- 使用`GetProcessTimes`获取CPU使用率。 - 最后,程序可能会将这些信息打印出来或保存到文件中。 6. **注意事项**: 获取其他进程的信息需要足够的权限,一般需要`PROCESS_QUERY_INFORMATION`和`PROCESS_VM_...
linux c程序获取cpu使用率及内存使用情况
在编程领域,获取CPU占用率是一项常见的任务,特别是在系统监控、性能分析以及资源管理的场景中。VC 6,全称Visual C++ 6.0,是微软开发的一款经典C++集成开发环境。通过VC 6编写的代码,我们可以利用Windows API来...
使用VB C语言 获取电脑CPU使用率,小巧实用,小内存使用,堪比鲁大师(说笑而已),完全代码公开,全解注释,直接F5运行,完全自己手动编写,适合有兴趣的猿员人们研究,桌面显示实时监控!!CPU使用率源代码,CPU使用...
标题中的"获取CPU占用率、物理内存、硬盘源码,修正支持win10"指出,这是一段用于监测Windows 10系统硬件资源利用率的代码。下面将详细介绍这个主题,并基于描述中提到的代码来源进行解析。 首先,我们要了解如何在...
在Qt库中,并没有直接提供获取CPU使用率的API。因此,我们需要借助于操作系统提供的接口,例如在Unix/Linux系统中,可以使用`/proc`文件系统或者`psutil`库(Python第三方库,可以跨平台使用);在Windows系统中,...
JavaScript获取CPU使用率的方法主要分为两种情况:一种是通过ActiveXObject在特定环境下获取,另一种是通过模拟计算来估算。这两种方法都有其局限性,但可以在不同的场景下提供一定的参考。 首先,如果允许使用HTA...
在IT领域,尤其是在系统监控和性能分析中,获取CPU使用率和内存信息是至关重要的任务。QT是一个跨平台的C++开发框架,它提供了一系列API和工具,使得开发者能够轻松地实现这些功能。本文将详细讲解如何使用QT来获取...
### vb获取CPU使用率 在本篇文章中,我们将探讨如何使用Visual Basic (VB) 编程语言来获取计算机CPU的使用率。对于那些对系统监控、性能分析或资源管理感兴趣的开发者来说,这是一个非常实用的功能。 #### 一、...
这是Linux下获取CPU占用率的源代码,已在CentOS上验证通过,能够获取CPU实时的占用率,代码实现获取CPU占用率
在Linux系统中,使用Qt库开发应用程序时,可以利用各种系统接口来获取CPU使用率、内存占用、网络流量、磁盘I/O速度以及磁盘剩余空间等关键信息。以下将详细讲解如何通过Qt来实现这些功能。 1. CPU使用率: 在Linux...
在Windows系统中,我们可以使用`GetSystemTimes`函数来获取CPU使用时间,并通过`GlobalMemoryStatusEx`获取内存使用信息。在Linux和macOS中,我们可以读取`/proc/stat`和`/proc/meminfo`文件,这些文件包含了系统的...
在这个场景中,我们讨论的是一个使用易语言编写的源码,用于获取进程中CPU的占用率,甚至还能获取CPU的核心数量,这对于多线程编程和系统资源管理特别有帮助。 首先,我们需要理解什么是CPU占用率。CPU占用率是指...