DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: laidabin
今日帖子: 8
在线用户: 25
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 chencong5025 (Nicosoft) ▲▲▲△△ -
普通会员
2019/7/30 13:24:55
标题:
求助 获取CPU使用率[全局] 获取CPU温度 浏览:1224
加入我的收藏
楼主: 不使用WMI 获取CPU使用率以及温度。

= =#百毒+谷狗 翻了好几轮都没有靠谱的方案

MiTeC System Information Component Suite
翻到这个功能到时挺全,但是依旧没有温度的读取方案。

不知道大家可有好的方案么?
----------------------------------------------
-
作者:
男 star5 (星五) ★☆☆☆☆ -
盒子活跃会员
2019/7/30 17:42:28
1楼: 获取cpu使用率和进程cpu使用率,问题不大,温度还真从来没取过。。。

网上找了一段,你试试?

 type
    TBus           = (ISA, SMBus, VIA686ABus, DirectIO);
    TSMB           = (SMBIntel, SMBAMD, SMBALi);
  type
    TSharedData = Record
      STemperature       : array [1..10]  of Integer;  
      SVoltage           : array [1..10]  of Real;     
      SFan               : array [1..10]  of Integer;   
      SMHZ               : Integer;                     
      SNrCPU             : Byte;                        
      SCPUUsage          : array [1..4]     of Real;    
    end;
    TSharedInfo = Record
      SMBM_Version       : array [0..10]  of Char;      
      SSMB_Base          : Word;                        
      SSMB_Type          : TBus;                        
      SSMB_Code          : TSMB;                        
      SSMB_Addr          : Byte;                        
      SSMB_Name          : array [0..40]  of Char;      
      SISA_Base          : Word;                        
      SChipType          : Integer;                     
      SVoltageSubType    : Byte;                        
    end;
    TSharedHL = Record                                  
      STempC             : array [1..10]  of LongInt;   
      STempA             : array [1..10]  of Extended;  
      STempL             : array [1..10]  of Real;      
      STempH             : array [1..10]  of Real;      
      SVoltC             : array [1..10]  of LongInt;   
      SVoltA             : array [1..10]  of Extended;  
      SVoltL             : array [1..10]  of Real;      
      SVoltH             : array [1..10]  of Real;      
      SFanC              : array [1..10]  of LongInt;   
      SFanA              : array [1..10]  of Extended;  
      SFanL              : array [1..10]  of Real;      
      SFanH              : array [1..10]  of Real;      
      SStart             : array [0..40]  of Char;      
      SCurrent           : array [0..40]  of Char;      
      SCPUC              : array [1..4]   of LongInt;   
      SCPUA              : array [1..4]   of Extended;  
      SCPUL              : array [1..4]   of Real;      
      SCPUH              : array [1..4]   of Real;      
    end;
    TSharedName = Record
      STempName       : array [1..10] of array [0..10] of Char;  
      SVoltName       : array [1..10] of array [0..10] of Char;  
      SFanName        : array [1..10] of array [0..10] of Char;  
      SCPUName        : array [0..10] of Char;                   
      SCPUUSageName   : array [0..10] of Char;                    
    end;
  PSharedData = ^TSharedData;
  PSharedInfo = ^TSharedInfo;
  PSharedHL   = ^TSharedHL;
  PSharedName = ^TSharedName;
