如何编写Delphi程序来控制CPU风扇速度并监控温度?

2024-01-12

我想使用Delphi创建一个程序来控制计算机的风扇速度并监控温度。

执行此操作涉及哪些 API 调用?

有什么好的代码示例可以分享吗?


您可以使用 WMI 类Win32_温度探针 http://msdn.microsoft.com/en-us/library/aa394493%28VS.85%29.aspx and Win32_Fan http://msdn.microsoft.com/en-us/library/aa394146%28VS.85%29.aspx, 从delphi你必须导入Microsoft WMIScripting V1.x 库使用组件->导入组件->导入类型库->下一步->“选择库”->下一步->将单元添加到项目->完成。

请参阅此代码。这只是一个简单的例子。

program GetWMI_Info;

{$APPTYPE CONSOLE}

uses
  ActiveX,
  Variants,
  SysUtils,
  WbemScripting_TLB in '..\..\..\Documents\RAD Studio\5.0\Imports\WbemScripting_TLB.pas';

procedure ShowTemperatureInfo();
var
  WMIServices: ISWbemServices;
  Root       : ISWbemObjectSet;
  Item       : Variant;
  I          : Integer;
begin
 {
 http://msdn.microsoft.com/en-us/library/aa394493%28VS.85%29.aspx
 The Win32_TemperatureProbe  WMI class represents the properties of a temperature sensor (electronic thermometer).
 Most of the information that the Win32_TemperatureProbe WMI class provides comes from SMBIOS.
 Real-time readings for the CurrentReading property cannot be extracted from SMBIOS tables.
 For this reason, current implementations of WMI do not populate the CurrentReading property.
 The CurrentReading property's presence is reserved for future use.
 }

  Writeln('Temperature Info');
  Writeln('----------------');

  WMIServices := CoSWbemLocator.Create.ConnectServer('.', 'root\cimv2','', '', '', '', 0, nil);
  Root  := WMIServices.ExecQuery('Select * FROM Win32_TemperatureProbe','WQL', 0, nil);
  for I := 0 to Root.Count - 1 do
  begin
    Item := Root.ItemIndex(I);
      Writeln('Accuracy                        '+VarToStr(Item.Accuracy));
      Writeln('Availability                    '+VarToStr(Item.Availability));
      Writeln('Caption                         '+Item.Caption);
      Writeln('Config Manager Error Code       '+VarToStr(Item.ConfigManagerErrorCode));
      Writeln('Config Manager User Config      '+VarToStr(Item.ConfigManagerUserConfig));
      Writeln('Creation Class Name             '+VarToStr(Item.CreationClassName));
      Writeln('Current Reading                 '+VarToStr(Item.CurrentReading));
      Writeln('Description                     '+VarToStr(Item.Description));
      Writeln('Device ID                       '+VarToStr(Item.DeviceID));
      Writeln('Error Cleared                   '+VarToStr(Item.ErrorCleared ));
      Writeln('Error Description               '+VarToStr(Item.ErrorDescription));
      Writeln('Install Date                    '+VarToStr(Item.InstallDate));
      Writeln('Is Linear                       '+VarToStr(Item.IsLinear));
      Writeln('Last Error Code                 '+VarToStr(Item.LastErrorCode));
      Writeln('Lower Threshold Critical        '+VarToStr(Item.LowerThresholdCritical));
      Writeln('Lower Threshold Fatal           '+VarToStr(Item.LowerThresholdFatal));
      Writeln('Lower Threshold NonCritical     '+VarToStr(Item.LowerThresholdNonCritical));
      Writeln('Max Readable                    '+VarToStr(Item.MaxReadable));
      Writeln('Min Readable                    '+VarToStr(Item.MinReadable));
      Writeln('Name                            '+VarToStr(Item.Name));
      Writeln('Nominal Reading                 '+VarToStr(Item.NominalReading));
      Writeln('Normal Max                      '+VarToStr(Item.NormalMax));
      Writeln('Normal Min                      '+VarToStr(Item.NormalMin ));
      Writeln('PNP Device ID                   '+VarToStr(Item.PNPDeviceID));
      Writeln('Power Management Capabilities   '+VarToStr(Item.PowerManagementCapabilities));
      Writeln('Power Management Supported      '+VarToStr(Item.PowerManagementSupported));
      Writeln('Resolution                      '+VarToStr(Item.Resolution));
      Writeln('Status                          '+VarToStr(Item.Status));
      Writeln('Status Info                     '+VarToStr(Item.StatusInfo));
      Writeln('System Creation Class Name      '+VarToStr(Item.SystemCreationClassName));
      Writeln('System Name                     '+VarToStr(Item.SystemName));
      Writeln('Tolerance                       '+VarToStr(Item.Tolerance));
      Writeln('Upper Threshold Critical        '+VarToStr(Item.UpperThresholdCritical));
      Writeln('Upper Threshold Fatal           '+VarToStr(Item.UpperThresholdFatal));
      Writeln('Upper Threshold NonCritical     '+VarToStr(Item.UpperThresholdNonCritical));
      Writeln('');
  end;
