`
cfeers
  • 浏览: 141333 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

获取 CPU 使用率

阅读更多

获取 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.

分享到:
评论

相关推荐

    用java获取CPU占用率

    在IT领域,特别是系统监控与性能分析中,获取CPU占用率是评估系统健康状况和优化资源分配的关键步骤。本文将详细解析如何使用Java语言来获取CPU占用率,这不仅涉及了基本的Java编程技巧,还深入到了操作系统级别的...

    android 获取cpu使用率, 内存 实时数据

    在Android平台上,获取CPU使用率和内存实时数据是开发者进行性能监控、优化应用或实现系统监控功能的关键步骤。本文将详细介绍如何在Android中获取这些关键信息,并提供相关的代码示例。 首先,我们要理解CPU使用率...

    C# 任务管理器及控制台获取CPU占用率前3位进程

    在IT领域,尤其是在系统监控和性能分析中,了解如何获取CPU占用率对于开发者和系统管理员至关重要。本项目专注于使用C#编程语言实现一个任务管理器功能,特别关注于获取CPU占用率较高的前三个进程,这对于识别系统...

    VC获取CPU使用率

    通过编程方式获取CPU使用率,可以帮助开发者了解程序运行时对系统资源的占用情况,从而优化程序性能。以下是一些关于如何使用VC++(MFC库)和其他相关工具来获取CPU使用率的知识点。 首先,VC++中的MFC库并没有直接...

    c++获取cpu使用率(包含系统和单进程)

    在C++编程中,获取CPU使用率是一项常见的需求,无论是为了监控系统性能,还是分析某个特定进程的资源消耗。本文将详细讲解如何使用C++来获取系统整体的CPU使用率以及单个进程的CPU使用率。 首先,我们需要理解CPU...

    delphi调用C#DLL获取cpu使用率

    标题中提到的“delphi调用C#DLL获取cpu使用率”说明了本次讨论的两个主要知识点:一是Delphi编程语言,二是C#语言创建的动态链接库(DLL)文件的应用。 在Delphi中调用C#生成的DLL文件,涉及到跨语言交互和系统级...

    获取CPU使用率和空闲率

    以下是一个简单的示例,展示了如何在Linux上使用标准I/O流和文件解析来获取CPU使用率: ```cpp #include #include #include // 解析/proc/stat文件 std::vector&lt;unsigned long long&gt; parseStatFile(const std::...

    Windows下用C语言获取进程cpu使用率

    - 使用`GetProcessTimes`获取CPU使用率。 - 最后,程序可能会将这些信息打印出来或保存到文件中。 6. **注意事项**: 获取其他进程的信息需要足够的权限,一般需要`PROCESS_QUERY_INFORMATION`和`PROCESS_VM_...

    linux c程序获取cpu使用率及内存使用情况

    linux c程序获取cpu使用率及内存使用情况

    vb c c# cpu使用率实时检测 获取CPU使用率

    使用VB C语言 获取电脑CPU使用率,小巧实用,小内存使用,堪比鲁大师(说笑而已),完全代码公开,全解注释,直接F5运行,完全自己手动编写,适合有兴趣的猿员人们研究,桌面显示实时监控!!CPU使用率源代码,CPU使用...

    获取CPU占用率的代码

    在编程领域,获取CPU占用率是一项常见的任务,特别是在系统监控、性能分析以及资源管理的场景中。VC 6,全称Visual C++ 6.0,是微软开发的一款经典C++集成开发环境。通过VC 6编写的代码,我们可以利用Windows API来...

    获取CPU占用率、物理内存、硬盘源码,修正支持win10

    标题中的"获取CPU占用率、物理内存、硬盘源码,修正支持win10"指出,这是一段用于监测Windows 10系统硬件资源利用率的代码。下面将详细介绍这个主题,并基于描述中提到的代码来源进行解析。 首先,我们要了解如何在...

    Qt实现的实时显示CPU使用率

    在Qt库中,并没有直接提供获取CPU使用率的API。因此,我们需要借助于操作系统提供的接口,例如在Unix/Linux系统中,可以使用`/proc`文件系统或者`psutil`库(Python第三方库,可以跨平台使用);在Windows系统中,...

    JavaScript获取当前cpu使用率的方法

    JavaScript获取CPU使用率的方法主要分为两种情况:一种是通过ActiveXObject在特定环境下获取,另一种是通过模拟计算来估算。这两种方法都有其局限性,但可以在不同的场景下提供一定的参考。 首先,如果允许使用HTA...

    获取CPU使用率内存信息.rar

    在IT领域,尤其是在系统监控和性能分析中,获取CPU使用率和内存信息是至关重要的任务。QT是一个跨平台的C++开发框架,它提供了一系列API和工具,使得开发者能够轻松地实现这些功能。本文将详细讲解如何使用QT来获取...

    RedHat Linux获取cpu占用率.docx

    在Red Hat Linux操作系统中,获取CPU占用率是监控系统性能的重要环节。这个程序是一个简单的C语言实现,用于计算CPU的使用率。它通过读取`/proc/stat`文件来获取CPU的状态信息,然后进行计算。下面我们将详细讲解...

    vb获取CPU使用率

    ### vb获取CPU使用率 在本篇文章中,我们将探讨如何使用Visual Basic (VB) 编程语言来获取计算机CPU的使用率。对于那些对系统监控、性能分析或资源管理感兴趣的开发者来说,这是一个非常实用的功能。 #### 一、...

    获取CPU占用率的源代码

    这是Linux下获取CPU占用率的源代码,已在CentOS上验证通过,能够获取CPU实时的占用率,代码实现获取CPU占用率

    Qt linux获取cpu使用率、内存、网络收发速度、磁盘读写速度、磁盘剩余空间

    在Linux系统中,使用Qt库开发应用程序时,可以利用各种系统接口来获取CPU使用率、内存占用、网络流量、磁盘I/O速度以及磁盘剩余空间等关键信息。以下将详细讲解如何通过Qt来实现这些功能。 1. CPU使用率: 在Linux...

    QT/C++实时获取CPU和内存的使用率

    在Windows系统中,我们可以使用`GetSystemTimes`函数来获取CPU使用时间,并通过`GlobalMemoryStatusEx`获取内存使用信息。在Linux和macOS中,我们可以读取`/proc/stat`和`/proc/meminfo`文件,这些文件包含了系统的...

Global site tag (gtag.js) - Google Analytics