var
  CPUMhz            : Integer;
  CPUNr             : Byte;
  Temperature       : array [1..10]  of Integer
  Voltage           : array [1..10]  of Real;
  Fan               : array [1..10]  of Integer;
  CPU               : array [1..4]   of Real;
  UsedBus           : TBus;
  IsaBase           : Word;
  SMB_BASE          : Word;
  SMBusType         : TSMB;
  SMB_NAME          : String;
  SMBChipAddress    : Byte;
  ChipType          : Integer;
  TempL             : array[1..10] of Real;
  TempH             : array[1..10] of Real;
  TempA             : array[1..10] of Extended;
  TempC             : array[1..10] of LongInt;
  VoltL             : array[1..10] of Real;
  VoltH             : array[1..10] of Real;
  VoltA             : array[1..10] of Extended;
  VoltC             : array[1..10] of LongInt;
  FanL              : array[1..10] of Real;
  FanH              : array[1..10] of Real;
  FanA              : array[1..10] of Extended;
  FanC              : array[1..10] of LongInt;
  StartingTimeLog   : String;
  CurrentTimeLog    : String;
  CPUL              : array[1..4]  of Real;
  CPUH              : array[1..4]  of Real;
  CPUA              : array[1..4]  of Extended;
  CPUC              : array[1..4]  of LongInt;  
  TempName          : array[1..10] of String;
  VoltName          : array[1..10] of String;
  FanName           : array[1..10] of String;
  CPUName           : String;
  CPUUsageName      : String;
function ReadSharedData : Boolean;
function ReadSharedInfo : Boolean;
function ReadSharedHL   : Boolean;
function ReadSharedName : Boolean;
implementation
function ReadSharedData : Boolean;
var
  PSH          : PSharedData;
  hSData       : Integer;
  X            : Integer;
begin
  Result:=False;
  hSData:=OpenFileMapping(FILE_MAP_READ, False, '$M$B$M$5$D$');
  if hSData=0 then Exit;
  PSH:=MapViewOfFile(hSData, FILE_MAP_READ, 0, 0, 0);
  if PSH=Nil then
  begin
    CloseHandle(hSData);
    Exit;
  end;
  with PSH^ do
  begin
    for X:=1 to 10 do Temperature[X]:=STemperature[X];
    for X:=1 to 10 do Voltage[X]:=SVoltage[X];
    for X:=1 to 10 do Fan[X]:=SFan[X];
    CPUMHZ:=SMHZ;
    CPUNr:=SNrCPU;
    for X:=1 to 4 do CPU[X]:=SCPU[X];
  end;
  UnMapViewOfFile(PSH);
  CloseHandle(hSData);
  Result:=True;
end;
function ReadSharedInfo : Boolean;
var
  PSH          : PSharedInfo;
  hSInfo       : Integer;
begin
  Result:=False;
  hSInfo:=OpenFileMapping(FILE_MAP_READ, False, '$M$B$M$5$I$');
  if hSInfo=0 then Exit;
  PSH:=MapViewOfFile(hSInfo, FILE_MAP_READ, 0, 0, 0);
  if PSH=Nil then
  begin
    CloseHandle(hSInfo);
    Exit;
  end;
  with PSH^ do
  begin
    SMB_Base:=SSMB_Base;
    UsedBus:=SSMB_Type;
    SmbusType:=SSMB_Code;
    SMBChipAddress:=SSMB_Addr;
    SMB_Name:=StrPas(SSMB_Name);
    ISABase:=SISA_Base;
    ChipType:=SChipType;
    VoltageSubType:=SVoltageSubType;
  end;
  UnMapViewOfFile(PSH);
  CloseHandle(hSInfo);
  Result:=True;
end;
function ReadSharedHL : Boolean;
var
  PSH          : PSharedHL;
  hSHL         : Integer;
  X            : Integer;