end;

procedure  ShowCPUFanInfo();
var
  WMIServices: ISWbemServices;
  Root       : ISWbemObjectSet;
  Item       : Variant;
  I          : Integer;
begin
 {
  http://msdn.microsoft.com/en-us/library/aa394146%28VS.85%29.aspx
  The Win32_Fan WMI class represents the properties of a fan device in the computer system. For example, the CPU cooling fan.
 }
  Writeln('CPU FAN Info');
  Writeln('----------------');
  WMIServices := CoSWbemLocator.Create.ConnectServer('.', 'root\cimv2','', '', '', '', 0, nil);
  Root  := WMIServices.ExecQuery('Select * FROM Win32_Fan','WQL', 0, nil);
  for I := 0 to Root.Count - 1 do
  begin
    Item := Root.ItemIndex(I);

    Writeln('ActiveCooling                     '+VarToStr(Item.ActiveCooling));
    Writeln('Availability                      '+VarToStr(Item.Availability));
    Writeln('Caption                           '+VarToStr(Item.Caption));
    Writeln('Config Manager ErrorCode          '+VarToStr(Item.ConfigManagerErrorCode));
    Writeln('Config Manager UserConfig         '+VarToStr(Item.ConfigManagerUserConfig));
    Writeln('Creation ClassName                '+VarToStr(Item.CreationClassName));
    Writeln('Description                       '+VarToStr(Item.Description));
    Writeln('DesiredSpeed                      '+VarToStr(Item.DesiredSpeed));
    Writeln('DeviceID                          '+VarToStr(Item.DeviceID));
    Writeln('ErrorCleared                      '+VarToStr(Item.ErrorCleared));
    Writeln('ErrorDescription                  '+VarToStr(Item.ErrorDescription));
    Writeln('InstallDate                       '+VarToStr(Item.InstallDate));
    Writeln('LastErrorCode                     '+VarToStr(Item.LastErrorCode));
    Writeln('Name                              '+VarToStr(Item.Name));
    Writeln('PNPDeviceID                       '+VarToStr(Item.PNPDeviceID));
    Writeln('PowerManagement Capabilities      '+VarToStr(Item.PowerManagementCapabilities));
    Writeln('PowerManagement Supported         '+VarToStr(Item.PowerManagementSupported));
    Writeln('Status                            '+VarToStr(Item.Status));
    Writeln('StatusInfo                        '+VarToStr(Item.StatusInfo));
    Writeln('SystemCreation ClassName          '+VarToStr(Item.SystemCreationClassName));
    Writeln('SystemName                        '+VarToStr(Item.SystemName));
    Writeln('VariableSpeed                     '+VarToStr(Item.VariableSpeed));
    Writeln('');
  end;

End;


begin
  try
    CoInitialize(nil);
        ShowTemperatureInfo();
        ShowCPUFanInfo();
        Readln;
    CoUninitialize;
  except
    on E:Exception do
    Begin
        CoUninitialize;
        Writeln(E.Classname, ': ', E.Message);
        Readln;
    End;
  end;
end.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何编写Delphi程序来控制CPU风扇速度并监控温度? 的相关文章

随机推荐

  • 自动在绘图中定位文本框

    有没有办法告诉pyplot text 一个像你一样的位置pyplot legend 像 legend 论证这样的东西会很棒 plt legend loc upper left 我正在尝试使用字母 例如 A B 来标记具有不同轴的子图 我认为
  • 如何检测Safari、Chrome、IE、Firefox和Opera浏览器?

    我有 5 个适用于 Firefox Chrome Internet Explorer IE Opera 和 Safari 的插件 扩展 如何正确识别用户浏览器并重定向 单击安装按钮后 以下载相应的插件 谷歌搜索浏览器可靠检测通常会导致检查用
  • DNS问题,nslookup可以,ping不行

    我正在我的公寓里设置一个开发服务器 我已经在其上设置了一个 Ubuntu DNS 服务器 并添加了区域 weddinglist 只是 weddinglist 没有TLD http en wikipedia org wiki Top leve
  • JSON stringify 返回空字符串[重复]

    这个问题在这里已经有答案了 在 Javascript 中 我尝试使用 stringify 但它不断返回空字符串 这里有什么问题吗 请随意编辑小提琴 JS values values belopp 2322 values test jkee
  • 如何根据其中一个 Vec 的值对两个 Vec 进行共同排序?

    我有两个Vec对应于特征向量列表及其相应的类标签 我想按类标签对它们进行共同排序 然而 Rust 的sort by对切 片进行操作 而不是作为特征 或类似 上的通用函数 并且闭包仅获取要比较的元素而不是索引 因此我可以偷偷地破解排序以使其并
  • 实体属性值 (EAV) 框架?

    我见过实体属性值 http en wikipedia org wiki Entity attribute value model在我真正知道它的名字是什么之前 我已经在很多情况下了解过它 当您不是将数据存储在数据库列中 而是 翻转 它并拥有
  • 无法使用 python PIL Image.show 显示图像

    我正在使用 Python 图像库 但无法在 Windows Live 照片库中成功打开图像 显示一条消息 没有选择照片或视频 而不是图像 这是我尝试过的 import Image img Image open r C Users User
  • ARM Cortex M4 SVC_Handler“UsageFault”

    我正在为个人迷你 ARM 内核项目创建一个上下文切换程序 并且该上下文切换程序完全用汇编语言编写 问题是 当我进行 SVC 调用 svc 0 时 我会输入 SVC Handler 但是当我尝试执行下一条指令时 我会输入不同的处理程序 Usa
  • Logstash 配置错误 - amazon_es

    我正在尝试第一次配置我的logstash conf 文件并输出到amazon es 我的整个Logstash conf文件在这里 input jdbc jdbc connection string gt jdbc mysql localho
  • UIScrollView 中的奇怪 UIImageView

    非常奇怪的行为 使用此代码的屏幕中心有一个圆点 并且笔尖中没有任何内容的 UIScrollview 我希望 UIScrollview 应该为空 当我滚动屏幕时 该点会模糊并消失 void viewDidLoad super viewDidL
  • 返回 lambda 表达式的函数

    我想知道是否可以在 C 11 中编写一个返回 lambda 函数的函数 当然 一个问题是如何声明这样的函数 每个 lambda 都有一个类型 但该类型无法用 C 表达 我认为这不会起作用 auto retFun gt decltype in
  • 布尔值上的 ng-repeat 过滤器

    我正在尝试过滤 ng repeat 中的布尔值 未注册用户列表 h3 Unregistered Users h3 div div class row fluid div class span2 user name div div div 注
  • 如何在侧边栏中添加带有链接的图像 - MediaWiki

    我可以通过这种方式添加 MediaWiki 侧边栏的链接 some url url text 但是 如何在不破坏核心或标准模板的情况下添加图像而不是文本呢 我读过这个 http www mediawiki org wiki Manual t
  • 安装了 Sql Server 的 Ubuntu 16.04 上 Pyodbc 安装错误

    我正在尝试测试我的数据迁移脚本mssql server to oracle server 为此 我必须安装pyodbc python包用于Ubuntu 它具有依赖关系unixodbc 当我尝试安装时unixodbc dev using su
  • 在 TextView 中正确渲染 unicode 字符?

    我收到从服务器发送给我的字符串 我的应用程序在 Android 上运行 其中一个字符是 unicode 符号 它是一个音符 我从服务器获取字符串响应 然后将其直接传递给 TextView 这是应该出现的内容 但我只看到一个块 有点像 当我将
  • 使用sql将数据从文件csv导入到Oracle

    我正在使用 Oracle 10g SQL Developer 我想知道是否有任何方法可以使用 sql 查询从 CSV 文件导入数据 其中字段以 分隔 行以 n 结尾 我尝试了这个查询 LOAD DATA INFILE C tmp csv I
  • 如何通过 CLI 获取 AWS 目标组中注册目标的列表

    我们正在尝试获取目标组中已注册目标 实例 的状态 这可以通过命令来完成aws elbv2 describe target health target group arn TG targets Id ID Port PORT 参考 https
  • 从 SQLAlchemy 中声明性定义的实例获取主键的通用方法

    SQLAlchemy 是否提供generic从声明性定义的实例获取主键的方法 因此如果 Base declarative base class MyClass Base tablename mytable key Column Intege
  • PHP utf8_en/decode 已弃用,我可以使用什么?

    我的网站页面 90 使用 utf8 编码功能来编译 DataTable a array map utf8 encode item 使用旧版本的 php 8 0 一切都很好 在新版本中 当 item 的值 item 是一个数组 为空时 它会给
  • 如何编写Delphi程序来控制CPU风扇速度并监控温度?

    我想使用Delphi创建一个程序来控制计算机的风扇速度并监控温度 执行此操作涉及哪些 API 调用 有什么好的代码示例可以分享吗 您可以使用 WMI 类Win32 温度探针 http msdn microsoft com en us lib