begin
  Result:=False;
  hSHL:=OpenFileMapping(FILE_MAP_READ, False, '$M$B$M$5$H$');
  if hSHL =0 then Exit;
  PSH:=MapViewOfFile(hSHL, FILE_MAP_READ, 0, 0, 0);
  if PSH=Nil then
  begin
    CloseHandle(hSHL);
    Exit;
  end;
  with PSH^ do
  begin
    for X:=1 to 10 do
    begin
      TempL[X]:=STempL[X];
      TempH[X]:=STempH[X];
      TempA[X]:=STempA[X];
      TempC[X]:=STempC[X];
    end;
    for X:=1 to 10 do
    begin
      VoltL[X]:=SVoltL[X];
      VoltH[X]:=SVoltH[X];
      VoltA[X]:=SVoltA[X];
      VoltC[X]:=SVoltC[X];
    end;
    for X:=1 to 10 do
    begin
      FanL[X]:=SFanL[X];
      FanH[X]:=SFanH[X];
      FanA[X]:=SFanA[X];
      FanC[X]:=SFanC[X];
    end;
    StartingTimeLog:=StrPas(SStart);
    CurrentTimeLog:=StrPas(SCurrent);
    for X:=1 to 4 do
    begin
      CPUL[X]:=SCPUL[X];
      CPUH[X]:=SCPUH[X];
      CPUA[X]:=SCPUA[X];
      CPUC[X]:=SCPUC[X];
    end;
  end;
  UnMapViewOfFile(PSH);
  CloseHandle(hSHL);
  Result:=True;
end;
function ReadSharedName : Boolean;
var
  PSH          : PSharedName;
  hSData       : Integer;
  X            : Integer;
begin
  Result:=False;
  hSData:=OpenFileMapping(FILE_MAP_READ, False, '$M$B$M$5$N$');
  if hSData=0 then Exit;
  PSH:=MapViewOfFile(hSData, FILE_MAP_READ, 0, 0, 0);
  if PSH=Nil then
  begin
    CloseHandle(hSData);
    Exit;
  end;
  with PSH^ do
  begin
    for X:=1 to 10 do TempName[X]:=StrPas(STempName[X])
    for X:=1 to 10 do VoltName[X]:=StrPas(VoltName[X])
    for X:=1 to 10 do FanName[X]:=StrPas(FanName[X])
    CPUName:=StrPas(SCPUName);
    CPUUsageName:=StrPas(SCPUName);
  end;
  UnMapViewOfFile(PSH);
  CloseHandle(hSData);
  Result:=True;
end;
----------------------------------------------
博客 - http://offeu.com
脚本模型 - http://webpascal.com
需要短信接口的请联系我,可发行业与营销内容。
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2019/7/30 20:42:11
2楼: jcl好像可以读。
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2019/7/30 21:34:48
3楼: 我手上win7能读的 要驱动 驱动无码。。。
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 chencong5025 (Nicosoft) ▲▲▲△△ -
普通会员
2019/7/30 22:35:58
4楼: @keymark 
我听说 winring0  驱动可以读,有签名 win10 可加载。但是不知道如何调用。
----------------------------------------------
-
作者:
男 chencong5025 (Nicosoft) ▲▲▲△△ -
普通会员
2019/7/30 22:36:28
5楼: @tuesdays
在提供点线索呗。。
----------------------------------------------
-
作者:
男 lzj7015 (lzj) ★☆☆☆☆ -
普通会员
2019/7/31 8:40:41
6楼: 细查windows sdk 必定能找到解决办法。
使用Intel ipp能获得 cpu 的一切信息,但在Delphi中调用较烦难。
----------------------------------------------
-
作者:
男 chencong5025 (Nicosoft) ▲▲▲△△ -
普通会员
2019/7/31 12:54:56
7楼: @lzj7015

有驱动可以加载驱动读取。据说有个winring0的驱动
----------------------------------------------
-
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2019/8/1 12:34:02
8楼: 1
此帖子包含附件:keymark_20198112342.rar 大小:44.3K
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2019/8/1 12:34:17
9楼: 2
此帖子包含附件:keymark_201981123417.rar 大小:36.3K
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2019/8/1 12:35:43
10楼: 3
此帖子包含附件:keymark_201981123541.zip 大小:718.6K
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2019/8/1 12:38:46
11楼: 4
此帖子包含附件:keymark_201981123845.rar 大小:501.2K
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 chencong5025 (Nicosoft) ▲▲▲△△ -
普通会员
2019/8/3 13:00:10
12楼: @keymark

关键是不会用 = =#
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行175.7813毫秒 RSS