diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..7c4d171 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: [gitee.com/Lssg97/DetailedSystemMonitor/raw/main/Images/Pay1.png, gitee.com/Lssg97/DetailedSystemMonitor/raw/main/Images/Pay2.png, paypal.me/lssg97423] diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0e1e7eb --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +# 忽略所有 .rmskin 文件 +*.rmskin + +# 忽略所有字体文件 +*.ttf +*.otf +*.ttc + +# 忽略 @Resources 文件夹 +@Resources/ + +# 忽略所有 VS 构建文件夹 +.vs/ +*[Dd]ebug*/ +*[Rr]elease*/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ diff --git a/Document/History.md b/Document/History.md deleted file mode 100644 index f43ac65..0000000 --- a/Document/History.md +++ /dev/null @@ -1,328 +0,0 @@ -# 更新笔记 - - -#### 2020年8月2日 - Version 3.2 -> 基于Rainmeter 4.3 r3266 - -![修复](https://img.shields.io/badge/-%E4%BF%AE%E5%A4%8D-yello?style=plastic): 修复了“WiFi图标”无法切换信号强度的错误。 - - -#### 2020年7月31日 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 重绘所有图标。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 改进部分图标标签名称。 - -![修复](https://img.shields.io/badge/-%E4%BF%AE%E5%A4%8D-yello?style=plastic): 修复了变更编码方式后部分字符无法显示的错误。 - - -#### 2020年7月15日 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了皮肤更新监测。 - - -#### 2020年7月11日 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 优化了非“Windows 10”系统“N卡”计算机中“GPU监控”的UI间距。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 当笔记本电脑外接电源且电池满电状态下,“电池监控”中显示“已充满”。 - - -#### 2020年7月9日 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 将“GPU引擎”使用情况展示在“GPU Bar”上,感谢贴吧用户“mzflh”提供的配色方案。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 皮肤配置文件编码方式改为“GB2312”,压缩配置文件大小。 - - -#### 2020年7月2日 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 尝试性使用“继承节点”管理皮肤信息元素和Bar元素,压缩配置文件大小。 - - -#### 2020年6月27日 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了NVIDIA GPU “CUDA”引擎的监测。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 修改了部分GPU引擎的名称。 - - -#### 2020年6月9日 - Version 3.1 -> 基于Rainmeter 4.3 r3266 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 无法获取DNS地址时显示为“N/A”。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 尝试性使用“Group”管理非“Windows 10”专属皮肤节点,压缩配置文件大小。 - -![修复](https://img.shields.io/badge/-%E4%BF%AE%E5%A4%8D-yello?style=plastic): 修复了存在小数缩放倍数时,“硬盘”监控模块整体上移的错误。 - - -#### 2020年5月26日 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 移动了“I/O速度”的位置,微调UI界面。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 重绘“CPU”,“显存”图标。 - -![修复](https://img.shields.io/badge/-%E4%BF%AE%E5%A4%8D-yello?style=plastic): 修复了“网卡信息”在某些情况下突然消失的错误。 - - -#### 2020年5月20日 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了“显示时间”设置变量,用户可自主选择是否在皮肤中显示时间。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 添加了信息标签。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 缩减“IP地址”最大显示长度。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 优化“广域网IP”的“归属地”信息刷新方式。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 重绘“硬盘”,“线程”图标。 - - -#### 2020年5月8日 - Version 3.0.b -> 基于Rainmeter 4.3 r3266 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 调整了“整体缩放”设置变量顺序。 - - -#### 2020年5月7日 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了“电池”监测。 - -![修复](https://img.shields.io/badge/-%E4%BF%AE%E5%A4%8D-yello?style=plastic): 修复了“广域网IP归属地”监测突然失效的问题。 - -![修复](https://img.shields.io/badge/-%E4%BF%AE%E5%A4%8D-yello?style=plastic): 修复了单网卡计算机上,“网卡信息”与“CPU”相关信息间空隙较大的问题。 - -![修复](https://img.shields.io/badge/-%E4%BF%AE%E5%A4%8D-yello?style=plastic): 取消了“最大占用进程”中的首字母大写,避免出现“Qq”这种看起来很蠢的情况…… - - -#### 2020年5月6日 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 重做“GPU”UI。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 只有Intel核显的计算机会默认显示CPU温度。 - -![删除](https://img.shields.io/badge/-%E5%88%A0%E9%99%A4-red?style=plastic): 删除了“虚拟内存显示方式”和“硬盘类型”设置变量。 - - -#### 2020年5月4日 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了“网卡信息”监测。 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了“CPU句柄数”监测。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 重做“CPU”UI。 - -![修复](https://img.shields.io/badge/-%E4%BF%AE%E5%A4%8D-yello?style=plastic): 改进CPU逻辑核心数量的自动监测方式,修复了CPU逻辑核心数量自动监测报警的问题 - - -#### 2020年4月30日 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了“DNS服务器”的监测。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 重做“网络”UI。 - - -#### 2020年4月28日 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了系统位数显示。 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 重新增加了“登陆时长”中的天数。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 重做“系统”UI。 - - -#### 2020年4月22日 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 重做“存储”UI。 - -#### 2020年4月19日 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 重做“内存”UI。 - -#### 2020年4月16日 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了“本地时间”。 - - -#### 2020年4月10日 - Version 3.0.a -> 基于Rainmeter 4.3 r3266 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了点击“局域网IP”进入网关。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): “局域网IP”监测方式交由插件负责。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): “系统名称”中,“专业工作站版”中文化。 - -![修复](https://img.shields.io/badge/-%E4%BF%AE%E5%A4%8D-yello?style=plastic): 修复了“广域网IP”的“归属地”信息与“广域网IP”匹配不同步的问题。 - -![删除](https://img.shields.io/badge/-%E5%88%A0%E9%99%A4-red?style=plastic): 不再显示显卡的“luid”信息。 - - -#### 2020年4月8日 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了显示“广域网IP”的“归属地”。 - -![删除](https://img.shields.io/badge/-%E5%88%A0%E9%99%A4-red?style=plastic): 删除了“登陆时长”中的天数,将天数累加到小时。 - - -#### 2020年3月26日 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): “虚拟内存”为“分页文件”模式时,调整文字“虚拟内存”为“分页文件”。 - -![删除](https://img.shields.io/badge/-%E5%88%A0%E9%99%A4-red?style=plastic): 删除了所有颜色配置中的透明度值。 - - -#### 2020年2月22日 - -![修复](https://img.shields.io/badge/-%E4%BF%AE%E5%A4%8D-yello?style=plastic): 修复了“广域网IP”监测突然失效的问题。 - - -#### 2020年2月11日 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 将“CPU频率”监测由“基频”更改为“实时频率”。 - - -#### 2020年2月6日 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了对“GPU专用显存”的监测。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 为了长期维护该皮肤,避免字体版权问题,将皮肤字体由“微软雅黑”改为“思源黑体” - - -> ### 以下为 Version 3.0 以前的公开版本更新笔记 - - -#### 2020年4月7日 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了“CPU温度”检测,由配置变量“TempType”决定显示GPU温度还是CPU温度。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 提高了对“显卡设备”识别的成功度。 - - -#### 2020年2月22日 - -![修复](https://img.shields.io/badge/-%E4%BF%AE%E5%A4%8D-yello?style=plastic): 修复了“广域网IP”监测突然失效的问题。 - - -#### 2020年1月3日 - Version 2.99 -> 基于Rainmeter 4.3 r3266 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了皮肤整体的自动缩放的功能(Zoom)。 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了更详细的“GPU引擎使用情况”的报告(鼠标移动至“GPU 1”或者“GPU 2”图标上查看)。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 加入了对“逻辑6核心”CPU的自动检测。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 提高了对“显卡设备”识别的成功度。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): “GPU占用最大进程”由PID改为显示名称。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): “系统名称”中,“家庭版”中文化。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 皮肤UI细节调整。 - -![修复](https://img.shields.io/badge/-%E4%BF%AE%E5%A4%8D-yello?style=plastic): 修复了部分机型“虚拟内存”在“分页文件”模式下大小显示负数的错误。 - -![修复](https://img.shields.io/badge/-%E4%BF%AE%E5%A4%8D-yello?style=plastic): 修复了“核显-独显“双显卡机型,显卡切换后才进行数据刷新的错误。 - - -#### 2019年3月17日 - Version 2.95 -> 基于Rainmeter 4.2 r3043 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了“虚拟内存显示类型”配置(Default为系统默认方式,Real为分页文件)。 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了对“CPU逻辑核心数量”和“显卡类别”的全自动监控。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): “用户存储”部分可检测的分区名到“Z:”。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): “系统名称”中,“旗舰版”、“专业版”中文化。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): “用户名称”中,“管理员”、“访客”中文化。 - -![删除](https://img.shields.io/badge/-%E5%88%A0%E9%99%A4-red?style=plastic): 删除了“CPU逻辑核心数量”、“显卡类型”配置。 - - -#### 2019年2月17日 - Version 2.9 - -> 基于Rainmeter 4.2 r3043 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了“网速监测类型”配置(Bandwidth显示带宽bps,Speed显示实时传输速度B/s)。 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了“CPU逻辑核心数量”配置(该配置请务必修改为自己设备的CPU逻辑核心数量!如双核四线程就改为“4”。目前有效值只有 1,2,4,8,12,16)。 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了“显卡类型”配置(该配置请务必修改为自己电脑拥有的显卡版本,这是能否成功显示GPU温度的关键配置!电脑若有双显卡均要填写,按顺序先集显后独显,用英文逗号分隔。有效值为 Intel,AMD,NVIDIA 。如笔记本电脑有集显和N卡独显,就请改为:GPUType=Intel,NVIDIA)。 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了“硬盘类型”配置(决定存储部分显示的图片。有效值为SSD,HDD)。 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了GPU使用率监测(正常使用的前提是Windows系统版本必须是Windows 10 1709版本及以上,如果不是Windows 10系统,本部分内容皮肤会自动隐藏不进行监测。详细内容请转https://bbs.rainmeter.cn/thread-274340-1-1.html)。 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了“CPU线程数”监测。 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了CPU以外其余部件“最大占用进程”监测。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 整合原来“A卡”、“N卡”两个皮肤为一个文件,实现皮肤半自动化。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): “CPU频率”监控方式变更为利用“UsageMonitor”插件,并将单位“MHz”改为“GHz”。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): “CPU逻辑核心”的布局方式更改为双列。缩短皮肤整体长度,适应低分屏。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 提高“GPU名称”捕获成功性,提高皮肤移植性。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 将“虚拟内存”的监测由“提交”改为“分页文件”。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): “存储”的显示方式分割为“系统存储”(C盘)和“用户存储”(D、E、F……)两部分。“用户存储”部分是除C盘外其余所有盘的大小总和,只监测到H盘。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 皮肤UI位置的细小调整。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 优化配置文件,使其结构清晰明确。 - - -#### 2018年11月11日 - Version 2.6 -> 基于Rainmeter 4.2 r3004 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了当前计算机的“登录用户”及“登录时长”的监测。 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): “N卡”版本增加了“显卡型号”监测。 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了“HDD”硬盘类型标识。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 重绘所有图片UI。 - -![修复](https://img.shields.io/badge/-%E4%BF%AE%E5%A4%8D-yello?style=plastic): 更换了“广域网IP”的监测网址,修复了因原网页改版导致的正则表达匹配失效的问题。 - - -#### 2018年3月3日 - Version 2.0 -> 基于Rainmeter 3.3.3 r2744 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 根据使用的新插件,将皮肤分为“N卡”版本和“A卡”版本。 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): “A卡”版本增加了“显卡型号”监测。 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): “N卡”版本增加了“显卡使用率”监测。 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): “N卡”版本中将“CPU逻辑核心数”增加到“8核心”。 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了对“硬盘读写”和“C盘容量”的监测。 - -![新增](https://img.shields.io/badge/-%E6%96%B0%E5%A2%9E-blue?style=plastic): 增加了“SSD”硬盘类型标识。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 调整各监测项目的排列顺序使其看起来更加合理一些。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 微调布局,防止UI各元素相互叠加覆盖。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 调整部分检测不到数据的值从“0”变为“N/A”。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): “CPU使用率”,“显卡温度”等数值过大时自动变为“红色”加以警示。 - -![优化](https://img.shields.io/badge/-%E4%BC%98%E5%8C%96-green?style=plastic): 补充皮肤配置文件注释。 - -![修复](https://img.shields.io/badge/-%E4%BF%AE%E5%A4%8D-yello?style=plastic): 修复不能显示GPU温度的问题。对N卡和A卡重选显卡温度监控插件,A卡插件来自,N卡插件来自。感谢两个插件的作者。 - -![修复](https://img.shields.io/badge/-%E4%BF%AE%E5%A4%8D-yello?style=plastic): 修复带有无线网卡的双网卡机型单独使用无线局域网络时,“本地IP”显示本地回环“127.0.0.1”的问题。 - -#### 2017年5月6日 - Version 1.1 ??? -> 基于Rainmeter 3.3.3 r2744 - -完全不记得改动了什么…… - diff --git a/Document/Q&A.md b/Document/Q&A.md deleted file mode 100644 index 1cc637a..0000000 --- a/Document/Q&A.md +++ /dev/null @@ -1,71 +0,0 @@ -# 问题解答 - - -#### 1. 为什么在我的电脑上,皮肤看起来很小? - -* 皮肤默认尺寸为200x755像素,而不同计算机显示器的像素密度不同,在小尺寸但高分辨率屏幕上显示,看起来会很小。解决方法是调整皮肤的缩放比例参数(如图):建议固定选择**1.2**,**1.5**或**2.0**。特别注意**刷新皮肤前请检查小数点位置!!** - -![](https://gitee.com/Lssg97/DetailedSystemMonitor/raw/main/Image/1.png) - - -#### 2. 为什么我的皮肤和图片展示的不一样,感觉缺东西? - -* 如果您感觉缺了很多东西且使用的是Windows 7 SP1系统,则是系统无法识别皮肤中包含的“Noto Sans CJK.ttc”字体造成的。遇到这种情况,请下载字体修复补丁 [DetailedSystemMonitor_FixFont.rmskin](https://github.com/Lssg97/DetailedSystemMonitor/raw/main/Font/DetailedSystemMonitor_FixFont.rmskin),直接安装即可解决问题(百度网盘内已提供修复补丁供国内用户下载)。 - -* 除了上述情况外,差别主要体现在GPU监控显示的内容上。皮肤会根据系统环境和硬件环境自动适应,隐藏当前环境下无法显示的内容。如:受到系统环境影响,Windows 10 1709以前的系统无法显示非NVIDIA显卡的使用率,没有独立显卡的计算机无法显示显存使用情况,等等。如果您实在觉得皮肤在您的计算机上缺少某些内容属于功能性问题,可以参考 [首页](https://github.com/Lssg97/DetailedSystemMonitor) 建议。 - - -#### 3. 为什么使用本皮肤后,我的电脑上其它Rainmeter皮肤的动画每秒钟都会卡顿一次? - -* 得益于Rainmeter软件本身的高效,该皮肤的CPU使用率其实非常低(大约只有1%-2%左右)。但是尽管如此,该皮肤每秒钟还是要搜集并刷新大量信息。尤其是GPU监测方面,每秒钟要额外更新将近1000个变量信息。并且受Rainmeter本身机制限制,整个皮肤的全部信息更新与内容绘制要在16ms内完成。因此对于那些本身拥有高刷新率的动画皮肤来说,该皮肤的刷新会消耗一部分它们所需的性能,尤其是打开Rainmeter日志时。不过正常来说,这些影响基本上微乎其微,且该皮肤也不会对Rainmeter以外的软件造成任何影响。解决方法上,开启Rainmeter的硬件加速功能(Rainmeter管理器 - 设置)可以将那些高刷新率皮肤的绘制工作交由GPU负责,大幅降低Rainmeter的CPU使用率。如果你实在认为该皮肤影响了你的电脑性能,那我只能很遗憾的说:这款皮肤不适合您的桌面。 - - -#### 4. 为什么“显示器分辨率”监控和系统设置的不一样? - -* 这是因为你的计算机开启了Windows的显示缩放功能,Rainmeter识别分辨率错误造成的,请参考下图来进行设置:打开Rainmeter安装目录,鼠标右键点击`Rainmeter.exe`,属性,兼容性,更改高DIP设置,勾选“替代高DIP缩放行为”,确定。完成操作后重启Rainmeter软件。 - -![](https://gitee.com/Lssg97/DetailedSystemMonitor/raw/main/Image/2.png) - - -#### 5. 为什么“显卡温度”显示为“Nun”或者“N/A”? - -* 请根据您的计算机硬件情况,依据下方列出条件进行诊断: - * 如果皮肤显示为“N/A”,且你的计算机只拥有AMD独立显卡,请检查是否安装了皮肤安装包内自带的`AMDTemperature.dll`插件; - * 如果皮肤显示为“N/A”,且你的计算机只拥有NVIDIA独立显卡,请检查是否安装了皮肤安装包内自带的`NvidiaGPU.dll`插件; - * 如果皮肤显示为“N/A”,且你的计算机同时拥有核心显卡和独立显卡,请确保独立显卡已经工作(一般双显卡笔记本中,只有高图形运算要求情况,如玩游戏时,才会令独立显卡工作,平时独立显卡处于关闭状态); - * 如果皮肤显示为“N/A”,且你的计算机只有Intel核心显卡,请检查是否在系统后台运行了 [CoreTemp](https://www.alcpu.com/CoreTemp/) 应用; - -* 如果依据上面条件诊断后您的问题依旧,或者皮肤显示为“Nun”,请参考 [首页](https://github.com/Lssg97/DetailedSystemMonitor) 建议。不过如果你走到了这一步,解决问题的可能性就很小了。 - - -#### 6. 为什么我的笔记本“核心显卡使用率”正常,而“独立显卡使用率”和“显存使用率”都是“0”? - -* 参考上一条问题的流程3。 - - -#### 7. 为什么任何“显卡使用率”都显示为“0”? - -* 首先确保你的系统版本在Windows 10 1709及以上,然后确保您的计算机显卡驱动程序模型支持 **WDDM 2.4** 及以上。请使用 **Win + R** 调用“运行”,输入 `dxdiag` 来调出“**DirectX 诊断工具**”进行查看。 - -* 如果上述条件均满足但依旧存在问题,请确认您是否还在Rainmeter中加载了其它和“显卡监控”有关的皮肤。若有,尝试关闭相关皮肤,再刷新该皮肤确认情况。若问题没有解决,请参考 [首页](https://github.com/Lssg97/DetailedSystemMonitor) 建议。 - - -#### 8. 为什么“DNS服务器”展示的地址是“网关(路由器)”的地址? - -* 当你的计算机网络的“DNS服务器”设置为了`自动`可能会导致这样。现在绝大部分路由器均接管了其管理的局域网DNS设置。 - - -#### 9. 为什么电脑刚开机,但是“开机时长”已经好几天了? - -* 这是Windows的“快速启动”机制导致的,是系统原因。 - - -#### 10. 为什么网络正常但无法显示“广域网IP”或者“归属地”? - -* 由于“广域网IP”或者“归属地”信息均来自网站,而网站经常改版,可能会导致皮肤无法正确获取信息。如果你不熟悉Rainmeter皮肤工作方式,遇到这种情况,除了等待下次皮肤更新外没有其他办法。还有一种情况就是你可能在短时间内过于频繁的刷新了皮肤,导致皮肤不断向监测网站服务器发送请求,而被网站服务器认定为恶意攻击。这种情况下请关闭该皮肤,过一段时间后再使用。 - - -#### 11. 为什么监控得到的网速比实际网速大8倍左右? - -* 本皮肤对网速的显示模式有两种:“实际网速B/s”和“网速带宽bps”。后者在数值上是前者的8倍。皮肤下载后默认使用“网速带宽”来显示网速,可通过变量“NetSpeedType”自由切换。 - diff --git a/Documents/History.md b/Documents/History.md new file mode 100644 index 0000000..b7cffe8 --- /dev/null +++ b/Documents/History.md @@ -0,0 +1,380 @@ +# 更新笔记 + + + +#### 2021年2月16日 - Version 3.3 +> 基于Rainmeter 4.3 r3266 + +新增  新增“隐藏广域网IP”功能,点击“广域网IP地址”即可在显示和隐藏状态间切换;增加了“默认显示IP”设置变量,以确定皮肤刷新后的初始显示效果。 + + +#### 2020年11月28日 + +优化  使用“DeviceInfo”插件获取显卡相关信息,放弃使用遍历注册表的方案,显卡识别成功率会有大幅提高。插件目前未公开。感谢插件的作者a1091817957。 + +优化  皮肤更新检测地址从Github迁移到Gitee,提高国内用户检测成功率。 + + +#### 2020年10月5日 + +修复  修复了“显卡详细使用情况”中已关闭进程的残留问题。 + + +#### 2020年9月23日 + +修复  修复了“网卡设备信息”重复显示的错误。 + +删除  删除变量“TempType”。 + + +#### 2020年9月22日 + +优化  针对Intel平台计算机,舍弃使用“CoreTemp”插件,转而使用“CPUTemp”插件。 + +删除  针对Intel平台计算机,删除对“句柄数”的监测。 + + +#### 2020年9月4日 + +新增  增加了对“CPU温度”的监测(测试,仅适用于Intel平台计算机)。插件来自。感谢插件的作者DeadUniverse。 + +优化  “CPU图标”、“GPU图标”可以展示出相关平台类型。 + +优化  限制了“用户名”的长度。 + +优化  变更了“广域网IP”监测网站。 + + +#### 2020年8月5日 + +优化  使用系统环境变量捕获CPU逻辑核心数。 + +优化  监测磁盘驱动器类型,不再展示非本地磁盘(如网络磁盘)。 + + +#### 2020年8月2日 - Version 3.2 +> 基于Rainmeter 4.3 r3266 + +修复  修复了“WiFi图标”无法切换信号强度的错误。 + + +#### 2020年7月31日 + +优化  重绘所有图标。 + +优化  改进部分图标标签名称。 + +修复  修复了变更编码方式后部分字符无法显示的错误。 + + +#### 2020年7月15日 + +新增  增加了皮肤更新监测。 + + +#### 2020年7月11日 + +优化  优化了非“Windows 10”系统“N卡”计算机中“GPU监控”的UI间距。 + +优化  当笔记本电脑外接电源且电池满电状态下,“电池监控”中显示“已充满”。 + + +#### 2020年7月9日 + +优化  将“GPU引擎”使用情况展示在“GPU Bar”上,感谢贴吧用户“mzflh”提供的配色方案。 + +优化  皮肤配置文件编码方式改为“GB2312”,压缩配置文件大小。 + + +#### 2020年7月2日 + +优化  尝试性使用“继承节点”管理皮肤信息元素和Bar元素,压缩配置文件大小。 + + +#### 2020年6月27日 + +新增  增加了NVIDIA GPU “CUDA”引擎的监测。 + +优化  修改了部分GPU引擎的名称。 + + +#### 2020年6月9日 - Version 3.1 +> 基于Rainmeter 4.3 r3266 + +优化  无法获取DNS地址时显示为“N/A”。 + +优化  尝试性使用“Group”管理非“Windows 10”专属皮肤节点,压缩配置文件大小。 + +修复  修复了存在小数缩放倍数时,“硬盘”监控模块整体上移的错误。 + + +#### 2020年5月26日 + +优化  移动了“I/O速度”的位置,微调UI界面。 + +优化  重绘“CPU”,“显存”图标。 + +修复  修复了“网卡信息”在某些情况下突然消失的错误。 + + +#### 2020年5月20日 + +新增  增加了“显示时间”设置变量,用户可自主选择是否在皮肤中显示时间。 + +优化  添加了信息标签。 + +优化  缩减“IP地址”最大显示长度。 + +优化  优化“广域网IP”的“归属地”信息刷新方式。 + +优化  重绘“硬盘”,“线程”图标。 + + +#### 2020年5月8日 - Version 3.0.b +> 基于Rainmeter 4.3 r3266 + +优化  调整了“整体缩放”设置变量顺序。 + + +#### 2020年5月7日 + +新增  增加了“电池”监测。 + +修复  修复了“广域网IP归属地”监测突然失效的问题。 + +修复  修复了单网卡计算机上,“网卡信息”与“CPU”相关信息间空隙较大的问题。 + +修复  取消了“最大占用进程”中的首字母大写,避免出现“Qq”这种看起来很蠢的情况…… + + +#### 2020年5月6日 + +优化  重做“GPU”UI。 + +优化  只有Intel核显的计算机会默认显示CPU温度。 + +删除  删除了“虚拟内存显示方式”和“硬盘类型”设置变量。 + + +#### 2020年5月4日 + +新增  增加了“网卡信息”监测。 + +新增  增加了“CPU句柄数”监测。 + +优化  重做“CPU”UI。 + +修复  改进CPU逻辑核心数量的自动监测方式,修复了CPU逻辑核心数量自动监测报警的问题 + + +#### 2020年4月30日 + +新增  增加了“DNS服务器”的监测。 + +优化  重做“网络”UI。 + + +#### 2020年4月28日 + +新增  增加了系统位数显示。 + +新增  重新增加了“登陆时长”中的天数。 + +优化  重做“系统”UI。 + + +#### 2020年4月22日 + +优化  重做“存储”UI。 + +#### 2020年4月19日 + +优化  重做“内存”UI。 + +#### 2020年4月16日 + +新增  增加了“本地时间”。 + + +#### 2020年4月10日 - Version 3.0.a +> 基于Rainmeter 4.3 r3266 + +新增  增加了点击“局域网IP”进入网关。 + +优化  “局域网IP”监测方式交由插件负责。 + +优化  “系统名称”中,“专业工作站版”中文化。 + +修复  修复了“广域网IP”的“归属地”信息与“广域网IP”匹配不同步的问题。 + +删除  不再显示显卡的“luid”信息。 + + +#### 2020年4月8日 + +新增  增加了显示“广域网IP”的“归属地”。 + +删除  删除了“登陆时长”中的天数,将天数累加到小时。 + + +#### 2020年3月26日 + +优化  “虚拟内存”为“分页文件”模式时,调整文字“虚拟内存”为“分页文件”。 + +删除  删除了所有颜色配置中的透明度值。 + + +#### 2020年2月22日 + +修复  修复了“广域网IP”监测突然失效的问题。 + + +#### 2020年2月11日 + +优化  将“CPU频率”监测由“基频”更改为“实时频率”。 + + +#### 2020年2月6日 + +新增  增加了对“GPU专用显存”的监测。 + +优化  为了长期维护该皮肤,避免字体版权问题,将皮肤字体由“微软雅黑”改为“思源黑体” + + +> ### 以下为 Version 3.0 以前的公开版本更新笔记 + + +#### 2020年4月7日 + +新增  增加了“CPU温度”检测,由配置变量“TempType”决定显示GPU温度还是CPU温度。 + +优化  提高了对“显卡设备”识别的成功度。 + + +#### 2020年2月22日 + +修复  修复了“广域网IP”监测突然失效的问题。 + + +#### 2020年1月3日 - Version 2.99 +> 基于Rainmeter 4.3 r3266 + +新增  增加了皮肤整体的自动缩放的功能(Zoom)。 + +新增  增加了更详细的“GPU引擎使用情况”的报告(鼠标移动至“GPU 1”或者“GPU 2”图标上查看)。 + +优化  加入了对“逻辑6核心”CPU的自动检测。 + +优化  提高了对“显卡设备”识别的成功度。 + +优化  “GPU占用最大进程”由PID改为显示名称。 + +优化  “系统名称”中,“家庭版”中文化。 + +优化  皮肤UI细节调整。 + +修复  修复了部分机型“虚拟内存”在“分页文件”模式下大小显示负数的错误。 + +修复  修复了“核显-独显“双显卡机型,显卡切换后才进行数据刷新的错误。 + + +#### 2019年3月17日 - Version 2.95 +> 基于Rainmeter 4.2 r3043 + +新增  增加了“虚拟内存显示类型”配置(Default为系统默认方式,Real为分页文件)。 + +新增  增加了对“CPU逻辑核心数量”和“显卡类别”的全自动监控。 + +优化  “用户存储”部分可检测的分区名到“Z:”。 + +优化  “系统名称”中,“旗舰版”、“专业版”中文化。 + +优化  “用户名称”中,“管理员”、“访客”中文化。 + +删除  删除了“CPU逻辑核心数量”、“显卡类型”配置。 + + +#### 2019年2月17日 - Version 2.9 + +> 基于Rainmeter 4.2 r3043 + +新增  增加了“网速监测类型”配置(Bandwidth显示带宽bps,Speed显示实时传输速度B/s)。 + +新增  增加了“CPU逻辑核心数量”配置(该配置请务必修改为自己设备的CPU逻辑核心数量!如双核四线程就改为“4”。目前有效值只有 1,2,4,8,12,16)。 + +新增  增加了“显卡类型”配置(该配置请务必修改为自己电脑拥有的显卡版本,这是能否成功显示GPU温度的关键配置!电脑若有双显卡均要填写,按顺序先集显后独显,用英文逗号分隔。有效值为 Intel,AMD,NVIDIA 。如笔记本电脑有集显和N卡独显,就请改为:GPUType=Intel,NVIDIA)。 + +新增  增加了“硬盘类型”配置(决定存储部分显示的图片。有效值为SSD,HDD)。 + +新增  增加了GPU使用率监测(正常使用的前提是Windows系统版本必须是Windows 10 1709版本及以上,如果不是Windows 10系统,本部分内容皮肤会自动隐藏不进行监测。详细内容请转https://bbs.rainmeter.cn/thread-274340-1-1.html)。 + +新增  增加了“CPU线程数”监测。 + +新增  增加了CPU以外其余部件“最大占用进程”监测。 + +优化  整合原来“A卡”、“N卡”两个皮肤为一个文件,实现皮肤半自动化。 + +优化  “CPU频率”监控方式变更为利用“UsageMonitor”插件,并将单位“MHz”改为“GHz”。 + +优化  “CPU逻辑核心”的布局方式更改为双列。缩短皮肤整体长度,适应低分屏。 + +优化  提高“GPU名称”捕获成功性,提高皮肤移植性。 + +优化  将“虚拟内存”的监测由“提交”改为“分页文件”。 + +优化  “存储”的显示方式分割为“系统存储”(C盘)和“用户存储”(D、E、F……)两部分。“用户存储”部分是除C盘外其余所有盘的大小总和,只监测到H盘。 + +优化  皮肤UI位置的细小调整。 + +优化  优化配置文件,使其结构清晰明确。 + + +#### 2018年11月11日 - Version 2.6 +> 基于Rainmeter 4.2 r3004 + +新增  增加了当前计算机的“登录用户”及“登录时长”的监测。 + +新增  “N卡”版本增加了“显卡型号”监测。 + +新增  增加了“HDD”硬盘类型标识。 + +优化  重绘所有图片UI。 + +修复  更换了“广域网IP”的监测网址,修复了因原网页改版导致的正则表达匹配失效的问题。 + + +#### 2018年3月3日 - Version 2.0 +> 基于Rainmeter 3.3.3 r2744 + +新增  根据使用的新插件,将皮肤分为“N卡”版本和“A卡”版本。 + +新增  “A卡”版本增加了“显卡型号”监测。 + +新增  “N卡”版本增加了“显卡使用率”监测。 + +新增  “N卡”版本中将“CPU逻辑核心数”增加到“8核心”。 + +新增  增加了对“硬盘读写”和“C盘容量”的监测。 + +新增  增加了“SSD”硬盘类型标识。 + +优化  调整各监测项目的排列顺序使其看起来更加合理一些。 + +优化  微调布局,防止UI各元素相互叠加覆盖。 + +优化  调整部分检测不到数据的值从“0”变为“N/A”。 + +优化  “CPU使用率”,“显卡温度”等数值过大时自动变为“红色”加以警示。 + +优化  补充皮肤配置文件注释。 + +修复  修复不能显示GPU温度的问题。对N卡和A卡重选显卡温度监控插件,A卡插件来自,N卡插件来自。感谢两个插件的作者z100s和IZZZZZI。 + +修复  修复带有无线网卡的双网卡机型单独使用无线局域网络时,“本地IP”显示本地回环“127.0.0.1”的问题。 + + +#### 2017年5月6日 - Version 1.1 ??? +> 基于Rainmeter 3.3.3 r2744 + +完全不记得改动了什么…… + diff --git a/Documents/Q&A.md b/Documents/Q&A.md new file mode 100644 index 0000000..4facfa0 --- /dev/null +++ b/Documents/Q&A.md @@ -0,0 +1,78 @@ +# 问题解答 + + +#### 1. 为什么在我的电脑上,皮肤看起来很小? + +  皮肤默认尺寸为 200x755 像素,不同计算机显示器的像素密度不同,在小尺寸但高分辨率屏幕上显示,看起来就会很小。解决方法是打开皮肤配置文件调整皮肤的缩放比例参数(如下图):建议固定选择**1.2**,**1.5**或**2.0**。特别注意**刷新皮肤前请检查小数点位置!!** + +

+ 皮肤缩放调节 +

+ + +#### 2. 为什么我的皮肤和图片展示的不一样,感觉缺东西? + +  如果您感觉皮肤未显示完整,且使用的是 Windows 7 系统,则是系统无法正确识别皮肤中包含的“Noto Sans CJK.ttc”字体造成的。遇到这种情况,请下载字体修复补丁 [DetailedSystemMonitor_v_FixFont.rmskin](../../../releases/download/v3.3/DetailedSystemMonitor_v_FixFont.rmskin),并直接安装即可解决问题(百度网盘内也有提供下载)。 + +  除了上述情况外,差别主要体现在 GPU 监控相关的内容上。皮肤会根据系统环境和硬件环境自动适应,隐藏当前环境下无法显示的内容。如:受到系统环境影响,Windows 10 1709 以前的系统无法显示非 NVIDIA 显卡的使用率,没有独立显卡的计算机无法显示显存使用情况,等等。如果您实在觉得皮肤在您的计算机上缺少某些内容属于功能性问题,可以按照 [项目首页](../../../) 的说明发出反馈。 + + +#### 3. 为什么使用本皮肤后,我的电脑上其它Rainmeter皮肤的动画每秒钟都会卡顿一次? + +  得益于 Rainmeter 软件本身的高效,该皮肤的 CPU 占用率其实非常低(大约只有 1-2% 左右)。但是尽管如此,该皮肤每秒内要搜集并刷新大量信息,尤其是 GPU 监测方面,每秒钟要额外更新将近 1000 个变量信息。并且受限于 Rainmeter 本身的刷新机制,整个皮肤的全部信息更新与内容绘制要在 16ms 内完成。因此对于那些本身拥有高刷新率动画的皮肤(如频谱皮肤等)来说,该皮肤的刷新会消耗一部分它们所需的性能。不过正常来说,这些影响基本上微乎其微,且该皮肤也不会对 Rainmeter 以外的软件造成任何影响。 +  解决方法上,开启 Rainmeter 的硬件加速功能(Rainmeter管理器 - 设置)可以将那些高刷新率皮肤的绘制工作交由GPU负责,可以大幅降低 Rainmeter 的 CPU 使用率;或者打开该皮肤配置文件,将第二行的 `Update=1000` 数值调大以降低皮肤刷新率。如果您实在是认定该皮肤影响了您的电脑性能,那只能很遗憾的说:该皮肤不太适合您的电脑。 + + +#### 4. 为什么“显示器分辨率”监控和系统设置的不一样? + +  这是因为你的计算机开启了 Windows 的**显示缩放**功能,Rainmeter 识别分辨率错误造成的,请参考下图来进行设置:打开 Rainmeter 的安装目录,鼠标右键点击 `Rainmeter.exe`,属性,兼容性,更改高DIP设置,勾选“替代高DIP缩放行为”,确定。完成操作后重启 Rainmeter 软件。 + +

+ 显示缩放调节 +

+ + +#### 5. 为什么“显卡温度”显示为“Nun”或者“N/A”? + +  这是一个比较复杂的问题。请您根据计算机硬件情况,按照下方列出条件依次进行诊断: + * 如果皮肤显示为“N/A”,且你的计算机只拥有 AMD 独立显卡,请检查是否安装了皮肤安装包内自带的 `AMDTemperature.dll` 插件; + * 如果皮肤显示为“N/A”,且你的计算机只拥有 NVIDIA 独立显卡,请检查是否安装了皮肤安装包内自带的 `NvidiaGPU.dll` 插件; + * 如果皮肤显示为“N/A”,且你的计算机同时拥有核心显卡和独立显卡,请确保独立显卡已经工作(一般双显卡笔记本中,只有高图形运算要求情况,如玩游戏时,才会令独立显卡工作,平时独立显卡处于关闭状态); + * 如果皮肤显示为“N/A”,且你的计算机只有 AMD 核心显卡,请检查是否在系统后台运行了 [CoreTemp](https://www.alcpu.com/CoreTemp/) 应用; + +如果依据上面条件诊断后您的问题依旧,或者皮肤显示为“Nun”,请按照 [项目首页](../../../) 的说明发出反馈。不过如果你走到了这一步,解决问题的可能性就很小了。 + + +#### 6. 为什么“CPU温度”显示为“N/A”? + +  显示 CPU 温度需要 Rainmeter 以管理员身份运行。如果您的计算机用户不是 Administrator,Rainmeter 是无法以管理员身份开机自启动的。设置方法: + * 首先在计算机资源管理器地址栏输入 `shell:startup`,删除启动文件夹中的 Rainmeter 快捷方式来取消原有启动方式; + * 使用 **Win + R** 调用“运行”,输入 `taskschd.msc` 来调出“**任务计划程序**”; + * 下载计划任务文件 [Rainmeter.xml](../../../releases/download/v3.3/Rainmeter.xml),按照下图顺序导入任务,选择文件,确定任务,运行。最后重启电脑试验。 + +

+ 开机自启 +

+ + +#### 7. 为什么任何“显卡使用率”都显示为“0”? + +  首先确保你的系统版本在 Windows 10 1709 及以上,然后确保您的计算机显卡驱动程序模型支持 **WDDM 2.4** 及以上。请使用 **Win + R** 调用“运行”,输入 `dxdiag` 来调出“**DirectX 诊断工具**”进行查看。 + +  如果上述条件均满足但依旧存在问题,请确认您是否还在 Rainmeter 中加载了其它和“显卡监控”有关的皮肤。若有,尝试关闭相关皮肤,再刷新该皮肤确认情况。若问题没有解决,请按照 [项目首页](../../../) 的说明发出反馈。 + + +#### 8. 为什么“DNS服务器”展示的地址是“网关(路由器)”的地址? + +  当你的计算机网络的“DNS服务器”设置为了`自动`可能会导致这样。现在绝大部分路由器均接管了其管理的局域网DNS设置。 + + +#### 9. 为什么电脑刚开机,但是“开机时长”已经好几天了? + +  这是Windows的“快速启动”机制导致的,是系统原因。 + + +#### 10. 为什么网络正常但无法显示“广域网IP”或者“归属地”? + +  由于“广域网IP”或者“归属地”信息均来自网站,而网站经常改版,可能会导致皮肤无法正确获取信息。如果你不熟悉Rainmeter皮肤工作方式,遇到这种情况,除了等待下次皮肤更新外没有其他办法。还有一种情况就是你可能在短时间内过于频繁的刷新了皮肤,导致皮肤不断向监测网站服务器发送请求,而被网站服务器认定为恶意攻击。这种情况下请关闭该皮肤,过一段时间后再使用。 + diff --git a/Documents/Rainmeter.xml b/Documents/Rainmeter.xml new file mode 100644 index 0000000..82c9845 Binary files /dev/null and b/Documents/Rainmeter.xml differ diff --git a/Image/0.png b/Image/0.png deleted file mode 100644 index 8d7e85f..0000000 Binary files a/Image/0.png and /dev/null differ diff --git a/Image/1.png b/Image/1.png deleted file mode 100644 index ce3ff38..0000000 Binary files a/Image/1.png and /dev/null differ diff --git a/Image/3.png b/Image/3.png deleted file mode 100644 index 3511016..0000000 Binary files a/Image/3.png and /dev/null differ diff --git a/Images/0.png b/Images/0.png new file mode 100644 index 0000000..35793a9 Binary files /dev/null and b/Images/0.png differ diff --git a/Images/1.png b/Images/1.png new file mode 100644 index 0000000..f17dab0 Binary files /dev/null and b/Images/1.png differ diff --git a/Image/2.png b/Images/2.png similarity index 100% rename from Image/2.png rename to Images/2.png diff --git a/Images/3.png b/Images/3.png new file mode 100644 index 0000000..800db80 Binary files /dev/null and b/Images/3.png differ diff --git a/Images/4.png b/Images/4.png new file mode 100644 index 0000000..1dccd36 Binary files /dev/null and b/Images/4.png differ diff --git a/Images/5.png b/Images/5.png new file mode 100644 index 0000000..302f97f Binary files /dev/null and b/Images/5.png differ diff --git a/Image/Pay1.png b/Images/Pay1.png similarity index 100% rename from Image/Pay1.png rename to Images/Pay1.png diff --git a/Image/Pay2.png b/Images/Pay2.png similarity index 100% rename from Image/Pay2.png rename to Images/Pay2.png diff --git a/Plugin/CPUTemp/Source/.vs/SDK-CPP/v16/.suo b/Plugin/CPUTemp/Source/.vs/SDK-CPP/v16/.suo deleted file mode 100644 index c55b5de..0000000 Binary files a/Plugin/CPUTemp/Source/.vs/SDK-CPP/v16/.suo and /dev/null differ diff --git a/Plugin/CPUTemp/Source/.vs/SDK-CPP/v16/Browse.VC.db b/Plugin/CPUTemp/Source/.vs/SDK-CPP/v16/Browse.VC.db deleted file mode 100644 index ddb4562..0000000 Binary files a/Plugin/CPUTemp/Source/.vs/SDK-CPP/v16/Browse.VC.db and /dev/null differ diff --git a/Plugin/CPUTemp/Source/SharedMem.cpp b/Plugin/CPUTemp/Source/SharedMem.cpp deleted file mode 100644 index 6453d1b..0000000 --- a/Plugin/CPUTemp/Source/SharedMem.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include -#include "SharedMem.h" - -CSharedMemClient::CSharedMemClient(void) -{ -} - -CSharedMemClient::~CSharedMemClient(void) -{ -} - -bool CSharedMemClient::ReadSharedMem(LPCoreTempSharedDataEx i_SharedData) -{ - bool bRet = false; - LPCoreTempSharedDataEx pSharedData; - HANDLE hdlMemory; - HANDLE hdlMutex; - - hdlMutex = CreateMutex(nullptr,FALSE,CORE_TEMP_MUTEX_OBJECT); - if (hdlMutex == nullptr) - { - return false; - } - - WaitForSingleObject(hdlMutex, INFINITE); - - hdlMemory = OpenFileMapping( - FILE_MAP_READ, // Read only permission. - TRUE, - CORE_TEMP_MAPPING_OBJECT_EX); // "CoreTempMappingObject" - - if (hdlMemory == nullptr) - { - ReleaseMutex(hdlMutex); - CloseHandle(hdlMutex); - return false; - } - - pSharedData = (LPCoreTempSharedDataEx)MapViewOfFile(hdlMemory, FILE_MAP_READ, 0, 0, 0); - if (pSharedData == nullptr) - { - CloseHandle(hdlMemory); - hdlMemory = nullptr; - ReleaseMutex(hdlMutex); - CloseHandle(hdlMutex); - return false; - } - - __try - { - memcpy_s(i_SharedData, sizeof(CoreTempSharedDataEx), pSharedData, sizeof(CoreTempSharedDataEx)); - bRet = true; - } - __except(1) - { - bRet = false; - SetLastError(0x20000000); //Unknown error - } - - UnmapViewOfFile(pSharedData); - CloseHandle(hdlMemory); - ReleaseMutex(hdlMutex); - CloseHandle(hdlMutex); - - return bRet; -} \ No newline at end of file diff --git a/Plugin/CPUTemp/Source/SharedMem.h b/Plugin/CPUTemp/Source/SharedMem.h deleted file mode 100644 index 6c41b0f..0000000 --- a/Plugin/CPUTemp/Source/SharedMem.h +++ /dev/null @@ -1,112 +0,0 @@ -// Common.h: -// -////////////////////////////////////////////////////////////////////// - -#if !defined(AFX_COMMON_H__B302F7F1_E8D6_4EF2_9D89_A634D14922BF__INCLUDED_) -#define AFX_COMMON_H__B302F7F1_E8D6_4EF2_9D89_A634D14922BF__INCLUDED_ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#define CORE_TEMP_MAPPING_OBJECT_EX L"CoreTempMappingObjectEx" -#define CORE_TEMP_MUTEX_OBJECT L"CoreTempMutexObject" - -//Plugin types -#define General_Type 1 - -#define Plugin_Interface_Version 2 -#define CoreTempSharedData_Structure_Version 2 - -//Errors -#define USER 0x20000000 -#define CONFIGURE_UNSUPPORTED 0x20000001 - -#pragma pack(push) /* push current alignment to stack */ -#pragma pack(4) /* set alignment to 4 byte boundary */ - -typedef struct core_temp_shared_data -{ - unsigned int uiLoad[256]; - unsigned int uiTjMax[128]; - unsigned int uiCoreCnt; - unsigned int uiCPUCnt; - float fTemp[256]; - float fVID; - float fCPUSpeed; - float fFSBSpeed; - float fMultiplier; - char sCPUName[100]; - unsigned char ucFahrenheit; - unsigned char ucDeltaToTjMax; - unsigned char reserved[2]; -} CoreTempSharedData, *LPCoreTempSharedData, **PPCoreTempSharedData; - -typedef struct core_temp_shared_data_ex -{ - // Original structure (CoreTempSharedData) - unsigned int uiLoad[256]; - unsigned int uiTjMax; - unsigned int uiCoreCnt; - unsigned int uiCPUCnt; - unsigned int uiTemp[256]; - float fVID; - float fCPUSpeed; - float fFSBSpeed; - float fMultiplier; - char sCPUName[100]; - unsigned char ucFahrenheit; - unsigned char ucDeltaToTjMax; - // uiStructVersion = 2 - unsigned char ucTdpSupported; - unsigned char ucPowerSupported; - unsigned int uiStructVersion; - unsigned int uiTdp[128]; - float fPower[128]; - float fMultipliers[256]; -} CoreTempSharedDataEx, *LPCoreTempSharedDataEx, **PPCoreTempSharedDataEx; - -#pragma pack(pop) /* restore original alignment from stack */ - -typedef struct CoreTempPluginInfo CoreTempPluginInfo, *LPCoreTempPluginInfo; -typedef struct CoreTempPlugin CoreTempPlugin, *LPCoreTempPlugin; -typedef void (*RemotePluginStop)(LPCoreTempPlugin); -struct CoreTempPluginInfo -{ - wchar_t *version; - wchar_t *name; - wchar_t *description; - HWND hwndParent; - HINSTANCE dllInstance; - RemotePluginStop remoteStopProc; -}; - -struct CoreTempPlugin -{ - int interfaceVersion; - int type; - LPCoreTempPluginInfo pluginInfo; - - // interfaceVersion = 2 - int (*Start)(); - void (*Update)(const LPCoreTempSharedData data); - void (*Stop)(); - int (*Configure)(); - void (*Remove)(const wchar_t *path); - void (*UpdateEx)(const LPCoreTempSharedDataEx data); -}; - -typedef LPCoreTempPlugin (WINAPI *fnGetPlugin)(HMODULE hModule); -typedef void (WINAPI *fnReleasePlugin)(); - -class CSharedMemClient -{ -// Construction -public: - CSharedMemClient(void); // standard constructor - virtual ~CSharedMemClient(void); - - bool ReadSharedMem(LPCoreTempSharedDataEx i_SharedData); -}; - -#endif // !defined(AFX_COMMON_H__B302F7F1_E8D6_4EF2_9D89_A634D14922BF__INCLUDED_) diff --git a/Plugin/CPUTemp/Source/driver.cpp b/Plugin/CPUTemp/Source/driver.cpp deleted file mode 100644 index ea54b0c..0000000 --- a/Plugin/CPUTemp/Source/driver.cpp +++ /dev/null @@ -1,492 +0,0 @@ -#include "driver.h" - - -driver::driver(LPCTSTR gDriverId, LPCTSTR gDriverPath) :DriverId(gDriverId), DriverPath(gDriverPath), gIsNT(IsNT()), gIsCpuid(IsCpuid()) -{ - if (gIsCpuid) this->gIsMsr = IsMsr(); - - NewDriver(); -} - -driver::~driver() -{ - if (gHandle != INVALID_HANDLE_VALUE) - { - CloseHandle(gHandle); - gHandle = INVALID_HANDLE_VALUE; - } - StopDriver(hSCManager, DriverId); -} - -BOOL driver::NewDriver() -{ -#ifdef _DEBUG - time_t t = time(0); - strftime(tmp, sizeof(tmp), "[%X]", localtime(&t)); - fputs(tmp, fp); - fputs("򿪷ϵͳݿ->", fp); - hSCManager = OpenSCManager(NULL, //ĿNULLʾؼ - NULL, //ϵͳݿ⣬ΪSERVICES_ACTIVE_DATABASEΪNULLʾĬϴSERVICES_ACTIVE_DATABASEϵͳݿ⣩ - SC_MANAGER_ALL_ACCESS); //SCMȨޣȨޣ - if (hSCManager == NULL) - { - fputs("ʧ\n", fp); - return FALSE; - } - fputs("ɹ\n", fp); - if (!OpenDriver()) - { - if (gHandle != INVALID_HANDLE_VALUE) - { - CloseHandle(gHandle); - gHandle = INVALID_HANDLE_VALUE; - } - StopDriver(hSCManager, DriverId); - RemoveDriver(hSCManager, DriverId); - if (InstallDriver(hSCManager, DriverId, DriverPath)) - { - if (!IsSystemInstallDriver(hSCManager, DriverId, DriverPath)) - { - SystemInstallDriver(hSCManager, DriverId, DriverPath); - } - if (StartDriver(hSCManager, DriverId)) - { - OpenDriver(); - } - } - else return FALSE; - } - if (hSCManager != NULL) CloseServiceHandle(hSCManager); -#else - hSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS); - - if (hSCManager == NULL) return FALSE; - - if (!OpenDriver()) - { - if (gHandle != INVALID_HANDLE_VALUE) - { - CloseHandle(gHandle); - gHandle = INVALID_HANDLE_VALUE; - } - StopDriver(hSCManager, DriverId); - RemoveDriver(hSCManager, DriverId); - if (InstallDriver(hSCManager, DriverId, DriverPath)) - { - if (!IsSystemInstallDriver(hSCManager, DriverId, DriverPath)) - { - SystemInstallDriver(hSCManager, DriverId, DriverPath); - } - if (StartDriver(hSCManager, DriverId)) - { - OpenDriver(); - } - } - else return FALSE; - } - if (hSCManager != NULL) CloseServiceHandle(hSCManager); -#endif - return TRUE; -} - -BOOL driver::OpenDriver() -{ -#ifdef _DEBUG - time_t t = time(0); - strftime(tmp, sizeof(tmp), "[%X]", localtime(&t)); - fputs(tmp, fp); - fputs("->", fp); -#endif - //ж󣬲һЩľ - gHandle = CreateFile( - _T("\\\\.\\") OLS_DRIVER_ID,//Ҫ򿪵ļ - GENERIC_READ | GENERIC_WRITE,//Ϊ GENERIC_READ ʾ豸жʣΪ GENERIC_WRITE ʾ豸дʣʹã - 0,//FILE_SHARE_READ / FILE_SHARE_WRITE ʾļй - NULL,//SECURITY_ATTRIBUTES ָһ SECURITY_ATTRIBUTES ṹָ룬ļİȫԣϵͳֵ֧Ļ - OPEN_EXISTING,//ļѾڡ豸Ҫ - FILE_ATTRIBUTE_NORMAL,//Ĭ - NULL//Ϊ㣬ָһļļļиչ - ); - -#ifdef _DEBUG - if (gHandle == INVALID_HANDLE_VALUE) - { - fputs("ʧ\n", fp); - return FALSE; - } - fputs("ɹ\n", fp); - return TRUE; -#else - if (gHandle == INVALID_HANDLE_VALUE) - { - return FALSE; - } - return TRUE; -#endif // DEBUG -} - -BOOL driver::InstallDriver(SC_HANDLE hSCManager, LPCTSTR DriverId, LPCTSTR DriverPath) -{ - SC_HANDLE hService = NULL; - BOOL rCode = FALSE; - DWORD error = NO_ERROR; -#ifdef _DEBUG - time_t t = time(0); - - strftime(tmp, sizeof(tmp), "[%X]", localtime(&t)); - fputs(tmp, fp); - fputs("->", fp); - EnableSeLoadDriverPrivilege(); - //һ󣬲ӽSCMݿ - hService = CreateService(hSCManager, //SCMݿͬʱþҪSC_MANAGER_CREATE_SERVICEȨ - DriverId, //Ҫװ֣ɳ256ַܺ/\ַͬʱСд - DriverId, //ʾ - SERVICE_ALL_ACCESS, //ԷȨ - SERVICE_KERNEL_DRIVER, //ͣ - SERVICE_DEMAND_START, //ѡһStartServiceʱSCM - SERVICE_ERROR_NORMAL, //ʽ¼־м¼󣬵в - DriverPath, //· - NULL, //ڼ˳˷ƣ÷飬ָ NULL ַ - NULL, //ָ lpLoadOrderGroup ָΨһıֵı еıǩָ NULL - NULL, //շָƵķ˳ϵͳʼ֮ǰ˫ָֹ롣 ûκϵָΪ NULL ַ - NULL, //÷ӦеʻƣʹLocalSystemʻ - NULL //lpServiceStartNameָʻ롣 ʻû룬LocalServiceNetworkServiceLocalSystemʻи÷ָһַNULL - ); - - if (hService == NULL) - { - error = GetLastError(); - if (error == ERROR_SERVICE_EXISTS) - { - rCode = TRUE; - } - fputs("ʧ", fp); - snprintf(tmp, sizeof(tmp), "(룺%d)\n", error); - fputs(tmp, fp); - } - else - { - fputs("ɹ\n", fp); - rCode = TRUE; - CloseServiceHandle(hService); - } - - return rCode; -#else - EnableSeLoadDriverPrivilege(); - hService = CreateService(hSCManager,DriverId,DriverId,SERVICE_ALL_ACCESS,SERVICE_KERNEL_DRIVER,SERVICE_DEMAND_START,SERVICE_ERROR_NORMAL,DriverPath,NULL,NULL,NULL,NULL,NULL); - if (hService == NULL) - { - error = GetLastError(); - if (error == ERROR_SERVICE_EXISTS) - { - rCode = TRUE; - } - } - else - { - rCode = TRUE; - CloseServiceHandle(hService); - } - - return rCode; -#endif // DEBUG - - -} - -BOOL driver::StartDriver(SC_HANDLE hSCManager, LPCTSTR DriverId) -{ - SC_HANDLE hService = NULL; - BOOL rCode = FALSE; - DWORD error = NO_ERROR; - - hService = OpenService(hSCManager, DriverId, SERVICE_ALL_ACCESS); -#ifdef _DEBUG - char tmp[64]; - time_t t = time(0); - strftime(tmp, sizeof(tmp), "[%X]", localtime(&t)); - fputs(tmp, fp); - fputs("򿪷->", fp); - if (hService != NULL) - { - fputs("ɹ\n", fp); - time_t t = time(0); - strftime(tmp, sizeof(tmp), "[%X]", localtime(&t)); - fputs(tmp, fp); - fputs("з->", fp); - if (!StartService(hService, 0, NULL)) - { - error = GetLastError(); - if (error == ERROR_SERVICE_ALREADY_RUNNING) - { - rCode = TRUE; - } - fputs("ʧ", fp); - snprintf(tmp, sizeof(tmp), "(룺%d)\n", error); - fputs(tmp, fp); - } - else - { - fputs("ɹ\n", fp); - rCode = TRUE; - } - CloseServiceHandle(hService); - } - else - { - error = GetLastError(); - fputs("ʧ", fp); - snprintf(tmp, sizeof(tmp), "(룺%d)\n", error); - fputs(tmp, fp); - } - return rCode; -#else - if (hService != NULL) - { - if (!StartService(hService, 0, NULL)) - { - error = GetLastError(); - if (error == ERROR_SERVICE_ALREADY_RUNNING) - { - rCode = TRUE; - } - } - else - { - rCode = TRUE; - } - CloseServiceHandle(hService); - } - return rCode; -#endif // DEBUG -} - -BOOL driver::RemoveDriver(SC_HANDLE hSCManager, LPCTSTR DriverId) -{ - SC_HANDLE hService = NULL; - BOOL rCode = FALSE; - - hService = OpenService(hSCManager, DriverId, SERVICE_ALL_ACCESS); - if (hService == NULL) - { - rCode = TRUE; - } - else - { - rCode = DeleteService(hService); - CloseServiceHandle(hService); - } - - return rCode; -} - -BOOL driver::StopDriver(SC_HANDLE hSCManager, LPCTSTR DriverId) -{ - SC_HANDLE hService = NULL; - BOOL rCode = FALSE; - SERVICE_STATUS serviceStatus; - DWORD error = NO_ERROR; - - hService = OpenService(hSCManager, DriverId, SERVICE_ALL_ACCESS); - - if (hService != NULL) - { - rCode = ControlService(hService, SERVICE_CONTROL_STOP, &serviceStatus); - CloseServiceHandle(hService); - } - - return rCode; -} - -BOOL driver::SystemInstallDriver(SC_HANDLE hSCManager, LPCTSTR DriverId, LPCTSTR DriverPath) -{ - SC_HANDLE hService = NULL; - BOOL rCode = FALSE; - DWORD error = NO_ERROR; - - hService = OpenService(hSCManager, DriverId, SERVICE_ALL_ACCESS); - -#ifdef _DEBUG - time_t t = time(0); - strftime(tmp, sizeof(tmp), "[%X]", localtime(&t)); - fputs(tmp, fp); - fputs("ϵͳ->", fp); - - if (hService != NULL) - { - rCode = ChangeServiceConfig(hService, - SERVICE_KERNEL_DRIVER, - SERVICE_AUTO_START, - SERVICE_ERROR_NORMAL, - DriverPath, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL - ); - error = GetLastError(); - CloseServiceHandle(hService); - } - - if (rCode) - { - fputs("ɹ\n", fp); - } - else - { - fputs("ʧ", fp); - snprintf(tmp, sizeof(tmp), "(룺%d)\n", error); - fputs(tmp, fp); - } -#else - if (hService != NULL) - { - rCode = ChangeServiceConfig(hService, - SERVICE_KERNEL_DRIVER, - SERVICE_AUTO_START, - SERVICE_ERROR_NORMAL, - DriverPath, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL - ); - error = GetLastError(); - CloseServiceHandle(hService); - } -#endif // _DEBUG - - return rCode; -} - -BOOL driver::IsSystemInstallDriver(SC_HANDLE hSCManager, LPCTSTR DriverId, LPCTSTR DriverPath) -{ - SC_HANDLE hService = NULL; - BOOL rCode = FALSE; - DWORD dwSize; - LPQUERY_SERVICE_CONFIG lpServiceConfig; - - hService = OpenService(hSCManager, DriverId, SERVICE_ALL_ACCESS); - - if (hService != NULL) - { - QueryServiceConfig(hService, NULL, 0, &dwSize); - lpServiceConfig = (LPQUERY_SERVICE_CONFIG)HeapAlloc(GetProcessHeap(), - HEAP_ZERO_MEMORY, dwSize); - QueryServiceConfig(hService, lpServiceConfig, dwSize, &dwSize); - - if (lpServiceConfig->dwStartType == SERVICE_AUTO_START) - { - rCode = TRUE; - } - - CloseServiceHandle(hService); - - HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, lpServiceConfig); - } - - return rCode; -} - -BOOL WINAPI driver::Rdmsr(DWORD index, PDWORD eax, PDWORD edx) -{ - if (gHandle == INVALID_HANDLE_VALUE) return FALSE; - - if (eax == NULL || edx == NULL || gIsMsr == FALSE) return FALSE; - - DWORD returnedLength = 0; - BOOL result = FALSE; - BYTE outBuf[8] = { 0 }; - - result = DeviceIoControl( - gHandle, // Ҫִв豸豸ͨǾĿ¼ļʹ CreateFile 򿪻ȡ豸ļע - IOCTL_OLS_READ_MSR, // Ŀƴ룬ֵʶҪִеضԼִиò豸ͣйؿƴбοע - &index, // ѡָ뻺ָ롣 - sizeof(index), // 뻺ֽΪλĴСλΪֽڡ - &outBuf, // ѡָָ롣 - sizeof(outBuf), // ֽΪλĴСλΪֽڡ - &returnedLength, // ѡָһָ룬ñմ洢еݵĴС - NULL // ѡָOVERLAPPEDṹָ롣 - ); - - if (result) - { - memcpy(eax, outBuf, 4); - memcpy(edx, outBuf + 4, 4); - return TRUE; - } - else return FALSE; -} - -BOOL WINAPI driver::RdmsrTx(DWORD index, PDWORD eax, PDWORD edx, DWORD_PTR threadAffinityMask) -{ - BOOL result = FALSE; - DWORD_PTR mask = 0; - HANDLE hThread = NULL; - - if (gIsNT) - { - hThread = GetCurrentThread(); - mask = SetThreadAffinityMask(hThread, threadAffinityMask); - if (mask == 0) - { - return FALSE; - } - } - - result = Rdmsr(index, eax, edx); - - if (gIsNT) - { - SetThreadAffinityMask(hThread, mask); - } - - return result; -} - -BOOL driver::EnableSeLoadDriverPrivilege() -{ - HANDLE hToken; - LUID sedebugnameValue; - TOKEN_PRIVILEGES tkp; - - if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) { - return false; - } - - if (!LookupPrivilegeValue(NULL, SE_LOAD_DRIVER_NAME, &sedebugnameValue)) - { - __try - { - if (hToken) - { - CloseHandle(hToken); - } - } - __except (EXCEPTION_EXECUTE_HANDLER) {}; - return false; - } - - tkp.PrivilegeCount = 1; - tkp.Privileges[0].Luid = sedebugnameValue; - tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; - if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL)) - { - __try - { - if (hToken) - { - CloseHandle(hToken); - } - } - __except (EXCEPTION_EXECUTE_HANDLER) {}; - return false; - } - - return true; -} \ No newline at end of file diff --git a/Plugin/CPUTemp/Source/driver.h b/Plugin/CPUTemp/Source/driver.h deleted file mode 100644 index ecf4221..0000000 --- a/Plugin/CPUTemp/Source/driver.h +++ /dev/null @@ -1,49 +0,0 @@ -#pragma once - - -#include -#include -#include -#include "running_environment.h" - -#ifdef _DEBUG -#include -#include -#endif - -#define OLS_TYPE 40000 - -#define OLS_DRIVER_ID _T("WinRing0_1_2_0") -#define IOCTL_OLS_READ_MSR CTL_CODE(OLS_TYPE, 0x821, METHOD_BUFFERED, FILE_ANY_ACCESS) - -class driver -{ -public: - driver(LPCTSTR gDriverId, LPCTSTR gDriverPath); - BOOL WINAPI Rdmsr(DWORD index, PDWORD eax, PDWORD edx); - BOOL WINAPI RdmsrTx(DWORD index, PDWORD eax, PDWORD edx, DWORD_PTR threadAffinityMask); - ~driver(); -private: - HANDLE gHandle = INVALID_HANDLE_VALUE; // - SC_HANDLE hSCManager = NULL; //ϵͳݿ - LPCTSTR DriverId = NULL; // - LPCTSTR DriverPath = NULL; //· - BOOL gIsNT = FALSE; //ǷΪNTϵͳ - BOOL gIsCpuid = FALSE; //Ƿ֧CPUID - BOOL gIsMsr = FALSE; //Ƿ֧Msr - BOOL NewDriver(); - BOOL OpenDriver(); - BOOL InstallDriver(SC_HANDLE hSCManager, LPCTSTR DriverId, LPCTSTR DriverPath); - BOOL StartDriver(SC_HANDLE hSCManager, LPCTSTR DriverId); - BOOL StopDriver(SC_HANDLE hSCManager, LPCTSTR DriverId); - BOOL RemoveDriver(SC_HANDLE hSCManager, LPCTSTR DriverId); - BOOL SystemInstallDriver(SC_HANDLE hSCManager, LPCTSTR DriverId, LPCTSTR DriverPath); - BOOL IsSystemInstallDriver(SC_HANDLE hSCManager, LPCTSTR DriverId, LPCTSTR DriverPath); - - BOOL EnableSeLoadDriverPrivilege(); -#ifdef _DEBUG - FILE* fp = fopen("log.txt", "a"); - char tmp[64]; -#endif -}; - diff --git a/Plugin/NvidiaGPU/SDK-CPP.sln b/Plugin/NvidiaGPU/SDK-CPP.sln deleted file mode 100644 index 3593da7..0000000 --- a/Plugin/NvidiaGPU/SDK-CPP.sln +++ /dev/null @@ -1,28 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.30501.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginNvidiaGPU", "PluginNvidiaGPU\PluginNvidiaGPU.vcxproj", "{015AA517-695B-4972-8828-69CEF7E607D0}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {015AA517-695B-4972-8828-69CEF7E607D0}.Debug|Win32.ActiveCfg = Debug|Win32 - {015AA517-695B-4972-8828-69CEF7E607D0}.Debug|Win32.Build.0 = Debug|Win32 - {015AA517-695B-4972-8828-69CEF7E607D0}.Debug|x64.ActiveCfg = Debug|x64 - {015AA517-695B-4972-8828-69CEF7E607D0}.Debug|x64.Build.0 = Debug|x64 - {015AA517-695B-4972-8828-69CEF7E607D0}.Release|Win32.ActiveCfg = Release|Win32 - {015AA517-695B-4972-8828-69CEF7E607D0}.Release|Win32.Build.0 = Release|Win32 - {015AA517-695B-4972-8828-69CEF7E607D0}.Release|x64.ActiveCfg = Release|x64 - {015AA517-695B-4972-8828-69CEF7E607D0}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/README.md b/README.md index cf7683c..8174f6c 100644 --- a/README.md +++ b/README.md @@ -1,77 +1,119 @@ -详细系统监控 v 3.2 -======== +

详细系统监控

+

(Detailed System Monitor)

+
+

+ Version + Repo size + License +
+ Issues + Pull requests + Downloads +

+
-[![LICENSE](https://img.shields.io/badge/license-CC%20BY--NC--SA%203.0-orange.svg?logo=creative-commons&logoColor=white)](LICENSE.md) -**详细系统监控**(DetailedSystemMonitor,以下均简称为“该皮肤”)是一款全面、直观、高信息密度的,用于监视所在计算机的网络、CPU、GPU、内存、硬盘等相关信息的 [Rainmeter](https://www.rainmeter.net/) 皮肤,旨在将这些系统信息清晰明了地展示在你的桌面上。能兼容市面上绝大多数使用Windows系统的计算机或工作站,并自动适配系统版本及硬件以只展示可以获取的信息。 +### 导航 -![详细系统监控 v3.0](https://gitee.com/Lssg97/DetailedSystemMonitor/raw/main/Image/0.png) +| [**运行要求**](../../#%E8%BF%90%E8%A1%8C%E8%A6%81%E6%B1%82) | [**安装方法**](../../#%E5%AE%89%E8%A3%85%E6%96%B9%E6%B3%95) | [**更新历史**](../../#%E6%9B%B4%E6%96%B0%E5%8E%86%E5%8F%B2) | [**遇到问题**](../../#%E9%81%87%E5%88%B0%E9%97%AE%E9%A2%98) | +| :-: | :-: | :-: | :-: | +| [**参与维护**](../../#%E5%8F%82%E4%B8%8E%E7%BB%B4%E6%8A%A4) | [**相关协议**](../../#%E7%9B%B8%E5%85%B3%E5%8D%8F%E8%AE%AE) | [**其他声明**](../../#%E5%85%B6%E4%BB%96%E5%A3%B0%E6%98%8E) | [**联系作者**](../../#%E8%81%94%E7%B3%BB%E4%BD%9C%E8%80%85) | -该皮肤目前最新版本为 **3.2**。该版本将 GPU 各引擎使用情况直接展示在了图示中;增加了对 CUDA 引擎的监测;舍弃了 FontAwesome 图标字体,使用 Shape 重绘所有图标;且本版本开始可以检测皮肤更新。详细内容请查看 [**更新笔记**](https://github.com/Lssg97/DetailedSystemMonitor/blob/main/Document/History.md)。 +
+ +  **详细系统监控**(DetailedSystemMonitor,以下均简称为“该皮肤”)是一款全面、直观、高信息密度的,用于监视所在计算机的网络、CPU、GPU、内存、硬盘等相关信息的 [Rainmeter](https://www.rainmeter.net/) 皮肤,旨在将这些系统信息清晰明了地展示在你的桌面上。能兼容市面上绝大多数使用Windows系统的计算机或工作站,并自动适配系统版本及硬件以只展示可以获取的信息。 + +

+ 详细系统监控 v3.0 +

+ +该皮肤目前最新版本为 **3.3**。该版本新增了对 Intel CPU 温度的监测;新增了隐藏广域网IP地址的功能;使用了一个新插件来进一步提高对显卡相关信息检测的准确度;优化修复一些已知问题。详细内容请查看 [**更新笔记**](Documents/History.md)。 ### 运行要求 -* **系统要求:** **Microsoft Windows 7 SP1** 或更高版本系统,若要获得皮肤的全部功能,则需要 **Microsoft Windows 10 1709** 或更高版本系统; +* **系统要求:** 该皮肤至少需要 **Microsoft Windows 7 SP1** 系统来满足最低程度的信息展示。若要使皮肤展示其全部功能,则需要 **Microsoft Windows 10 1709** 或更高版本系统。 -* **环境要求:** [**.NET Framework 4.5**](https://www.microsoft.com/zh-cn/download/details.aspx?id=30653) 或更高版本; +* **环境要求:** [**.NET Framework 4.5**](https://www.microsoft.com/zh-cn/download/details.aspx?id=30653) 或更高版本。 -* **软件要求:** [**Rainmeter 4.3 r3266**](https://www.rainmeter.net/) 或更高版本; +* **软件要求:** [**Rainmeter 4.3 r3266**](https://www.rainmeter.net/) 或更高版本。 -* **其它要求:** 若有在皮肤中获取 **CPU温度** 的需求,还需要后台运行 [**CoreTemp**](https://www.alcpu.com/CoreTemp/) 应用。 +* **其它要求:** 用户须**以管理员身份运行** Rainmeter 来成功获取 CPU 温度。对于仅有 AMD 核心显卡的计算机,若无法正常显示出 GPU 温度,还需要后台运行 [**CoreTemp**](https://www.alcpu.com/CoreTemp/) 软件。关于如何设置**以管理员身份自启动 Rainmeter**,请查看 [**问题解答#6**](Documents/Q%26A.md#6-%E4%B8%BA%E4%BB%80%E4%B9%88cpu%E6%B8%A9%E5%BA%A6%E6%98%BE%E7%A4%BA%E4%B8%BAna)。 ### 安装方法 -本皮肤的官方发行版会使用 Rainmeter 自带皮肤打包器进行打包,安装包扩展名为 `.rmskin`。已经拥有 Rainmeter 软件的用户可在此仓库直接 [**下载**](https://github.com/Lssg97/DetailedSystemMonitor/releases/download/v3.2/DetailedSystemMonitor_v_3.2.rmskin) 最新的版本安装包到您的计算机,直接双击文件安装。 +  本皮肤的官方发行版会使用 Rainmeter 自带皮肤打包器进行打包,安装包扩展名为 `.rmskin`。已经拥有 Rainmeter 软件的用户可在此仓库直接 [**下载**](../../releases/download/v3.3/DetailedSystemMonitor_v_3.3.rmskin) 最新的版本安装包到您的计算机,直接双击文件安装。 + +* **Windows 7** 操作系统用户安装皮肤后,还需要安装 [**字体修复补丁**](../../releases/download/v3.3/DetailedSystemMonitor_v_FixFont.rmskin),下载完成直接安装即可。**Windows 10** 操作系统用户无需安装该补丁。 -* 安装皮肤时,请注意选择适合您计算机显卡设备的插件:若您的计算机存在 **NVIDIA** 显卡,请在插件栏中只勾选 `NvidiaGPU.dll`(如下图所示);**AMD** 显卡同理。若您的计算机只有 **Intel** 核心显卡,请取消勾选这两个插件,并考虑安装 [**CoreTemp**](https://www.alcpu.com/CoreTemp/) 应用。 +* 安装皮肤时,请注意选择适合您计算机显卡设备的插件:若您的计算机存在 **NVIDIA** 显卡,请在插件栏中只勾选 `NvidiaGPU.dll`(如下图所示);**AMD** 显卡同理。若您的计算机并非 **Intel** 平台,请取消勾选 `CPUTemp.dll`。 -

+

+ 安装界面 +

* 使用上述方法在默认情况下,新版本将自动覆盖旧版本的皮肤。若您想保留旧版本皮肤,请手动修改旧版本皮肤的文件名或皮肤文件所在目录名称,亦或者使用第三方压缩软件来解压新版本皮肤安装包,手动提取新版本皮肤文件(不推荐)。 ### 更新历史 -您可以在 [**更新笔记**](https://github.com/Lssg97/DetailedSystemMonitor/blob/main/Document/History.md) 中查看历史更新记录。如果您想实时了解我最近的更新内容,可以查看本仓库的 [**develop**](https://github.com/Lssg97/DetailedSystemMonitor/tree/develop) 分支。 +  您可以在 [**更新笔记**](Documents/History.md) 中查看历史更新记录。如果您想实时了解我最近的更新内容,可以查看本仓库的 develop 分支。 ### 遇到问题 -如果您在使用该皮肤中遇到任何功能性问题,请优先参考 [**问题解答**](https://github.com/Lssg97/DetailedSystemMonitor/blob/main/Document/Q&A.md) 文档。这里回答了一些可能最常见的问题。如果您的问题不在此列,可以在该皮肤所在的 [**中国雨滴美化社区**](https://bbs.rainmeter.cn/thread-290033-1-1.html) 回帖或直接在本仓库发出 [**Issue**](https://github.com/Lssg97/DetailedSystemMonitor/issues/new) 进行提问。 +  以下是您可能会遇到的问题: + +| | 问题 | +| :-: | - | +| 1 | [为什么在我的电脑上,皮肤看起来很小?](Documents/Q%26A.md#1-%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9C%A8%E6%88%91%E7%9A%84%E7%94%B5%E8%84%91%E4%B8%8A%E7%9A%AE%E8%82%A4%E7%9C%8B%E8%B5%B7%E6%9D%A5%E5%BE%88%E5%B0%8F) | +| 2 | [为什么我的皮肤和图片展示的不一样,感觉缺东西?](Documents/Q%26A.md#2-%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%E7%9A%AE%E8%82%A4%E5%92%8C%E5%9B%BE%E7%89%87%E5%B1%95%E7%A4%BA%E7%9A%84%E4%B8%8D%E4%B8%80%E6%A0%B7%E6%84%9F%E8%A7%89%E7%BC%BA%E4%B8%9C%E8%A5%BF) | +| 3 | [为什么使用本皮肤后,我的电脑上其它Rainmeter皮肤的动画每秒钟都会卡顿一次?](Documents/Q%26A.md#3-%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BD%BF%E7%94%A8%E6%9C%AC%E7%9A%AE%E8%82%A4%E5%90%8E%E6%88%91%E7%9A%84%E7%94%B5%E8%84%91%E4%B8%8A%E5%85%B6%E5%AE%83rainmeter%E7%9A%AE%E8%82%A4%E7%9A%84%E5%8A%A8%E7%94%BB%E6%AF%8F%E7%A7%92%E9%92%9F%E9%83%BD%E4%BC%9A%E5%8D%A1%E9%A1%BF%E4%B8%80%E6%AC%A1) | +| 4 | [为什么“显示器分辨率”监控和系统设置的不一样?](Documents/Q%26A.md#4-%E4%B8%BA%E4%BB%80%E4%B9%88%E6%98%BE%E7%A4%BA%E5%99%A8%E5%88%86%E8%BE%A8%E7%8E%87%E7%9B%91%E6%8E%A7%E5%92%8C%E7%B3%BB%E7%BB%9F%E8%AE%BE%E7%BD%AE%E7%9A%84%E4%B8%8D%E4%B8%80%E6%A0%B7) | +| 5 | [为什么“显卡温度”显示为“Nun”或者“N/A”?](Documents/Q%26A.md#5-%E4%B8%BA%E4%BB%80%E4%B9%88%E6%98%BE%E5%8D%A1%E6%B8%A9%E5%BA%A6%E6%98%BE%E7%A4%BA%E4%B8%BAnun%E6%88%96%E8%80%85na) | +| 6 | [为什么“CPU温度”显示为“N/A”?](Documents/Q%26A.md#6-%E4%B8%BA%E4%BB%80%E4%B9%88cpu%E6%B8%A9%E5%BA%A6%E6%98%BE%E7%A4%BA%E4%B8%BAna) | +| 7 | [为什么任何“显卡使用率”都显示为“0”?](Documents/Q%26A.md#7-%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BB%BB%E4%BD%95%E6%98%BE%E5%8D%A1%E4%BD%BF%E7%94%A8%E7%8E%87%E9%83%BD%E6%98%BE%E7%A4%BA%E4%B8%BA0) | +| 8 | [为什么“DNS服务器”展示的地址是“网关(路由器)”的地址?](Documents/Q%26A.md#8-%E4%B8%BA%E4%BB%80%E4%B9%88dns%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%B1%95%E7%A4%BA%E7%9A%84%E5%9C%B0%E5%9D%80%E6%98%AF%E7%BD%91%E5%85%B3%E8%B7%AF%E7%94%B1%E5%99%A8%E7%9A%84%E5%9C%B0%E5%9D%80) | +| 9 | [为什么电脑刚开机,但是“开机时长”已经好几天了?](Documents/Q%26A.md#9-%E4%B8%BA%E4%BB%80%E4%B9%88%E7%94%B5%E8%84%91%E5%88%9A%E5%BC%80%E6%9C%BA%E4%BD%86%E6%98%AF%E5%BC%80%E6%9C%BA%E6%97%B6%E9%95%BF%E5%B7%B2%E7%BB%8F%E5%A5%BD%E5%87%A0%E5%A4%A9%E4%BA%86) | +| 10 | [为什么网络正常但无法显示“广域网IP”或者“归属地”?](Documents/Q%26A.md#10-%E4%B8%BA%E4%BB%80%E4%B9%88%E7%BD%91%E7%BB%9C%E6%AD%A3%E5%B8%B8%E4%BD%86%E6%97%A0%E6%B3%95%E6%98%BE%E7%A4%BA%E5%B9%BF%E5%9F%9F%E7%BD%91ip%E6%88%96%E8%80%85%E5%BD%92%E5%B1%9E%E5%9C%B0) | + +如果您的问题不在上述列表,可以在 [**中国雨滴美化社区**](https://bbs.rainmeter.cn/thread-290033-1-1.html) 或 [**rainmeter百度贴吧**](https://tieba.baidu.com/p/6868066630) 下该皮肤所在的帖子进行回复或直接在本仓库发出 Issue 进行提问。 ### 参与维护 -如果您对本皮肤项目感兴趣,有关于本皮肤的更好意见或想法且愿意将你的想法分享给其他人,那么欢迎您加入本皮肤的维护过程。您可以根据自身情况在以下方式中选择一种参与维护: +  如果您对本皮肤项目感兴趣,有关于本皮肤的更好意见或想法且愿意将你的想法分享给其他人,那么欢迎您加入本皮肤的维护过程。您可以根据自身情况在以下方式中选择一种参与维护: -* 如果您只是一名很普通的 Rainmeter 用户,不太了解 Rainmeter 皮肤的工作方式和文件构成,只是单纯的在使用上有更好的建议或者需求,那么可以在该皮肤所在的 [**中国雨滴美化社区**](https://bbs.rainmeter.cn/thread-290033-1-1.html) 回帖或直接在本仓库发出 [**Issue**](https://github.com/Lssg97/DetailedSystemMonitor/issues/new) 提出。本人会视情况将您的建议或需求添加到下一次的版本更新中。 +* 如果您只是一名很普通的 Rainmeter 用户,不太了解 Rainmeter 皮肤的工作方式和文件构成,只是单纯的在使用上有更好的建议或者需求,那么可以在 [**中国雨滴美化社区**](https://bbs.rainmeter.cn/thread-290033-1-1.html) 或 [**rainmeter百度贴吧**](https://tieba.baidu.com/p/6868066630) 下该皮肤所在的帖子进行回复,或直接在本仓库发出 Issue 提出。我将会视情况将您的建议或需求添加到下一次的版本更新中。 -* 如果您已经了解该皮肤的工作方式和文件构成,已经修改了该皮肤的副本,但是不太了解 GitHub 的团队工作方式,可以通过下面的 [**联系作者**](https://github.com/Lssg97/DetailedSystemMonitor#%E8%81%94%E7%B3%BB%E4%BD%9C%E8%80%85) 将你的皮肤修改版本发给我并附加修改内容说明。 +* 如果您已经了解该皮肤的工作方式和文件构成,已经修改了该皮肤的副本,但是不太了解 GitHub 的团队工作方式,可以通过下面的 [**联系作者**](../../#%E8%81%94%E7%B3%BB%E4%BD%9C%E8%80%85) 发送你的皮肤修改版本并附加修改内容说明。 -* 如果您已经了解该皮肤的工作方式和文件构成,同时还熟悉 Git 和 GitHub 的团队工作方式,可以选择直接 **Fork** 本项目仓库,建立您自己的项目仓库并进行修改。通过 [**Pull requests**](https://github.com/Lssg97/DetailedSystemMonitor/compare) 来参与到该皮肤的维护当中。 +* 如果您已经了解该皮肤的工作方式和文件构成,同时还熟悉 Git 和 GitHub 的团队工作方式,可以选择直接 Fork 本项目仓库,建立您自己的项目仓库并进行修改。通过 Pull requests 来参与到该皮肤的维护当中。 +* 如果您并无问题需要反馈或者有功能上的建议,但愿意提供支持,也可以考虑点击仓库页面左上角的 Sponsor 适当捐助,十分感谢您的慷慨。 ### 相关协议 -该皮肤的 **本体文件**(.ini)、**安装包**(.rmskin)以及该皮肤项目所在本 [**GitHub仓库**](https://github.com/Lssg97/DetailedSystemMonitor) 的所有文本内容除另有声明外,均在 [**知识共享 (Creative Commons) 署名-非商业性使用-相同方式共享 3.0**](https://github.com/Lssg97/DetailedSystemMonitor/blob/main/LICENSE.md) 协议下提供,附加条款亦可能应用。 +  该皮肤 **配置文件**(.ini)、**安装包**(.rmskin)以及该皮肤项目所在 [**GitHub仓库**](https://github.com/Lssg97/DetailedSystemMonitor)、[**Gitee仓库**](https://gitee.com/Lssg97/DetailedSystemMonitor) 中的所有文本内容,除另有声明外,均在 [**知识共享 (Creative Commons) 署名-非商业性使用-相同方式共享 3.0**](LICENSE.md) 协议下提供,附加条款亦可能应用。 -本仓库内容归 **全体编辑者** 共同所有,在本仓库里发布内容即表示您允许将您编辑的内容 **无偿且自由** 地分享给其他编辑者。 +  本仓库内容归 **全体编辑者** 共同所有,在本仓库里发布内容即表示您允许将您编辑的内容 **无偿且自由** 地分享给其他编辑者。 ### 其他声明 -目前该皮肤及后续更新的官方发布渠道仅为本 [GitHub仓库](https://github.com/Lssg97/DetailedSystemMonitor);相关消息的官方发布渠道包括:[中国雨滴美化社区](https://bbs.rainmeter.cn/thread-290033-1-1.html) 和 [rainmeter百度贴吧](https://tieba.baidu.com/p/6690463464)。 +  目前该皮肤及其后续更新仅在 [GitHub仓库](https://github.com/Lssg97/DetailedSystemMonitor) 发布;官方下载渠道有 [GitHub仓库](https://github.com/Lssg97/DetailedSystemMonitor)、[中国雨滴美化社区](https://bbs.rainmeter.cn/thread-290033-1-1.html) 和 [百度网盘](https://pan.baidu.com/s/1qs4fpEXaxHc3JcyXqNKOfQ);更新信息的发布渠道包括:[中国雨滴美化社区](https://bbs.rainmeter.cn/thread-290033-1-1.html) 和 [rainmeter百度贴吧](https://tieba.baidu.com/p/6868066630)。请各位用户认准以上链接。 -该皮肤的初始版本源自互联网,作者、创作时间等信息均已无从考证。本人于2010年获得了该皮肤初始版本的副本,自2015年开始致力于维护该皮肤,并在 [中国雨滴美化社区](https://bbs.rainmeter.cn/) 发布过七次独立的版本更新()。维护至今,该皮肤在构思上已经和早期版本没有任何关联,属于原创作品。不过为了致敬早期版本创作者,在名称与版本上将继续延续早期版本。 +  该皮肤的最初始版本来自互联网,原作者、制作时间等信息均已无从考证。我于2010年获得了该皮肤的初始版本副本,自2015年开始致力于维护该皮肤,并在 [中国雨滴美化社区](https://bbs.rainmeter.cn/) 发布过七次独立的版本更新()。维护至今,该皮肤无论是在结构上还是在内容上都已经和初始版本大相径庭,属于高度演绎作品。为了感谢初始版本作者,该皮肤将继续作为初始版本的延续而发展。 -该皮肤使用了两个其他作者制作的第三方 Rainmeter 插件:AMDTemperature.dll([z100s](https://tieba.baidu.com/p/2221203992))和 NvidiaGPU.dll([IZZZZZI](https://tieba.baidu.com/p/3242119308));GPU Bar 的配色方案来自 [mzflh](https://tieba.baidu.com/home/main/?un=mzflh)。感谢支持和帮助。 +  该皮肤使用了四个第三方开发者制作的 Rainmeter 插件:[AMDTemperature.dll](https://tieba.baidu.com/p/2221203992)(z100s)、[NvidiaGPU.dll](https://tieba.baidu.com/p/3242119308)(IZZZZZI)、[CPUTemp.dll](https://tieba.baidu.com/p/6855002141)(DeadUniverse)和 DeviceInfo.dll([a1091817957](https://tieba.baidu.com/home/main/?un=a1091817957));GPU Bar 配色方案来自 [mzflh](https://tieba.baidu.com/home/main/?un=mzflh)。感谢各位提供的技术支持和帮助。 ### 联系作者 -QQ:[760265690](https://wpa.qq.com/msgrd?v=3&uin=760265690) - -邮箱:lssg97@163.com +

+ QQ760265690 +
+ Emaillssg97@163.com +

diff --git a/Skin/@Resources/Image/Guid.png b/Skin/@Resources/Image/Guid.png deleted file mode 100644 index d29015c..0000000 Binary files a/Skin/@Resources/Image/Guid.png and /dev/null differ diff --git a/Skin/DetailedSystemMonitor.ini b/Skin/DetailedSystemMonitor.ini index 29f4234..daa0559 100644 --- a/Skin/DetailedSystemMonitor.ini +++ b/Skin/DetailedSystemMonitor.ini @@ -1,7 +1,9 @@ [Rainmeter] -UpDate=1000 -;Background=#@#Image\Guid.png -;BackgroundMode=4 +Update=1000 +SkinWidth=(#Zoom#*200) +SkinHeight=(#Zoom#*755) +;Background=#@#Images\Guid.png +;BackgroundMode=2 ;SolidColor=0,0,0,50 [Metadata] @@ -9,7 +11,7 @@ Name= Author=ɫ (camusice) Information=ϵͳ磬CPUGPUڴ棬Ӳ̵ϵͳϢ License=CC BY-NC-SA 3.0 -Version=v 3.2 (200802) +Version=v 3.3 (210216) [Variables] @@ -19,17 +21,18 @@ Version=v 3.2 (200802) Zoom=1.0 -;--------ʾʱ䣨TrueFalseǷʾʱ䣩-------- +;--------ʾʱ䣨True/FalseǷʾʱ䣩-------- ShowTime=True -;--------ʾͣBandwidthSpeedbpsʵʱٶB/s-------- +;--------ͣBandwidth/SpeedbpsʵʱٶB/s-------- -NetSpeedType=Bandwidth +NetSpeedType=Speed -;--------¶ͣCPUGPUʵ޷ʾGPU¶ȵͬѧѡѡCPUҪ̨СCoreTemp.exeֻIntelԵļӱѡĬʾCPU¶ȣ-------- +;--------ĬʾIPTrue/FalseƤʼĹIPǷأ-------- + +ShowWANIP=True -TempType=GPU ;==================[Ƥò]================== @@ -61,7 +64,7 @@ FontColour4=255,0,0 ;==================[̳нڵ]================== -Release=200802 +Release=210216 IntegratedGPUName="" DiscreteGPUName="" @@ -115,19 +118,6 @@ H=(#Zoom#*80) AntiAlias=1 -;==================[ê]================== - -[MeterLocation] -Meter=Image -X=(#Zoom#*199) -Y=0 -W=1 -H=1 -UpdateDivider=-1 -SolidColor=#FontColour#,0 -AntiAlias=1 - - ;==================[ϵͳʱ]================== [MeasureSysTime] @@ -139,7 +129,7 @@ Measure=String String=#ShowTime# UpdateDivider=-1 IfMatch=False -IfMatchAction=[!HideMeter MeterSysTime][!HideMeter MeterSysTimeShadow][!HideMeter BarLineTime][!SetOption TextSYS Y (#Zoom#*8)][!UpdateMeter TextSYS][!Redraw] +IfMatchAction=[!HideMeter MeterSysTime][!HideMeter MeterSysTimeShadow][!HideMeter BarLineTime][!HideMeter TextSYS][!SetOption ImageSys Y (#Zoom#*10)][!UpdateMeter ImageSys][!Redraw] [MeterSysTime] Meter=String @@ -186,7 +176,7 @@ Meter=Shape Shape=Rectangle 0,0,576,384,48 | Fill Color #FontColour#,255 | StrokeWidth 0 Shape2=Rectangle 48,48,480,288,6 Shape3=Path Path1 -Shape4=Combine Shape1 | Exclude Shape2 | Union Shape3 | Scale (69/576*#Zoom#),(60/576*#Zoom#),0,0 +Shape4=Combine Shape | Exclude Shape2 | Union Shape3 | Scale (69/576*#Zoom#),(60/576*#Zoom#),0,0 Path1=357,464 | LineTo 456,464 | ArcTo 456,512 | LineTo 120,512 | ArcTo 120,464 | LineTo 219,464 | LineTo 237,408 | ArcTo 249,400,12 | LineTo 327,400 | ArcTo 339,408,12 | LineTo 357,464 | ClosePath 1 X=(#Zoom#*10) Y=(#Zoom#*20)r @@ -199,7 +189,7 @@ AntiAlias=1 Meter=Shape Shape=Path Path1 | Fill Color 0,188,242,255 | StrokeWidth 0 Shape2=Path Path2 -Shape3=Combine Shape1 | Exclude Shape2 | Scale (22/448*#Zoom#),(22/448*#Zoom#),0,0 +Shape3=Combine Shape | Exclude Shape2 | Scale (22/448*#Zoom#),(22/448*#Zoom#),0,0 Path1=0,62 | LineTo 448,0 | LineTo 448,448 | LineTo 0,386 | ClosePath 1 Path2=0,214 | LineTo 184,214 | LineTo 184,36 | LineTo 204,34 | LineTo 204,214 | LineTo 448,214 | LineTo 448,236 | LineTo 204,236 | LineTo 204,414 | LineTo 184,412 | LineTo 184,236 | LineTo 0,236 | LineTo 0,214 | ClosePath 1 X=(#Zoom#*23)r @@ -213,8 +203,10 @@ AntiAlias=1 [MeasureUpdateCheck] Measure=WebParser -URL=https://github.com/Lssg97/DetailedSystemMonitor/blob/master/Version -RegExp=(?siU)v\s(.*)\s\((\d*)\)\s\((.*)\) +;URL=https://github.com/Lssg97/DetailedSystemMonitor/blob/main/Version +;RegExp=(?siU)v\s(.*)\s\((\d*)\)\s\((.*)\) +URL=https://gitee.com/Lssg97/DetailedSystemMonitor/blob/main/Version +RegExp=v\s(.*)\s\((\d*)\)\s\((.*)\) UpdateRate=-1 [MeasureSkinVersion] @@ -227,7 +219,7 @@ Measure=WebParser URL=[MeasureUpdateCheck] StringIndex=2 IfAboveValue=#Release# -IfAboveAction=[!ShowMeter ImageUpdateCheck][!SetOption ImageUpdateCheck ToolTipText "и£v[MeasureSkinVersion]-r[MeasureSkinRelease]"][!SetOption ImageUpdateCheck LeftMouseUpAction "https://github.com/Lssg97/DetailedSystemMonitor/releases/tag/v[&MeasureSkinVersion]"][!UpdateMeter MeterLANIP] +IfAboveAction=[!ShowMeter ImageUpdateCheck][!SetOption ImageUpdateCheck ToolTipText "и£v[MeasureSkinVersion]-r[MeasureSkinRelease]"][!SetOption ImageUpdateCheck LeftMouseUpAction "https://github.com/Lssg97/DetailedSystemMonitor/releases/tag/v[&MeasureSkinVersion]"][!UpdateMeter ImageUpdateCheck] [ImageUpdateCheck] Meter=Shape @@ -247,7 +239,7 @@ Measure=Plugin Plugin=SysInfo SysInfoType=USER_NAME UpdateDivider=-1 -Substitute="Administrator":"Ա","Admin":"Ա","Guest":"ÿ" +Substitute="DefaultAccount":"˻","WDAGUtilityAccount":"˻","Administrator":"Ա","Admin":"Ա","Guest":"ÿ" [MeterUserNameText] Meter=Shape @@ -255,7 +247,7 @@ Shape=Ellipse 248,248,248 | Fill Color #FontColour#,255 | StrokeWidth 0 Shape2=Ellipse 248,184,88 Shape3=Path Path1 Path1=394,372 | ArcTo 102,372,191 | ArcTo 200,312,110 | ArcTo 296,312,120,*,*,1 | ArcTo 394,372,110 | ClosePath 1 -Shape4=Combine Shape1 | Exclude Shape2 | Exclude Shape3 | Scale (13/496*#Zoom#),(13/496*#Zoom#),0,0 | Offset 0,26 | TransformOrder Offset,Scale +Shape4=Combine Shape | Exclude Shape2 | Exclude Shape3 | Scale (13/496*#Zoom#),(13/496*#Zoom#),0,0 | Offset 0,26 | TransformOrder Offset,Scale X=(#Zoom#*92) Y=(#Zoom#*-28)r W=(#Zoom#*13) @@ -269,6 +261,8 @@ ToolTipText=" Meter=String MeterStyle=MeterRightStringParent MeasureName=MeasureUserName +ClipString=1 +W=(#Zoom#*75) UpdateDivider=-1 ;--------ʱ-------- @@ -285,7 +279,7 @@ Shape3=Path Path1 | Rotate 90 | Scale 2,2 | Offset -312,148.5 Shape4=Path Path2 | Rotate 90 | Scale 2,2 | Offset -312,148.5 Shape5=Path Path1 | Offset 0,298.9 Shape6=Path Path2 | Offset 0,298.8 -Shape7=Combine Shape1 | Exclude Shape2 | Union Shape3 | Exclude Shape4 | Union Shape5 | Exclude Shape6 | Scale (13/512*#Zoom#),(13/512*#Zoom#),0,0 | Offset 0,26 | TransformOrder Offset,Scale +Shape7=Combine Shape | Exclude Shape2 | Union Shape3 | Exclude Shape4 | Union Shape5 | Exclude Shape6 | Scale (13/512*#Zoom#),(13/512*#Zoom#),0,0 | Offset 0,26 | TransformOrder Offset,Scale Path1=512.1,191 | LineTo 503.9,205.3 | CurveTo 488.8,210.7,500.9,210.6,494.5,212.8 | CurveTo 456.7,192.1,477,206.3,466.2,200 | CurveTo 453.9,176.4,452.1,188.3,450.9,181.6 | LineTo 462.1,162.1 | CurveTo 446.2,134.7,455.2,154.1,449.8,144.8 | LineTo 429.7,134.7 | CurveTo 417.5,124.4,423.7,134.7,418.5,130.4 | CurveTo 417.5,87.3,415.5,112.4,415.4,99.8 | CurveTo 429.7,76.9,418.5,81.3,423.7,76.9 | LineTo 446.2,76.9 | CurveTo 462.1,49.5,449.8,66.8,455.2,57.5 | LineTo 453.9,35.2 | CurveTo 456.7,19.5,450.9,30,452,23.3 | CurveTo 488.8,0.9,466.2,11.6,477.1,5.3 | CurveTo 503.9,6.3,494.5,-1.2,500.9,1 | LineTo 512.1,20.6 | CurveTo 543.8,20.6,522.6,18.7,533.3,18.7 | LineTo 552,6.3 | CurveTo 567.1,0.9,555,1,561.4,-1.2 | CurveTo 599.2,19.5,578.9,5.3,589.7,11.6 | CurveTo 602,35.2,603.8,23.3,605,30 | LineTo 593.8,49.5 | CurveTo 609.7,76.9,600.7,57.5,606.1,66.8 | LineTo 626.2,76.9 | CurveTo 638.4,87.2,632.2,76.9,637.4,81.2 | CurveTo 638.4,124.3,640.4,99.2,640.5,111.8 | CurveTo 626.2,134.7,637.4,130.3,632.2,134.7 | LineTo 609.7,134.7 | CurveTo 593.8,162.1,606.1,144.8,600.7,154.1 | LineTo 602,176.4 | CurveTo 599.2,192.1,605,181.6,603.9,188.3 | CurveTo 567.1,210.7,589.7,200,578.8,206.3 | CurveTo 552,205.3,561.4,212.8,555,210.6 | LineTo 543.8,191 | CurveTo 512.1,191,533.4,192.9,522.6,192.9 | ClosePath 1 Path2=501.6,132.2 | CurveTo 554.4,79.4,540.1,161.8,584,117.9 | CurveTo 501.6,132.2,515.9,49.7,472,93.7 | ClosePath 1 X=(#Zoom#*91) @@ -328,7 +322,7 @@ Shape2=Ellipse 496,368,144 Shape3=Path Path1 Shape4=Rectangle 480,288,32,96,10 Shape5=Rectangle 480,352,80,32,10 -Shape6=Combine Shape1 | Union Shape2 | Union Shape3 | Exclude Shape4 | Exclude Shape5 | Scale (13/512*#Zoom#),(13/512*#Zoom#),0,0 +Shape6=Combine Shape | Union Shape2 | Union Shape3 | Exclude Shape4 | Exclude Shape5 | Scale (13/512*#Zoom#),(13/512*#Zoom#),0,0 Path1=395,512 | LineTo 48,512 | ArcTo 0,464,48 | LineTo 0,422 | ArcTo 134,288,134 | LineTo 151,288 | ArcTo 297,288,176,*,*,1 | LineTo 314,288 | ArcTo 338,290,134 | ArcTo 395,512,176,*,*,1 | ClosePath 1 X=(#Zoom#*91) Y=(#Zoom#*21)r @@ -389,7 +383,7 @@ Shape3=Rectangle 0,160,384,64,11 Shape3=Rectangle 0,160,384,64,11 Shape4=Path Path1 Shape5=Rectangle 160,256,64,256 -Shape6=Combine Shape1 | Union Shape2 | Union Shape3 | Union Shape4 | Union Shape5 | Scale (13/512*#Zoom#),(13/512*#Zoom#),0,0 | Offset 0,26 | TransformOrder Offset,Scale +Shape6=Combine Shape | Union Shape2 | Union Shape3 | Union Shape4 | Union Shape5 | Scale (13/512*#Zoom#),(13/512*#Zoom#),0,0 | Offset 0,26 | TransformOrder Offset,Scale Path1=32,224 | LineTo 352,224 | LineTo 352,256 | ArcTo 32,256 | LineTo 32,224 | ClosePath 1 X=(#Zoom#*12) Y=(#Zoom#*21)r @@ -404,7 +398,7 @@ Shape2=Rectangle 576,64,64,192,24 Shape3=Rectangle 64,64,480,192 Shape4=Rectangle 544,128,32,64 Shape5=Rectangle 96,96,(416*[MeasureBatteryPercent]/100),128 -Shape6=Combine Shape1 | Union Shape2 | Exclude Shape3 | Exclude Shape4 | Union Shape5 | Scale (13/512*#Zoom#),(13/512*#Zoom#),0,0 | Offset 0,130 | TransformOrder Offset,Scale +Shape6=Combine Shape | Union Shape2 | Exclude Shape3 | Exclude Shape4 | Union Shape5 | Scale (13/512*#Zoom#),(13/512*#Zoom#),0,0 | Offset 0,130 | TransformOrder Offset,Scale X=(#Zoom#*0)r Y=(#Zoom#*0)r Hidden=1 @@ -561,18 +555,13 @@ ToolTipText=" [MeterSentSpeed] Meter=String +MeterStyle=MeterRightStringParent MeasureName=MeasureSentSpeed Text="%1 Kbps" -FontFace=Noto Sans CJK SC FontSize=(#Zoom#*6) -FontColor=#FontColour2#,255 -FontWeight=400 -StringAlign=Right NumOfDecimals=1 AutoScale=1 X=(#Zoom#*59)r -Y=(#Zoom#*-1)r -AntiAlias=1 [MeasureReceivedSpeed] Measure=NetIn @@ -594,18 +583,13 @@ ToolTipText=" [MeterReceivedSpeed] Meter=String +MeterStyle=MeterRightStringParent MeasureName=MeasureReceivedSpeed Text="%1 Kbps" -FontFace=Noto Sans CJK SC FontSize=(#Zoom#*6) -FontColor=#FontColour2#,255 -FontWeight=400 -StringAlign=Right NumOfDecimals=1 AutoScale=1 X=(#Zoom#*59)r -Y=(#Zoom#*-1)r -AntiAlias=1 [MeterSpeedLineContainer] Meter=Shape @@ -684,10 +668,22 @@ AntiAlias=1 ;--------IP-------- +[MeasureShowWANIPAlto] +Measure=String +String=#ShowWANIP# +UpdateDivider=-1 +DynamicVariables=1 +IfMatch=True +IfMatchAction=[!SetOption MeterWANIP Text "%1"][!SetOption MeterWANIP ToolTipHidden 0][!SetOption MeterWANIP LeftMouseUpAction "[!SetVariable ShowWANIP False][!UpdateMeasure MeasureShowWANIPAlto]"][!UpdateMeter MeterWANIP][!Redraw] +IfMatch2=False +IfMatchAction2=[!SetOption MeterWANIP Text "***.***.***.***"][!SetOption MeterWANIP ToolTipHidden 1][!SetOption MeterWANIP LeftMouseUpAction "[!SetVariable ShowWANIP True][!UpdateMeasure MeasureShowWANIPAlto]"][!UpdateMeter MeterWANIP][!Redraw] + [MeasureWANIP] Measure=WebParser -URL=https://www.httpbin.org/get -RegExp=(?siU)"origin":\s"(.*)", +;URL=https://www.httpbin.org/get +URL=https://checkip.amazonaws.com/ +;RegExp=(?siU)"origin":\s"(.*)", +RegExp=(?siU)^(.*)$ StringIndex=1 UpdateRate=600 FinishAction=[!CommandMeasure MeasureWANIPLocation "Update"] @@ -715,7 +711,7 @@ Shape=Ellipse 248,248,248 | Fill Color #FontColour#,255 | StrokeWidth 0 Shape2=Rectangle 0,152,496,32 Shape3=Rectangle 0,312,496,32 Shape4=Path Path1 -Shape5=Combine Shape1 | Exclude Shape2 | Exclude Shape3 | Exclude Shape4 | Scale (13/496*#Zoom#),(13/496*#Zoom#),0,0 | Offset 0,26 | TransformOrder Offset,Scale +Shape5=Combine Shape | Exclude Shape2 | Exclude Shape3 | Exclude Shape4 | Scale (13/496*#Zoom#),(13/496*#Zoom#),0,0 | Offset 0,26 | TransformOrder Offset,Scale Path1=177,10 | ArcTo 248,0,248 | CurveTo 248,496,375,0,375,496 | CurveTo 248,0,121,496,121,0 | ArcTo 319,10,248 | ArcTo 319,486,525 | ArcTo 177,486,248 | ArcTo 177,10,525 | ClosePath 1 X=(#Zoom#*92) Y=(#Zoom#*-35)r @@ -734,9 +730,15 @@ FontFace=Noto Sans Mono CJK SC InlineSetting=CharacterSpacing | (#Zoom#*-1) | (#Zoom#*-1) InlinePattern="^\d{1,3}(\.)\d{1,3}(\.)\d{1,3}(\.)\d{1,3}$" InlineSetting2=CharacterSpacing | (#Zoom#*0.15) | (#Zoom#*0.15) -InlinePattern2="^(\d{1,3}).(\d{1,3}).(\d{1,3}).(\d{1,3})$" +InlinePattern2="^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$" InlineSetting3=Face | Noto Sans CJK SC InlinePattern3="N/A" +InlineSetting4=Color | #FontColour4#,255 +InlinePattern4="N/A" +InlineSetting5=CharacterSpacing | (#Zoom#*-1) | (#Zoom#*-1) +InlinePattern5="^\*\*\*(\.)\*\*\*(\.)\*\*\*(\.)\*\*\*$" +InlineSetting6=CharacterSpacing | (#Zoom#*-0.1) | (#Zoom#*-0.1) +InlinePattern6="^(\*\*\*)\.(\*\*\*)\.(\*\*\*)\.(\*\*\*)$" SolidColor=#FontColour2#,1 DynamicVariables=1 ToolTipText="[MeasureWANIPLocation]" @@ -790,9 +792,11 @@ FontFace=Noto Sans Mono CJK SC InlineSetting=CharacterSpacing | (#Zoom#*-1) | (#Zoom#*-1) InlinePattern="^\d{1,3}(\.)\d{1,3}(\.)\d{1,3}(\.)\d{1,3}$" InlineSetting2=CharacterSpacing | (#Zoom#*0.15) | (#Zoom#*0.15) -InlinePattern2="^(\d{1,3}).(\d{1,3}).(\d{1,3}).(\d{1,3})$" +InlinePattern2="^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$" InlineSetting3=Face | Noto Sans CJK SC InlinePattern3="N/A" +InlineSetting4=Color | #FontColour4#,255 +InlinePattern4="N/A" SolidColor=#FontColour2#,1 ;--------DNS-------- @@ -814,7 +818,7 @@ Shape6=Ellipse 368,224,24 Shape7=Ellipse 432,224,24 Shape8=Ellipse 368,384,24 Shape9=Ellipse 432,384,24 -Shape10=Combine Shape1 | Union Shape2 | Union Shape3 | Exclude Shape4 | Exclude Shape5 | Exclude Shape6 | Exclude Shape7 | Exclude Shape8 | Exclude Shape9 | Scale (12/448*#Zoom#),(12/448*#Zoom#),0,0 | Offset 0,26 | TransformOrder Offset,Scale +Shape10=Combine Shape | Union Shape2 | Union Shape3 | Exclude Shape4 | Exclude Shape5 | Exclude Shape6 | Exclude Shape7 | Exclude Shape8 | Exclude Shape9 | Scale (12/448*#Zoom#),(12/448*#Zoom#),0,0 | Offset 0,26 | TransformOrder Offset,Scale X=(#Zoom#*92) Y=(#Zoom#*21)r W=(#Zoom#*15) @@ -832,9 +836,11 @@ FontFace=Noto Sans Mono CJK SC InlineSetting=CharacterSpacing | (#Zoom#*-1) | (#Zoom#*-1) InlinePattern="^\d{1,3}(\.)\d{1,3}(\.)\d{1,3}(\.)\d{1,3}$" InlineSetting2=CharacterSpacing | (#Zoom#*0.15) | (#Zoom#*0.15) -InlinePattern2="^(\d{1,3}).(\d{1,3}).(\d{1,3}).(\d{1,3})$" +InlinePattern2="^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$" InlineSetting3=Face | Noto Sans CJK SC InlinePattern3="N/A" +InlineSetting4=Color | #FontColour4#,255 +InlinePattern4="N/A" ;--------豸Ϣ-------- @@ -842,16 +848,17 @@ InlinePattern3="N/A" Measure=Plugin Plugin=UsageMonitor Category=Network Interface -Counter=TCP RSC Average Packet Size +Counter=Current Bandwidth Index=1 IfMatch=^$|^0$ -IfNotMatchAction=[!SetOption MeterNetworkCardName1 UpdateDivider -1] +IfNotMatchAction=[!EnableMeasure MeasureNetworkCardName2][!ShowMeter MeterNetworkCardName1][!SetOption MeterNetworkCardName1 UpdateDivider -1][!SetOption TextCPU Y (#Zoom#*6)r][!UpdateMeter MeterNetworkCardName1][!UpdateMeter TextCPU][!Redraw] Substitute="(R)":"[\x00AE]","(TM)":"[\x2122]","[R]":"[\x00AE]","[TM]":"[\x2122]" [MeterNetworkCardName1] Meter=String MeterStyle=MeterDeviceInfoParent MeasureName=MeasureNetworkCardName1 +Hidden=1 UpdateDivider=1 ToolTipText="ͺ" @@ -859,10 +866,11 @@ ToolTipText=" Measure=Plugin Plugin=UsageMonitor Category=Network Interface -Counter=TCP RSC Average Packet Size +Counter=Current Bandwidth Index=2 +Disabled=1 IfMatch=^$|^0$ -IfNotMatchAction=[!ShowMeter MeterNetworkCardName2][!SetOption MeterNetworkCardName2 UpdateDivider -1][!SetOption TextCPU Y (#Zoom#*16)r][!UpdateMeter TextCPU][!Redraw] +IfNotMatchAction=[!ShowMeter MeterNetworkCardName2][!SetOption MeterNetworkCardName2 UpdateDivider -1][!SetOption TextCPU Y (#Zoom#*16)r][!UpdateMeter MeterNetworkCardName1][!UpdateMeter MeterNetworkCardName2][!UpdateMeter TextCPU][!Redraw] Substitute="(R)":"[\x00AE]","(TM)":"[\x2122]","[R]":"[\x00AE]","[TM]":"[\x2122]" [MeterNetworkCardName2] @@ -881,7 +889,7 @@ ToolTipText=" Meter=String MeterStyle=MeterTitalParent Text=" CPU " -Y=(#Zoom#*6)r +Y=(#Zoom#*-9)r [ImageCPU] Meter=Shape @@ -902,11 +910,13 @@ Shape14=Path Path5 Shape15=Path Path5 | Offset 0,(-224/3) Shape16=Path Path5 | Offset 0,(-224/3*2) Shape17=Path Path5 | Offset 0,-224 -Shape18=Path PathC | Scale 1,0.9,0,0 | Offset 0,20 -Shape19=Path PathPO | Scale 1,0.9,0,0 | Offset 0,20 -Shape20=Path PathPI | Scale 1,0.9,0,0 | Offset 0,20 -Shape21=Path PathU | Scale 1,0.9,0,0 | Offset 0,20 -Shape22=Combine Shape1 | Union Shape2 | Union Shape3 | Union Shape4 | Union Shape5 | Union Shape6 | Union Shape7 | Union Shape8 | Union Shape9 | Union Shape10 | Union Shape11 | Union Shape12 | Union Shape13 | Union Shape14 | Union Shape15 | Union Shape16 | Union Shape17 | Exclude Shape18 | Exclude Shape19 | Union Shape20 | Exclude Shape21 | Scale (35/512*#Zoom#),(35/512*#Zoom#),0,0 +Shape18=Combine Shape | Union Shape2 | Union Shape3 | Union Shape4 | Union Shape5 | Union Shape6 | Union Shape7 | Union Shape8 | Union Shape9 | Union Shape10 | Union Shape11 | Union Shape12 | Union Shape13 | Union Shape14 | Union Shape15 | Union Shape16 | Union Shape17 +Shape19=Path PathC | Scale 1,0.9,0,0 | Offset 0,20 +Shape20=Path PathPO | Scale 1,0.9,0,0 | Offset 0,20 +Shape21=Path PathPI | Scale 1,0.9,0,0 | Offset 0,20 +Shape22=Path PathU | Scale 1,0.9,0,0 | Offset 0,20 +Shape23=Combine Shape19 | Union Shape20 | Exclude Shape21 | Union Shape22 +Shape24=Combine Shape18 | Exclude Shape23 | Scale (35/512*#Zoom#),(35/512*#Zoom#),0,0 Path1=120,416 | LineTo 392,416 | ArcTo 416,392,24,24,0,1,0 | LineTo 416,120 | ArcTo 392,96,24,24,0,1,0 | LineTo 120,96 | ArcTo 96,120,24,24,0,1,0 | LineTo 96,392 | ArcTo 120,416,24,24,0,1,0 | ClosePath 1 Path2=138,512 | LineTo 150,512 | ArcTo 156,506,6,6,0,1,0 | LineTo 156,488 | LineTo 162,488 | ArcTo 168,482,6,6,0,1,0 | LineTo 168,440 | LineTo 120,440 | LineTo 120,482 | ArcTo 126,488,6,6,0,1,0 | LineTo 132,488 | LineTo 132,506 | ArcTo 138,512,6,6,0,1,0 | ClosePath 1 Path3=344,30 | LineTo 344,72 | LineTo 392,72 | LineTo 392,30 | ArcTo 386,24,6,6,0,1,0 | LineTo 380,24 | LineTo 380,6 | ArcTo 374,0,6,6,0,1,0 | LineTo 362,0 | ArcTo 356,6,6,6,0,1,0 | LineTo 356,24 | LineTo 350,24 | ArcTo 344,30,6,6,0,1,0 | ClosePath 1 @@ -916,6 +926,23 @@ PathC=220,195 | LineTo 220,207 | ArcTo 220,276,52,52,0,1,1 | LineTo 220,288 | Ar PathPO=240.5,184 | LineTo 271,184 | ArcTo 271,244 | LineTo 250,244 | LineTo 250,301 | LineTo 240.5,301 | LineTo 240.5,184 | ClosePath 1 PathPI=250,193.5 | LineTo 271,193.5 | ArcTo 271,234.5 | LineTo 250,234.5 | LineTo 250,193.5 | ClosePath 1 PathU=324,184 | LineTo 333,184 | LineTo 333,268 | ArcTo 383,268,25,25,0,1,0 | LineTo 383,184 | LineTo 392,184 | LineTo 392,268 | ArcTo 324,268,34,34,0,0,0 | ClosePath 1 +MainLogo1=130,168 | LineTo 130,160 | CurveTo 454,169,271,80,424,106 | CurveTo 400,297,481,222,449,278 | LineTo 400,275 | CurveTo 430,168,448,245,451,197 | CurveTo 130,168,392,111,250,108 | ClosePath 1 +MainLogo2=83,191 | LineTo 83,201 | CurveTo 63,314,44,247,51,297 | CurveTo 391,315,101,380,278,379 | LineTo 391,347 | CurveTo 65,350,286,402,127,408 | CurveTo 83,191,12,296,43,223 | ClosePath 1 +LogoNamei=100,211 | LineTo 121,211 | LineTo 121,298 | ArcTo 100,277,21 | LineTo 100,210 | ClosePath 1 +LogoNamen=141,211 | LineTo 190,211 | ArcTo 211,232,21 | LineTo 211,298 | LineTo 190,298 | LineTo 190,236 | ArcTo 183,229,7,*,*,1 | LineTo 162,229 | LineTo 162,298 | LineTo 141,298 | LineTo 141,211 | ClosePath 1 +LogoNamet=229,188 | LineTo 250,188 | LineTo 250,211 | LineTo 267,211 | LineTo 267,228 | LineTo 250,228 | LineTo 250,273 | ArcTo 257,280,7,*,*,1 | LineTo 267,280 | LineTo 267,298 | LineTo 250,298 | ArcTo 229,277,21 | LineTo 229,188 | ClosePath 1 +LogoNameew=349,261 | LineTo 349,250 | CurveTo 273,261,349,194,267,197 | CurveTo 347,285,276,304,325,308 | LineTo 334,273 | CurveTo 294,261,322,286,294,285 | LineTo 349,261 | ClosePath 1 +LogoNameen=328,247 | LineTo 294,247 | ArcTo 328,247,*,20 | ClosePath 1 +LogoNamel=363,175 | LineTo 384,175 | LineTo 384,298 | ArcTo 363,277,21 | LineTo 363,175 | ClosePath 1 +LogoRegisterw=406.25,188.5 | LineTo 406.25,179.25 | LineTo 410,179.25 | ArcTo 410,184.75 | LineTo 413,188.5 | LineTo 411.25,188.5 | LineTo 408.25,184.75 | LineTo 407.75,184.75 | LineTo 407.75,188.5 | LineTo 406.25,188.5 | ClosePath 1 +LogoRegisteri=407.75,180.75 | LineTo 410,180.75 | ArcTo 410,183.25 | LineTo 407.75,183.25 | LineTo 407.75,180.75 | ClosePath 1 +MainLogo3=386,202 | LineTo 484,202 | LineTo 484,299 | LineTo 455,271 | LineTo 455,230 | LineTo 414,230 | LineTo 386,202 | ClosePath 1 +MainLogo4=414,233 | LineTo 414,270 | LineTo 453,270 | LineTo 426,299 | LineTo 386,299 | LineTo 386,261 | LineTo 414,233 | ClosePath 1 +LogoNameAw=17,298 | LineTo 56,202 | LineTo 84,202 | LineTo 126,298 | LineTo 100,298 | LineTo 92,280 | LineTo 49,280 | LineTo 42,298 | LineTo 17,298 | ClosePath 1 +LogoNameAn=57,262 | LineTo 70,227 | LineTo 85,262 | LineTo 57,262 | ClosePath 1 +LogoNameM=137,298 | LineTo 137,202 | LineTo 159,202 | LineTo 190,237 | LineTo 220,202 | LineTo 243,202 | LineTo 243,298 | LineTo 218,298 | LineTo 218,240 | LineTo 191,270 | LineTo 189,270 | LineTo 162,240 | LineTo 162,298 | LineTo 137,298 | ClosePath 1 +LogoNameDw=260,298 | LineTo 260,202 | LineTo 305,202.5 | CurveTo 357,250,345,205,357,223 | CurveTo 305,297.5,358,277,350,295 | LineTo 260,298 | ClosePath 1 +LogoNameDn=285,281 | LineTo 285,221 | LineTo 303,221 | CurveTo 333,248,321,222,333,232 | CurveTo 303,281,333,264,325,279 | LineTo 285,281 | ClosePath 1 X=(#Zoom#*33) Y=(#Zoom#*39)r W=(#Zoom#*35) @@ -923,99 +950,24 @@ H=(#Zoom#*35) UpdateDivider=-1 AntiAlias=1 -;--------CPU߼Զ-------- - -[MeasureCPUNumAlto2Source] -Measure=Registry -RegHKey=HKEY_LOCAL_MACHINE -RegKey=HARDWARE\DESCRIPTION\System\CentralProcessor\1 -RegValue=ProcessorNameString -UpdateDivider=-1 - -[MeasureCPUNumAlto2] -Measure=String -String=[MeasureCPUNumAlto2Source] -UpdateDivider=-1 -DynamicVariables=1 -IfMatch=^0$ -IfNotMatchAction=[!EnableMeasure MeasureCPU1][!ShowMeter MeterCPU1Bar][!SetOption MeterCPUBarContainer Shape2 "Path CPU0End"][!SetOption MeterCPUBarContainer Shape3 "Combine Shape | Exclude Shape2"][!SetOption MeterCPUBarContainer CPU0End "(#Zoom#*40*(1+cos(rad(135+270*1/2-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/2-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/2+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/2+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/2+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/2+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/2-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/2-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/2-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/2-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPU0Bar RotationAngle (rad(270*1/2))][!SetOption MeterCPU1Bar StartAngle (rad(135+270*1/2))][!UpdateMeter MeterCPUBarContainer][!UpdateMeter MeterCPU0Bar][!UpdateMeter MeterCPU1Bar][!Redraw] - -[MeasureCPUNumAlto4Source] -Measure=Registry -RegHKey=HKEY_LOCAL_MACHINE -RegKey=HARDWARE\DESCRIPTION\System\CentralProcessor\3 -RegValue=ProcessorNameString -UpdateDivider=-1 - -[MeasureCPUNumAlto4] -Measure=String -String=[MeasureCPUNumAlto4Source] -UpdateDivider=-1 -DynamicVariables=1 -IfMatch=^0$ -IfNotMatchAction=[!EnableMeasure MeasureCPU2][!EnableMeasure MeasureCPU3][!ShowMeter MeterCPU2Bar][!ShowMeter MeterCPU3Bar][!SetOption MeterCPUBarContainer Shape3 "Path CPU1End"][!SetOption MeterCPUBarContainer Shape4 "Path CPU2End"][!SetOption MeterCPUBarContainer Shape5 "Combine Shape | Exclude Shape2 | Exclude Shape3 | Exclude Shape4"][!SetOption MeterCPUBarContainer CPU0End "(#Zoom#*40*(1+cos(rad(135+270*1/4-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/4-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/4+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/4+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/4+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/4+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/4-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/4-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/4-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/4-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU1End "(#Zoom#*40*(1+cos(rad(135+270*2/4-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/4-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/4+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/4+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/4+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/4+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/4-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/4-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/4-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/4-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU2End "(#Zoom#*40*(1+cos(rad(135+270*3/4-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/4-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/4+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/4+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/4+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/4+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/4-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/4-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/4-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/4-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPU0Bar RotationAngle (rad(270*1/4))][!SetOption MeterCPU1Bar StartAngle (rad(135+270*1/4))][!SetOption MeterCPU1Bar RotationAngle (rad(270*1/4))][!SetOption MeterCPU2Bar StartAngle (rad(135+270*2/4))][!SetOption MeterCPU2Bar RotationAngle (rad(270*1/4))][!SetOption MeterCPU3Bar StartAngle (rad(135+270*3/4))][!UpdateMeter MeterCPUBarContainer][!UpdateMeter MeterCPU0Bar][!UpdateMeter MeterCPU1Bar][!UpdateMeter MeterCPU2Bar][!UpdateMeter MeterCPU3Bar][!Redraw] - -[MeasureCPUNumAlto6Source] -Measure=Registry -RegHKey=HKEY_LOCAL_MACHINE -RegKey=HARDWARE\DESCRIPTION\System\CentralProcessor\5 -RegValue=ProcessorNameString -UpdateDivider=-1 - -[MeasureCPUNumAlto6] -Measure=String -String=[MeasureCPUNumAlto6Source] -UpdateDivider=-1 -DynamicVariables=1 -IfMatch=^0$ -IfNotMatchAction=[!EnableMeasure MeasureCPU4][!EnableMeasure MeasureCPU5][!ShowMeter MeterCPU4Bar][!ShowMeter MeterCPU5Bar][!SetOption MeterCPUBarContainer Shape5 "Path CPU3End"][!SetOption MeterCPUBarContainer Shape6 "Path CPU4End"][!SetOption MeterCPUBarContainer Shape7 "Combine Shape | Exclude Shape2 | Exclude Shape3 | Exclude Shape4 | Exclude Shape5 | Exclude Shape6"][!SetOption MeterCPUBarContainer CPU0End "(#Zoom#*40*(1+cos(rad(135+270*1/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/6-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/6+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/6+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/6+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/6+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/6-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/6-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/6-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU1End "(#Zoom#*40*(1+cos(rad(135+270*2/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/6-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/6+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/6+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/6+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/6+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/6-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/6-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/6-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU2End "(#Zoom#*40*(1+cos(rad(135+270*3/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/6-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/6+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/6+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/6+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/6+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/6-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/6-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/6-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU3End "(#Zoom#*40*(1+cos(rad(135+270*4/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/6-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*4/6+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/6+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*4/6+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*4/6+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*4/6-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*4/6-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*4/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/6-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU4End "(#Zoom#*40*(1+cos(rad(135+270*5/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/6-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*5/6+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/6+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*5/6+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*5/6+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*5/6-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*5/6-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*5/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/6-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPU0Bar RotationAngle (rad(270*1/6))][!SetOption MeterCPU1Bar StartAngle (rad(135+270*1/6))][!SetOption MeterCPU1Bar RotationAngle (rad(270*1/6))][!SetOption MeterCPU2Bar StartAngle (rad(135+270*2/6))][!SetOption MeterCPU2Bar RotationAngle (rad(270*1/6))][!SetOption MeterCPU3Bar StartAngle (rad(135+270*3/6))][!SetOption MeterCPU3Bar RotationAngle (rad(270*1/6))][!SetOption MeterCPU4Bar StartAngle (rad(135+270*4/6))][!SetOption MeterCPU4Bar RotationAngle (rad(270*1/6))][!SetOption MeterCPU5Bar StartAngle (rad(135+270*5/6))][!UpdateMeter MeterCPUBarContainer][!UpdateMeter MeterCPU0Bar][!UpdateMeter MeterCPU1Bar][!UpdateMeter MeterCPU2Bar][!UpdateMeter MeterCPU3Bar][!UpdateMeter MeterCPU4Bar][!UpdateMeter MeterCPU5Bar][!Redraw] - -[MeasureCPUNumAlto8Source] -Measure=Registry -RegHKey=HKEY_LOCAL_MACHINE -RegKey=HARDWARE\DESCRIPTION\System\CentralProcessor\7 -RegValue=ProcessorNameString -UpdateDivider=-1 - -[MeasureCPUNumAlto8] -Measure=String -String=[MeasureCPUNumAlto8Source] -UpdateDivider=-1 -DynamicVariables=1 -IfMatch=^0$ -IfNotMatchAction=[!EnableMeasure MeasureCPU6][!EnableMeasure MeasureCPU7][!ShowMeter MeterCPU6Bar][!ShowMeter MeterCPU7Bar][!SetOption MeterCPUBarContainer Shape7 "Path CPU5End"][!SetOption MeterCPUBarContainer Shape8 "Path CPU6End"][!SetOption MeterCPUBarContainer Shape9 "Combine Shape | Exclude Shape2 | Exclude Shape3 | Exclude Shape4 | Exclude Shape5 | Exclude Shape6 | Exclude Shape7 | Exclude Shape8"][!SetOption MeterCPUBarContainer CPU0End "(#Zoom#*40*(1+cos(rad(135+270*1/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/8-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/8+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/8+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/8+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/8+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/8-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/8-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/8-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU1End "(#Zoom#*40*(1+cos(rad(135+270*2/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/8-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/8+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/8+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/8+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/8+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/8-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/8-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/8-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU2End "(#Zoom#*40*(1+cos(rad(135+270*3/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/8-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/8+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/8+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/8+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/8+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/8-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/8-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/8-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU3End "(#Zoom#*40*(1+cos(rad(135+270*4/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/8-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*4/8+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/8+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*4/8+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*4/8+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*4/8-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*4/8-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*4/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/8-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU4End "(#Zoom#*40*(1+cos(rad(135+270*5/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/8-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*5/8+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/8+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*5/8+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*5/8+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*5/8-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*5/8-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*5/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/8-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU5End "(#Zoom#*40*(1+cos(rad(135+270*6/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*6/8-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*6/8+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*6/8+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*6/8+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*6/8+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*6/8-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*6/8-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*6/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*6/8-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU6End "(#Zoom#*40*(1+cos(rad(135+270*7/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*7/8-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*7/8+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*7/8+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*7/8+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*7/8+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*7/8-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*7/8-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*7/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*7/8-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPU0Bar RotationAngle (rad(270*1/8))][!SetOption MeterCPU1Bar StartAngle (rad(135+270*1/8))][!SetOption MeterCPU1Bar RotationAngle (rad(270*1/8))][!SetOption MeterCPU2Bar StartAngle (rad(135+270*2/8))][!SetOption MeterCPU2Bar RotationAngle (rad(270*1/8))][!SetOption MeterCPU3Bar StartAngle (rad(135+270*3/8))][!SetOption MeterCPU3Bar RotationAngle (rad(270*1/8))][!SetOption MeterCPU4Bar StartAngle (rad(135+270*4/8))][!SetOption MeterCPU4Bar RotationAngle (rad(270*1/8))][!SetOption MeterCPU5Bar StartAngle (rad(135+270*5/8))][!SetOption MeterCPU5Bar RotationAngle (rad(270*1/8))][!SetOption MeterCPU6Bar StartAngle (rad(135+270*6/8))][!SetOption MeterCPU6Bar RotationAngle (rad(270*1/8))][!SetOption MeterCPU7Bar StartAngle (rad(135+270*7/8))][!UpdateMeter MeterCPUBarContainer][!UpdateMeter MeterCPU0Bar][!UpdateMeter MeterCPU1Bar][!UpdateMeter MeterCPU2Bar][!UpdateMeter MeterCPU3Bar][!UpdateMeter MeterCPU4Bar][!UpdateMeter MeterCPU5Bar][!UpdateMeter MeterCPU6Bar][!UpdateMeter MeterCPU7Bar][!Redraw] - -[MeasureCPUNumAlto12Source] -Measure=Registry -RegHKey=HKEY_LOCAL_MACHINE -RegKey=HARDWARE\DESCRIPTION\System\CentralProcessor\11 -RegValue=ProcessorNameString -UpdateDivider=-1 - -[MeasureCPUNumAlto12] -Measure=String -String=[MeasureCPUNumAlto12Source] -UpdateDivider=-1 -DynamicVariables=1 -IfMatch=^0$ -IfNotMatchAction=[!EnableMeasure MeasureCPU8][!EnableMeasure MeasureCPU9][!EnableMeasure MeasureCPU10][!EnableMeasure MeasureCPU11][!ShowMeter MeterCPU8Bar][!ShowMeter MeterCPU9Bar][!ShowMeter MeterCPU10Bar][!ShowMeter MeterCPU11Bar][!SetOption MeterCPUBarContainer Shape9 "Path CPU7End"][!SetOption MeterCPUBarContainer Shape10 "Path CPU8End"][!SetOption MeterCPUBarContainer Shape11 "Path CPU9End"][!SetOption MeterCPUBarContainer Shape12 "Path CPU10End"][!SetOption MeterCPUBarContainer Shape13 "Combine Shape | Exclude Shape2 | Exclude Shape3 | Exclude Shape4 | Exclude Shape5 | Exclude Shape6 | Exclude Shape7 | Exclude Shape8 | Exclude Shape9 | Exclude Shape10 | Exclude Shape11 | Exclude Shape12"][!SetOption MeterCPUBarContainer CPU0End "(#Zoom#*40*(1+cos(rad(135+270*1/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU1End "(#Zoom#*40*(1+cos(rad(135+270*2/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU2End "(#Zoom#*40*(1+cos(rad(135+270*3/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU3End "(#Zoom#*40*(1+cos(rad(135+270*4/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*4/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*4/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*4/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*4/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*4/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*4/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU4End "(#Zoom#*40*(1+cos(rad(135+270*5/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*5/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*5/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*5/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*5/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*5/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*5/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU5End "(#Zoom#*40*(1+cos(rad(135+270*6/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*6/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*6/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*6/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*6/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*6/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*6/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*6/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*6/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*6/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU6End "(#Zoom#*40*(1+cos(rad(135+270*7/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*7/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*7/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*7/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*7/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*7/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*7/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*7/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*7/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*7/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU7End "(#Zoom#*40*(1+cos(rad(135+270*8/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*8/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*8/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*8/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*8/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*8/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*8/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*8/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*8/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*8/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU8End "(#Zoom#*40*(1+cos(rad(135+270*9/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*9/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*9/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*9/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*9/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*9/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*9/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*9/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*9/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*9/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU9End "(#Zoom#*40*(1+cos(rad(135+270*10/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*10/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*10/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*10/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*10/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*10/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*10/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*10/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*10/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*10/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU10End "(#Zoom#*40*(1+cos(rad(135+270*11/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*11/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*11/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*11/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*11/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*11/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*11/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*11/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*11/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*11/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPU0Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU1Bar StartAngle (rad(135+270*1/12))][!SetOption MeterCPU1Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU2Bar StartAngle (rad(135+270*2/12))][!SetOption MeterCPU2Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU3Bar StartAngle (rad(135+270*3/12))][!SetOption MeterCPU3Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU4Bar StartAngle (rad(135+270*4/12))][!SetOption MeterCPU4Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU5Bar StartAngle (rad(135+270*5/12))][!SetOption MeterCPU5Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU6Bar StartAngle (rad(135+270*6/12))][!SetOption MeterCPU6Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU7Bar StartAngle (rad(135+270*7/12))][!SetOption MeterCPU7Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU8Bar StartAngle (rad(135+270*8/12))][!SetOption MeterCPU8Bar RotationAngle (rad(+270*1/12))][!SetOption MeterCPU9Bar StartAngle (rad(135+270*9/12))][!SetOption MeterCPU9Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU10Bar StartAngle (rad(135+270*10/12))][!SetOption MeterCPU10Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU11Bar StartAngle (rad(135+270*11/12))][!UpdateMeter MeterCPUBarContainer][!UpdateMeter MeterCPU0Bar][!UpdateMeter MeterCPU1Bar][!UpdateMeter MeterCPU2Bar][!UpdateMeter MeterCPU3Bar][!UpdateMeter MeterCPU4Bar][!UpdateMeter MeterCPU5Bar][!UpdateMeter MeterCPU6Bar][!UpdateMeter MeterCPU7Bar][!UpdateMeter MeterCPU8Bar][!UpdateMeter MeterCPU9Bar][!UpdateMeter MeterCPU10Bar][!UpdateMeter MeterCPU11Bar][!Redraw] - -[MeasureCPUNumAlto16Source] -Measure=Registry -RegHKey=HKEY_LOCAL_MACHINE -RegKey=HARDWARE\DESCRIPTION\System\CentralProcessor\15 -RegValue=ProcessorNameString -UpdateDivider=-1 +;--------CPUʹ-------- -[MeasureCPUNumAlto16] +[MeasureLogicalCPUNum] Measure=String -String=[MeasureCPUNumAlto16Source] -UpdateDivider=-1 -DynamicVariables=1 -IfMatch=^0$ -IfNotMatchAction=[!EnableMeasure MeasureCPU12][!EnableMeasure MeasureCPU13][!EnableMeasure MeasureCPU14][!EnableMeasure MeasureCPU15][!ShowMeter MeterCPU12Bar][!ShowMeter MeterCPU13Bar][!ShowMeter MeterCPU14Bar][!ShowMeter MeterCPU15Bar][!SetOption MeterCPUBarContainer Shape13 "Path CPU11End"][!SetOption MeterCPUBarContainer Shape14 "Path CPU12End"][!SetOption MeterCPUBarContainer Shape15 "Path CPU13End"][!SetOption MeterCPUBarContainer Shape16 "Path CPU14End"][!SetOption MeterCPUBarContainer Shape17 "Combine Shape | Exclude Shape2 | Exclude Shape3 | Exclude Shape4 | Exclude Shape5 | Exclude Shape6 | Exclude Shape7 | Exclude Shape8 | Exclude Shape9 | Exclude Shape10 | Exclude Shape11 | Exclude Shape12 | Exclude Shape13 | Exclude Shape14 | Exclude Shape15 | Exclude Shape16"][!SetOption MeterCPUBarContainer CPU0End "(#Zoom#*40*(1+cos(rad(135+270*1/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU1End "(#Zoom#*40*(1+cos(rad(135+270*2/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU2End "(#Zoom#*40*(1+cos(rad(135+270*3/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU3End "(#Zoom#*40*(1+cos(rad(135+270*4/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*4/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*4/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*4/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*4/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*4/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*4/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU4End "(#Zoom#*40*(1+cos(rad(135+270*5/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*5/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*5/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*5/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*5/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*5/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*5/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU5End "(#Zoom#*40*(1+cos(rad(135+270*6/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*6/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*6/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*6/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*6/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*6/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*6/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*6/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*6/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*6/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU6End "(#Zoom#*40*(1+cos(rad(135+270*7/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*7/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*7/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*7/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*7/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*7/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*7/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*7/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*7/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*7/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU7End "(#Zoom#*40*(1+cos(rad(135+270*8/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*8/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*8/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*8/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*8/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*8/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*8/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*8/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*8/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*8/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU8End "(#Zoom#*40*(1+cos(rad(135+270*9/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*9/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*9/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*9/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*9/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*9/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*9/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*9/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*9/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*9/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU9End "(#Zoom#*40*(1+cos(rad(135+270*10/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*10/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*10/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*10/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*10/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*10/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*10/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*10/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*10/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*10/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU10End "(#Zoom#*40*(1+cos(rad(135+270*11/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*11/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*11/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*11/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*11/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*11/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*11/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*11/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*11/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*11/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU11End "(#Zoom#*40*(1+cos(rad(135+270*12/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*12/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*12/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*12/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*12/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*12/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*12/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*12/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*12/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*12/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU12End "(#Zoom#*40*(1+cos(rad(135+270*13/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*13/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*13/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*13/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*13/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*13/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*13/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*13/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*13/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*13/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU13End "(#Zoom#*40*(1+cos(rad(135+270*14/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*14/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*14/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*14/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*14/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*14/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*14/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*14/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*14/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*14/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU14End "(#Zoom#*40*(1+cos(rad(135+270*15/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*15/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*15/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*15/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*15/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*15/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*15/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*15/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*15/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*15/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPU0Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU1Bar StartAngle (rad(135+270*1/16))][!SetOption MeterCPU1Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU2Bar StartAngle (rad(135+270*2/16))][!SetOption MeterCPU2Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU3Bar StartAngle (rad(135+270*3/16))][!SetOption MeterCPU3Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU4Bar StartAngle (rad(135+270*4/16))][!SetOption MeterCPU4Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU5Bar StartAngle (rad(135+270*5/16))][!SetOption MeterCPU5Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU6Bar StartAngle (rad(135+270*6/16))][!SetOption MeterCPU6Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU7Bar StartAngle (rad(135+270*7/16))][!SetOption MeterCPU7Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU8Bar StartAngle (rad(135+270*8/16))][!SetOption MeterCPU8Bar RotationAngle (rad(+270*1/16))][!SetOption MeterCPU9Bar StartAngle (rad(135+270*9/16))][!SetOption MeterCPU9Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU10Bar StartAngle (rad(135+270*10/16))][!SetOption MeterCPU10Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU11Bar StartAngle (rad(135+270*11/16))][!SetOption MeterCPU11Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU12Bar StartAngle (rad(135+270*12/16))][!SetOption MeterCPU12Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU13Bar StartAngle (rad(135+270*13/16))][!SetOption MeterCPU13Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU14Bar StartAngle (rad(135+270*14/16))][!SetOption MeterCPU14Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU15Bar StartAngle (rad(135+270*15/16))][!UpdateMeter MeterCPUBarContainer][!UpdateMeter MeterCPU0Bar][!UpdateMeter MeterCPU1Bar][!UpdateMeter MeterCPU2Bar][!UpdateMeter MeterCPU3Bar][!UpdateMeter MeterCPU4Bar][!UpdateMeter MeterCPU5Bar][!UpdateMeter MeterCPU6Bar][!UpdateMeter MeterCPU7Bar][!UpdateMeter MeterCPU8Bar][!UpdateMeter MeterCPU9Bar][!UpdateMeter MeterCPU10Bar][!UpdateMeter MeterCPU11Bar][!UpdateMeter MeterCPU12Bar][!UpdateMeter MeterCPU13Bar][!UpdateMeter MeterCPU14Bar][!UpdateMeter MeterCPU15Bar][!Redraw] - -;--------CPUʹ-------- +String=%NUMBER_OF_PROCESSORS% +UpdateDivider=-1 +IfCondition=#CurrentSection# >= 2 +IfTrueAction=[!EnableMeasure MeasureCPU1][!ShowMeter MeterCPU1Bar][!SetOption MeterCPUBarContainer Shape2 "Path CPU0End"][!SetOption MeterCPUBarContainer Shape3 "Combine Shape | Exclude Shape2"][!SetOption MeterCPUBarContainer CPU0End "(#Zoom#*40*(1+cos(rad(135+270*1/2-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/2-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/2+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/2+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/2+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/2+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/2-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/2-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/2-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/2-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPU0Bar RotationAngle (rad(270*1/2))][!SetOption MeterCPU1Bar StartAngle (rad(135+270*1/2))][!UpdateMeter MeterCPUBarContainer][!UpdateMeter MeterCPU0Bar][!UpdateMeter MeterCPU1Bar][!Redraw] +IfCondition2=#CurrentSection# >= 4 +IfTrueAction2=[!EnableMeasure MeasureCPU2][!EnableMeasure MeasureCPU3][!ShowMeter MeterCPU2Bar][!ShowMeter MeterCPU3Bar][!SetOption MeterCPUBarContainer Shape3 "Path CPU1End"][!SetOption MeterCPUBarContainer Shape4 "Path CPU2End"][!SetOption MeterCPUBarContainer Shape5 "Combine Shape | Exclude Shape2 | Exclude Shape3 | Exclude Shape4"][!SetOption MeterCPUBarContainer CPU0End "(#Zoom#*40*(1+cos(rad(135+270*1/4-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/4-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/4+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/4+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/4+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/4+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/4-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/4-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/4-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/4-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU1End "(#Zoom#*40*(1+cos(rad(135+270*2/4-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/4-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/4+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/4+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/4+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/4+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/4-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/4-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/4-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/4-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU2End "(#Zoom#*40*(1+cos(rad(135+270*3/4-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/4-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/4+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/4+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/4+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/4+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/4-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/4-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/4-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/4-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPU0Bar RotationAngle (rad(270*1/4))][!SetOption MeterCPU1Bar StartAngle (rad(135+270*1/4))][!SetOption MeterCPU1Bar RotationAngle (rad(270*1/4))][!SetOption MeterCPU2Bar StartAngle (rad(135+270*2/4))][!SetOption MeterCPU2Bar RotationAngle (rad(270*1/4))][!SetOption MeterCPU3Bar StartAngle (rad(135+270*3/4))][!UpdateMeter MeterCPUBarContainer][!UpdateMeter MeterCPU0Bar][!UpdateMeter MeterCPU1Bar][!UpdateMeter MeterCPU2Bar][!UpdateMeter MeterCPU3Bar][!Redraw] +IfCondition3=#CurrentSection# >= 6 +IfTrueAction3=[!EnableMeasure MeasureCPU4][!EnableMeasure MeasureCPU5][!ShowMeter MeterCPU4Bar][!ShowMeter MeterCPU5Bar][!SetOption MeterCPUBarContainer Shape5 "Path CPU3End"][!SetOption MeterCPUBarContainer Shape6 "Path CPU4End"][!SetOption MeterCPUBarContainer Shape7 "Combine Shape | Exclude Shape2 | Exclude Shape3 | Exclude Shape4 | Exclude Shape5 | Exclude Shape6"][!SetOption MeterCPUBarContainer CPU0End "(#Zoom#*40*(1+cos(rad(135+270*1/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/6-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/6+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/6+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/6+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/6+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/6-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/6-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/6-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU1End "(#Zoom#*40*(1+cos(rad(135+270*2/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/6-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/6+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/6+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/6+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/6+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/6-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/6-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/6-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU2End "(#Zoom#*40*(1+cos(rad(135+270*3/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/6-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/6+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/6+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/6+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/6+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/6-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/6-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/6-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU3End "(#Zoom#*40*(1+cos(rad(135+270*4/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/6-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*4/6+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/6+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*4/6+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*4/6+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*4/6-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*4/6-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*4/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/6-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU4End "(#Zoom#*40*(1+cos(rad(135+270*5/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/6-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*5/6+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/6+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*5/6+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*5/6+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*5/6-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*5/6-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*5/6-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/6-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPU0Bar RotationAngle (rad(270*1/6))][!SetOption MeterCPU1Bar StartAngle (rad(135+270*1/6))][!SetOption MeterCPU1Bar RotationAngle (rad(270*1/6))][!SetOption MeterCPU2Bar StartAngle (rad(135+270*2/6))][!SetOption MeterCPU2Bar RotationAngle (rad(270*1/6))][!SetOption MeterCPU3Bar StartAngle (rad(135+270*3/6))][!SetOption MeterCPU3Bar RotationAngle (rad(270*1/6))][!SetOption MeterCPU4Bar StartAngle (rad(135+270*4/6))][!SetOption MeterCPU4Bar RotationAngle (rad(270*1/6))][!SetOption MeterCPU5Bar StartAngle (rad(135+270*5/6))][!UpdateMeter MeterCPUBarContainer][!UpdateMeter MeterCPU0Bar][!UpdateMeter MeterCPU1Bar][!UpdateMeter MeterCPU2Bar][!UpdateMeter MeterCPU3Bar][!UpdateMeter MeterCPU4Bar][!UpdateMeter MeterCPU5Bar][!Redraw] +IfCondition4=#CurrentSection# >= 8 +IfTrueAction4=[!EnableMeasure MeasureCPU6][!EnableMeasure MeasureCPU7][!ShowMeter MeterCPU6Bar][!ShowMeter MeterCPU7Bar][!SetOption MeterCPUBarContainer Shape7 "Path CPU5End"][!SetOption MeterCPUBarContainer Shape8 "Path CPU6End"][!SetOption MeterCPUBarContainer Shape9 "Combine Shape | Exclude Shape2 | Exclude Shape3 | Exclude Shape4 | Exclude Shape5 | Exclude Shape6 | Exclude Shape7 | Exclude Shape8"][!SetOption MeterCPUBarContainer CPU0End "(#Zoom#*40*(1+cos(rad(135+270*1/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/8-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/8+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/8+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/8+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/8+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/8-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/8-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/8-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU1End "(#Zoom#*40*(1+cos(rad(135+270*2/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/8-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/8+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/8+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/8+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/8+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/8-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/8-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/8-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU2End "(#Zoom#*40*(1+cos(rad(135+270*3/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/8-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/8+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/8+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/8+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/8+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/8-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/8-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/8-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU3End "(#Zoom#*40*(1+cos(rad(135+270*4/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/8-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*4/8+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/8+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*4/8+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*4/8+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*4/8-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*4/8-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*4/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/8-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU4End "(#Zoom#*40*(1+cos(rad(135+270*5/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/8-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*5/8+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/8+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*5/8+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*5/8+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*5/8-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*5/8-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*5/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/8-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU5End "(#Zoom#*40*(1+cos(rad(135+270*6/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*6/8-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*6/8+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*6/8+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*6/8+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*6/8+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*6/8-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*6/8-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*6/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*6/8-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU6End "(#Zoom#*40*(1+cos(rad(135+270*7/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*7/8-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*7/8+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*7/8+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*7/8+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*7/8+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*7/8-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*7/8-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*7/8-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*7/8-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPU0Bar RotationAngle (rad(270*1/8))][!SetOption MeterCPU1Bar StartAngle (rad(135+270*1/8))][!SetOption MeterCPU1Bar RotationAngle (rad(270*1/8))][!SetOption MeterCPU2Bar StartAngle (rad(135+270*2/8))][!SetOption MeterCPU2Bar RotationAngle (rad(270*1/8))][!SetOption MeterCPU3Bar StartAngle (rad(135+270*3/8))][!SetOption MeterCPU3Bar RotationAngle (rad(270*1/8))][!SetOption MeterCPU4Bar StartAngle (rad(135+270*4/8))][!SetOption MeterCPU4Bar RotationAngle (rad(270*1/8))][!SetOption MeterCPU5Bar StartAngle (rad(135+270*5/8))][!SetOption MeterCPU5Bar RotationAngle (rad(270*1/8))][!SetOption MeterCPU6Bar StartAngle (rad(135+270*6/8))][!SetOption MeterCPU6Bar RotationAngle (rad(270*1/8))][!SetOption MeterCPU7Bar StartAngle (rad(135+270*7/8))][!UpdateMeter MeterCPUBarContainer][!UpdateMeter MeterCPU0Bar][!UpdateMeter MeterCPU1Bar][!UpdateMeter MeterCPU2Bar][!UpdateMeter MeterCPU3Bar][!UpdateMeter MeterCPU4Bar][!UpdateMeter MeterCPU5Bar][!UpdateMeter MeterCPU6Bar][!UpdateMeter MeterCPU7Bar][!Redraw] +IfCondition5=#CurrentSection# >= 12 +IfTrueAction5=[!EnableMeasure MeasureCPU8][!EnableMeasure MeasureCPU9][!EnableMeasure MeasureCPU10][!EnableMeasure MeasureCPU11][!ShowMeter MeterCPU8Bar][!ShowMeter MeterCPU9Bar][!ShowMeter MeterCPU10Bar][!ShowMeter MeterCPU11Bar][!SetOption MeterCPUBarContainer Shape9 "Path CPU7End"][!SetOption MeterCPUBarContainer Shape10 "Path CPU8End"][!SetOption MeterCPUBarContainer Shape11 "Path CPU9End"][!SetOption MeterCPUBarContainer Shape12 "Path CPU10End"][!SetOption MeterCPUBarContainer Shape13 "Combine Shape | Exclude Shape2 | Exclude Shape3 | Exclude Shape4 | Exclude Shape5 | Exclude Shape6 | Exclude Shape7 | Exclude Shape8 | Exclude Shape9 | Exclude Shape10 | Exclude Shape11 | Exclude Shape12"][!SetOption MeterCPUBarContainer CPU0End "(#Zoom#*40*(1+cos(rad(135+270*1/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU1End "(#Zoom#*40*(1+cos(rad(135+270*2/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU2End "(#Zoom#*40*(1+cos(rad(135+270*3/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU3End "(#Zoom#*40*(1+cos(rad(135+270*4/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*4/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*4/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*4/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*4/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*4/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*4/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU4End "(#Zoom#*40*(1+cos(rad(135+270*5/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*5/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*5/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*5/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*5/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*5/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*5/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU5End "(#Zoom#*40*(1+cos(rad(135+270*6/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*6/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*6/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*6/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*6/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*6/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*6/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*6/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*6/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*6/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU6End "(#Zoom#*40*(1+cos(rad(135+270*7/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*7/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*7/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*7/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*7/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*7/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*7/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*7/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*7/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*7/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU7End "(#Zoom#*40*(1+cos(rad(135+270*8/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*8/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*8/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*8/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*8/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*8/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*8/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*8/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*8/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*8/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU8End "(#Zoom#*40*(1+cos(rad(135+270*9/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*9/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*9/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*9/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*9/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*9/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*9/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*9/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*9/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*9/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU9End "(#Zoom#*40*(1+cos(rad(135+270*10/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*10/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*10/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*10/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*10/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*10/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*10/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*10/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*10/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*10/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU10End "(#Zoom#*40*(1+cos(rad(135+270*11/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*11/12-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*11/12+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*11/12+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*11/12+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*11/12+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*11/12-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*11/12-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*11/12-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*11/12-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPU0Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU1Bar StartAngle (rad(135+270*1/12))][!SetOption MeterCPU1Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU2Bar StartAngle (rad(135+270*2/12))][!SetOption MeterCPU2Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU3Bar StartAngle (rad(135+270*3/12))][!SetOption MeterCPU3Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU4Bar StartAngle (rad(135+270*4/12))][!SetOption MeterCPU4Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU5Bar StartAngle (rad(135+270*5/12))][!SetOption MeterCPU5Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU6Bar StartAngle (rad(135+270*6/12))][!SetOption MeterCPU6Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU7Bar StartAngle (rad(135+270*7/12))][!SetOption MeterCPU7Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU8Bar StartAngle (rad(135+270*8/12))][!SetOption MeterCPU8Bar RotationAngle (rad(+270*1/12))][!SetOption MeterCPU9Bar StartAngle (rad(135+270*9/12))][!SetOption MeterCPU9Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU10Bar StartAngle (rad(135+270*10/12))][!SetOption MeterCPU10Bar RotationAngle (rad(270*1/12))][!SetOption MeterCPU11Bar StartAngle (rad(135+270*11/12))][!UpdateMeter MeterCPUBarContainer][!UpdateMeter MeterCPU0Bar][!UpdateMeter MeterCPU1Bar][!UpdateMeter MeterCPU2Bar][!UpdateMeter MeterCPU3Bar][!UpdateMeter MeterCPU4Bar][!UpdateMeter MeterCPU5Bar][!UpdateMeter MeterCPU6Bar][!UpdateMeter MeterCPU7Bar][!UpdateMeter MeterCPU8Bar][!UpdateMeter MeterCPU9Bar][!UpdateMeter MeterCPU10Bar][!UpdateMeter MeterCPU11Bar][!Redraw] +IfCondition6=#CurrentSection# >= 16 +IfTrueAction6=[!EnableMeasure MeasureCPU12][!EnableMeasure MeasureCPU13][!EnableMeasure MeasureCPU14][!EnableMeasure MeasureCPU15][!ShowMeter MeterCPU12Bar][!ShowMeter MeterCPU13Bar][!ShowMeter MeterCPU14Bar][!ShowMeter MeterCPU15Bar][!SetOption MeterCPUBarContainer Shape13 "Path CPU11End"][!SetOption MeterCPUBarContainer Shape14 "Path CPU12End"][!SetOption MeterCPUBarContainer Shape15 "Path CPU13End"][!SetOption MeterCPUBarContainer Shape16 "Path CPU14End"][!SetOption MeterCPUBarContainer Shape17 "Combine Shape | Exclude Shape2 | Exclude Shape3 | Exclude Shape4 | Exclude Shape5 | Exclude Shape6 | Exclude Shape7 | Exclude Shape8 | Exclude Shape9 | Exclude Shape10 | Exclude Shape11 | Exclude Shape12 | Exclude Shape13 | Exclude Shape14 | Exclude Shape15 | Exclude Shape16"][!SetOption MeterCPUBarContainer CPU0End "(#Zoom#*40*(1+cos(rad(135+270*1/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU1End "(#Zoom#*40*(1+cos(rad(135+270*2/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*2/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*2/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*2/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*2/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU2End "(#Zoom#*40*(1+cos(rad(135+270*3/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*3/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*3/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*3/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*3/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU3End "(#Zoom#*40*(1+cos(rad(135+270*4/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*4/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*4/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*4/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*4/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*4/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*4/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*4/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU4End "(#Zoom#*40*(1+cos(rad(135+270*5/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*5/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*5/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*5/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*5/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*5/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*5/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*5/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU5End "(#Zoom#*40*(1+cos(rad(135+270*6/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*6/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*6/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*6/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*6/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*6/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*6/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*6/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*6/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*6/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU6End "(#Zoom#*40*(1+cos(rad(135+270*7/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*7/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*7/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*7/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*7/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*7/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*7/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*7/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*7/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*7/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU7End "(#Zoom#*40*(1+cos(rad(135+270*8/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*8/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*8/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*8/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*8/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*8/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*8/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*8/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*8/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*8/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU8End "(#Zoom#*40*(1+cos(rad(135+270*9/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*9/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*9/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*9/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*9/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*9/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*9/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*9/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*9/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*9/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU9End "(#Zoom#*40*(1+cos(rad(135+270*10/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*10/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*10/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*10/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*10/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*10/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*10/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*10/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*10/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*10/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU10End "(#Zoom#*40*(1+cos(rad(135+270*11/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*11/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*11/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*11/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*11/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*11/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*11/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*11/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*11/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*11/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU11End "(#Zoom#*40*(1+cos(rad(135+270*12/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*12/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*12/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*12/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*12/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*12/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*12/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*12/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*12/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*12/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU12End "(#Zoom#*40*(1+cos(rad(135+270*13/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*13/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*13/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*13/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*13/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*13/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*13/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*13/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*13/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*13/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU13End "(#Zoom#*40*(1+cos(rad(135+270*14/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*14/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*14/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*14/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*14/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*14/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*14/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*14/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*14/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*14/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPUBarContainer CPU14End "(#Zoom#*40*(1+cos(rad(135+270*15/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*15/16-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*15/16+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*15/16+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*15/16+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*15/16+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*15/16-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*15/16-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*15/16-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*15/16-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOption MeterCPU0Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU1Bar StartAngle (rad(135+270*1/16))][!SetOption MeterCPU1Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU2Bar StartAngle (rad(135+270*2/16))][!SetOption MeterCPU2Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU3Bar StartAngle (rad(135+270*3/16))][!SetOption MeterCPU3Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU4Bar StartAngle (rad(135+270*4/16))][!SetOption MeterCPU4Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU5Bar StartAngle (rad(135+270*5/16))][!SetOption MeterCPU5Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU6Bar StartAngle (rad(135+270*6/16))][!SetOption MeterCPU6Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU7Bar StartAngle (rad(135+270*7/16))][!SetOption MeterCPU7Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU8Bar StartAngle (rad(135+270*8/16))][!SetOption MeterCPU8Bar RotationAngle (rad(+270*1/16))][!SetOption MeterCPU9Bar StartAngle (rad(135+270*9/16))][!SetOption MeterCPU9Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU10Bar StartAngle (rad(135+270*10/16))][!SetOption MeterCPU10Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU11Bar StartAngle (rad(135+270*11/16))][!SetOption MeterCPU11Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU12Bar StartAngle (rad(135+270*12/16))][!SetOption MeterCPU12Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU13Bar StartAngle (rad(135+270*13/16))][!SetOption MeterCPU13Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU14Bar StartAngle (rad(135+270*14/16))][!SetOption MeterCPU14Bar RotationAngle (rad(270*1/16))][!SetOption MeterCPU15Bar StartAngle (rad(135+270*15/16))][!UpdateMeter MeterCPUBarContainer][!UpdateMeter MeterCPU0Bar][!UpdateMeter MeterCPU1Bar][!UpdateMeter MeterCPU2Bar][!UpdateMeter MeterCPU3Bar][!UpdateMeter MeterCPU4Bar][!UpdateMeter MeterCPU5Bar][!UpdateMeter MeterCPU6Bar][!UpdateMeter MeterCPU7Bar][!UpdateMeter MeterCPU8Bar][!UpdateMeter MeterCPU9Bar][!UpdateMeter MeterCPU10Bar][!UpdateMeter MeterCPU11Bar][!UpdateMeter MeterCPU12Bar][!UpdateMeter MeterCPU13Bar][!UpdateMeter MeterCPU14Bar][!UpdateMeter MeterCPU15Bar][!Redraw] [MeasureCPUUsedPercentual] Measure=CPU @@ -1312,10 +1264,10 @@ Group=Win10 Meter=Shape Shape=Path Path1 | Fill Color #FontColour#,255 | StrokeWidth 0 Shape2=Path Path2 -Shape3=Combine Shape1 | Union Shape2 -Shape4=Combine Shape1 | Union Shape2 | Offset 1,0 -Shape5=Combine Shape1 | Union Shape2 | Offset 0,1 -Shape6=Combine Shape1 | Union Shape2 | Offset 1,1 +Shape3=Combine Shape | Union Shape2 +Shape4=Combine Shape | Union Shape2 | Offset 1,0 +Shape5=Combine Shape | Union Shape2 | Offset 0,1 +Shape6=Combine Shape | Union Shape2 | Offset 1,1 Shape7=Combine Shape3 | Union Shape4 | Union Shape5 | Union Shape6 | Scale (15/29*#Zoom#),(15/29*#Zoom#),0,0 | Offset 0,2 | TransformOrder Offset,Scale Path1=13.5,16.5 | LineTo 11.3,14.2 | LineTo 18.6,7.8 | LineTo 19.9,9.2 | ClosePath 1 Path2=23,23 | CurveTo 26.8,13.9,25.3,20.7,26.8,17.5 | CurveTo 13.9,1,26.8,6.8,21,1 | CurveTo 1,13.9,6.8,1,1,6.8 | CurveTo 4.8,23,1,17.5,2.4,20.7 | LineTo 6.6,21.2 | CurveTo 3.6,13.9,4.7,19.3,3.6,16.8 | CurveTo 13.9,3.6,3.6,8.2,8.2,3.6 | CurveTo 24.2,13.9,19.6,3.6,24.2,8.2 | CurveTo 21.2,21.2,24.2,16.7,23,19.3 | LineTo 23,23 | ClosePath 1 @@ -1336,6 +1288,46 @@ Text="%1Hz" NumOfDecimals=2 AutoScale=2 +;--------CPU¶-------- + +[MeasureCPUTempPlugin] +Measure=Plugin +Plugin=CPUTemp +CoreTempType=MaxTemperature +Disabled=1 +IfCondition=(#CurrentSection# >= 80) || (#CurrentSection# = 0) +IfTrueAction=[!SetOption MeterCPUTemp FontColor #FontColour4#,255][!UpdateMeter MeterCPUTemp][!Redraw] +IfFalseAction=[!SetOption MeterCPUTemp FontColor #FontColour2#,255][!UpdateMeter MeterCPUTemp][!Redraw] +IfCondition2=#CurrentSection# = 0 +IfTrueAction2=[!SetOption MeterCPUTemp Text "N/A"][!UpdateMeter MeterCPUTemp][!Redraw] +IfFalseAction2=[!SetOption MeterCPUTemp Text "%1 [\x2103]"][!UpdateMeter MeterCPUTemp][!Redraw] + +[MeterCPUTempText] +Meter=Shape +Shape=Ellipse 128,384,128 | Fill Color #FontColour#,255 | StrokeWidth 0 +Shape2=Rectangle 32,0,192,512,96 +Shape3=Ellipse 128,384,80 +Shape4=Rectangle 80,48,96,416,48 +Shape5=Ellipse 128,384,64 +Shape6=Rectangle 96,192,64,256,32 +Shape7=Combine Shape | Union Shape2 | Exclude Shape3 | Exclude Shape4 | Union Shape5 | Union Shape6 | Scale (13/512*#Zoom#),(13/512*#Zoom#),0,0 | Offset 78,26 | TransformOrder Offset,Scale +X=(#Zoom#*108) +Y=(#Zoom#*21)r +W=(#Zoom#*15) +H=(#Zoom#*15) +Hidden=1 +UpdateDivider=-1 +SolidColor=#FontColour#,1 +AntiAlias=1 +ToolTipText="CPU¶" + +[MeterCPUTemp] +Meter=String +MeterStyle=MeterRightStringParent +MeasureName=MeasureCPUTempPlugin +Text="%1 [\x2103]" +Hidden=1 + ;--------״-------- [MeasureProcessesNum] @@ -1352,10 +1344,10 @@ Shape2=Rectangle 128,160,64,96,13 Shape3=Rectangle 224,32,64,224,13 Shape4=Rectangle 320,96,64,160,13 Shape5=Rectangle 416,0,64,256,13 -Shape6=Combine Shape1 | Union Shape2 | Union Shape3 | Union Shape4 | Union Shape5 | Scale (13/500*#Zoom#),(13/500*#Zoom#),0,0 | Offset 0,64 | TransformOrder Offset,Scale +Shape6=Combine Shape | Union Shape2 | Union Shape3 | Union Shape4 | Union Shape5 | Scale (13/500*#Zoom#),(13/500*#Zoom#),0,0 | Offset 0,64 | TransformOrder Offset,Scale Path1=496,384 | LineTo 64,384 | LineTo 64,80 | CurveTo 48,64,64,71.16,56.84,64 | LineTo 16,64 | CurveTo 0,80,7.16,64,0,71.16 | LineTo 0,416 | CurveTo 32,448,0,433.67,14.33,448 | LineTo 496,448 | CurveTo 512,432,504.84,448,512,440.84 | LineTo 512,400 | CurveTo 496,384,512,391.16,504.84,384 | ClosePath 1 X=(#Zoom#*107) -Y=(#Zoom#*21)r +Y=(#Zoom#*1)r W=(#Zoom#*13) H=(#Zoom#*13) UpdateDivider=-1 @@ -1380,7 +1372,7 @@ Index=0 Meter=Shape Shape=Path Path1 | Fill Color #FontColour#,255 | StrokeWidth 0 | Offset 0,-64 Shape2=Path Path2 | Offset 0,-64 -Shape3=Combine Shape1 | Union Shape2 | Scale (13/500*#Zoom#),(13/500*#Zoom#),0,0 | Offset 0,64 | TransformOrder Offset,Scale +Shape3=Combine Shape | Union Shape2 | Scale (13/500*#Zoom#),(13/500*#Zoom#),0,0 | Offset 0,64 | TransformOrder Offset,Scale Path1=496,384 | LineTo 64,384 | LineTo 64,80 | CurveTo 48,64,64,71.16,56.84,64 | LineTo 16,64 | CurveTo 0,80,7.16,64,0,71.16 | LineTo 0,416 | CurveTo 32,448,0,433.67,14.33,448 | LineTo 496,448 | CurveTo 512,432,504.84,448,512,440.84 | LineTo 512,400 | CurveTo 496,384,512,391.16,504.84,384 | ClosePath 1 Path2=464,96 | LineTo 345.94,96 | CurveTo 328.97,136.97,324.56,96,313.85,121.85 | LineTo 361.37,169.37 | LineTo 288,242.75 | LineTo 214.63,169.38 | CurveTo 169.38,169.38,202.13,156.88,181.87,156.88 | LineTo 100.69,238.07 | CurveTo 100.69,260.7,94.44,244.32,94.44,254.45 | LineTo 123.31,283.32 | CurveTo 145.94,283.32,129.56,289.57,139.69,289.57 | LineTo 192,237.25 | LineTo 265.37,310.62 | CurveTo 310.62,310.62,277.87,323.12,298.13,323.12 | LineTo 406.62,214.62 | LineTo 439.02,247.02 | CurveTo 479.99,230.05,454.14,262.14,479.99,251.43 | LineTo 479.99,112 | CurveTo 464,96,480,103.16,472.84,96 | ClosePath 1 X=(#Zoom#*107) @@ -1413,7 +1405,7 @@ Shape3=Ellipse 192,64,32 Shape4=Ellipse 288,160,32 Shape5=Ellipse 384,224,32 Shape6=Ellipse 416,64,32 -Shape7=Combine Shape1 | Union Shape2 | Union Shape3 | Union Shape4 | Union Shape5 | Union Shape6 | Scale (13/500*#Zoom#),(13/500*#Zoom#),0,0 | Offset 0,64 | TransformOrder Offset,Scale +Shape7=Combine Shape | Union Shape2 | Union Shape3 | Union Shape4 | Union Shape5 | Union Shape6 | Scale (13/500*#Zoom#),(13/500*#Zoom#),0,0 | Offset 0,64 | TransformOrder Offset,Scale Path1=496,384 | LineTo 64,384 | LineTo 64,80 | CurveTo 48,64,64,71.16,56.84,64 | LineTo 16,64 | CurveTo 0,80,7.16,64,0,71.16 | LineTo 0,416 | CurveTo 32,448,0,433.67,14.33,448 | LineTo 496,448 | CurveTo 512,432,504.84,448,512,440.84 | LineTo 512,400 | CurveTo 496,384,512,391.16,504.84,384 | ClosePath 1 X=(#Zoom#*107) Y=(#Zoom#*21)r @@ -1438,6 +1430,10 @@ RegHKey=HKEY_LOCAL_MACHINE RegKey=HARDWARE\DESCRIPTION\System\CentralProcessor\0 RegValue=ProcessorNameString UpdateDivider=-1 +IfMatch=AMD|amd +IfMatchAction=[!SetOption ImageCPU Shape19 "Path MainLogo3 | Fill Color 0,154,102,255"][!SetOption ImageCPU Shape20 "Path MainLogo4"][!SetOption ImageCPU Shape21 "Path LogoNameAw | Fill Color 0,0,0,255"][!SetOption ImageCPU Shape22 "Path LogoNameAn"][!SetOption ImageCPU Shape23 "Path LogoNameM"][!SetOption ImageCPU Shape24 "Path LogoNameDw"][!SetOption ImageCPU Shape25 "Path LogoNameDn"][!SetOption ImageCPU Shape26 "Combine Shape19 | Union Shape20 | Union Shape21 | Exclude Shape22 | Union Shape23 | Union Shape24 | Exclude Shape25 | Scale 0.6,0.6,250,60"][!SetOption ImageCPU Shape27 "Combine Shape18 | Exclude Shape26 | Scale (35/512*#Zoom#),(35/512*#Zoom#),0,0"][!UpdateMeter ImageCPU][!Redraw] +IfMatch2=Intel|INTEL|intel +IfMatchAction2=[!EnableMeasure MeasureCPUTempPlugin][!DisableMeasure MeasureHandlesNum][!ShowMeter MeterCPUTempText][!ShowMeter MeterCPUTemp][!HideMeter MeterHandlesNumText][!HideMeter MeterHandlesNum][!SetOption MeterProcessesNumText Y "(#Zoom#*21)r"][!SetOption MeterCPUName Y "(#Zoom#*1)r"][!SetOption ImageCPU Shape19 "Path MainLogo1 | Fill Color 0,113,197,255"][!SetOption ImageCPU Shape20 "Path MainLogo2"][!SetOption ImageCPU Shape21 "Rectangle 100,179,21,21"][!SetOption ImageCPU Shape22 "Path LogoNamei"][!SetOption ImageCPU Shape23 "Path LogoNamen"][!SetOption ImageCPU Shape24 "Path LogoNamet"][!SetOption ImageCPU Shape25 "Path LogoNameew"][!SetOption ImageCPU Shape26 "Path LogoNameen"][!SetOption ImageCPU Shape27 "Path LogoNamel"][!SetOption ImageCPU Shape28 "Ellipse 409,184,8.75"][!SetOption ImageCPU Shape29 "Ellipse 409,184,7.25"][!SetOption ImageCPU Shape30 "Path LogoRegisterw"][!SetOption ImageCPU Shape31 "Path LogoRegisteri"][!SetOption ImageCPU Shape32 "Combine Shape19 | Union Shape20 | Union Shape21 | Union Shape22 | Union Shape23 | Union Shape24 | Union Shape25 | Exclude Shape26 | Union Shape27 | Union Shape28 | Exclude Shape29 | Union Shape30 | Exclude Shape31 | Scale 0.6,0.6,230,155"][!SetOption ImageCPU Shape33 "Combine Shape18 | Exclude Shape32 | Scale (35/512*#Zoom#),(35/512*#Zoom#),0,0"][!UpdateMeter MeterProcessesNumText][!UpdateMeter MeterCPUName][!UpdateMeter ImageCPU][!Redraw] Substitute="(R)":"[\x00AE]","(TM)":"[\x2122]","[R]":"[\x00AE]","[TM]":"[\x2122]" [MeterCPUName] @@ -1863,20 +1859,41 @@ Y=(#Zoom#*20)r [ImageGPU] Meter=Shape Shape=Path Path1 | Fill Color #FontColour#,255 | StrokeWidth 0 -Shape2=Path Path2 -Shape3=Path Path3 -Shape4=Path Path4 -Shape5=Path Path5 -Shape6=Path Path6 -Shape7=Path Path7 -Shape8=Combine Shape1 | XOR Shape2 | XOR Shape3 | XOR Shape4 | XOR Shape5 | XOR Shape6 | XOR Shape7 | Scale (40/200*#Zoom#),(40/200*#Zoom#),0,0 -Path1=9.5,36 | CurveTo 17.1,41,8.4,39.5,10.7,41 | LineTo 23,41 | LineTo 23,54 | CurveTo 21,67,23,66.3,22.9,67 | CurveTo 19,79.1,19.1,67,19,67.7 | CurveTo 21,91.7,19,90.3,19.1,91.2 | CurveTo 23,100.6,22.8,92.2,23,93.1 | CurveTo 21,109,23,108.3,22.8,109 | CurveTo 19,121,19.1,109,19,109.7 | CurveTo 21,133,19,132.3,19.1,133 | CurveTo 23.2,149.2,22.8,133,23,133.8 | LineTo 23.5,165.5 | LineTo 29.5,165.5 | LineTo 29.8,158.2 | LineTo 30.1,151 | LineTo 100.6,151 | CurveTo 181.7,145.4,177.2,151,174.1,151.2 | CurveTo 187.5,138,183.5,144,186.1,140.7 | LineTo 190,133.1 | LineTo 190,102 | CurveTo 183.7,60.2,190,67.7,189.8,66.5 | CurveTo 176.5,54.7,181.9,58.3,178.7,55.9 | CurveTo 101.3,52.2,172.5,52.5,172.1,52.5 | LineTo 30.1,51.9 | LineTo 29.8,43.2 | LineTo 29.5,34.5 | LineTo 19.8,34.2 | CurveTo 9.5,36,10.8,33.9,10.1,34.1 | ClosePath 1 -Path2=148.9,75.6 | CurveTo 168,102,160,78.9,168,89.9 | CurveTo 120.2,119.5,167.9,127.4,137.1,138.7 | CurveTo 113,102,116,114.7,113,107.4 | CurveTo 125.5,79,113,93.9,118.9,83.1 | CurveTo 148.9,75.6,133.8,73.9,140.1,72.9 | ClosePath 1 -Path3=122.6,83.6 | CurveTo 124.6,93,120.1,86,120.7,88.7 | CurveTo 130.9,97,127.1,95.8,129.1,97 | CurveTo 132.2,85.7,137.2,97,137.8,91.2 | CurveTo 122.6,83.6,128.1,81.7,125.1,81.1 | ClosePath 1 -Path4=149.1,86.4 | CurveTo 145.2,92.8,146,89.5,144.9,91.4 | CurveTo 142,94.3,145.7,94.6,145.4,94.7 | CurveTo 135.5,96.5,138.8,93.8,137.7,94.2 | CurveTo 133.3,103,133.2,98.7,132.8,99.8 | CurveTo 131.8,106.2,133.7,106.4,133.6,106.7 | CurveTo 125.4,110.1,130.4,105.9,128.5,107 | CurveTo 126.3,121,119.3,116.1,119.7,121 | CurveTo 136,111.1,130.4,121,136,115.3 | CurveTo 138,109,136,108.3,136.2,108 | CurveTo 148.4,100.9,142.8,111.6,148.5,107.1 | CurveTo 150.5,97,148.3,97.5,148.5,97 | CurveTo 159.6,89.8,153.4,97,157.6,93.7 | CurveTo 159.5,84.4,161,87.1,161,86.6 | CurveTo 149.1,86.4,157.2,80.8,154,81.4 | ClosePath 1 -Path5=146.7,107.8 | CurveTo 148.6,117,144.2,110.6,144.6,112.6 | CurveTo 155.6,121,151.5,120.2,152.9,121 | CurveTo 159.9,118.8,158.3,121,159.3,120.5 | CurveTo 155.9,109.5,161.1,115.5,160.2,113.4 | CurveTo 146.7,107.8,151.5,105.6,149.1,105.1 | ClosePath 1 -Path6=33.2,153.9 | CurveTo 32.2,157.6,32.4,154.3,32,156 | LineTo 32.5,160.5 | LineTo 72.8,160.8 | LineTo 113.1,161 | LineTo 112.8,157.3 | LineTo 112.5,153.5 | LineTo 73.5,153.3 | CurveTo 33.2,153.9,52.1,153.1,33.9,153.4 | ClosePath 1 -Path7=125.7,153.6 | CurveTo 125,157.7,125.3,154,125,155.8 | LineTo 125,161 | LineTo 146.8,160.8 | LineTo 168.5,160.5 | LineTo 168.5,153.5 | LineTo 147.4,153.2 | CurveTo 125.7,153.6,135.9,153.1,126.1,153.3 | ClosePath 1 +Shape2=Ellipse 141,102,28 +Shape3=Path Path2 +Shape4=Path Path2 | Rotate 90 +Shape5=Rectangle 40,154,25,8,2 +Shape6=Rectangle 70,154,100,8,2 +Shape7=Combine Shape | Exclude Shape2 | Union Shape3 | Union Shape4 | Union Shape5 | Union Shape6 +Shape8=Combine Shape7 | Scale (40/200*#Zoom#),(40/200*#Zoom#),0,0 +Path1=12,34 | LineTo 30,34 | LineTo 30,52 | LineTo 170,52 | ArcTo 190,72,20 | LineTo 190,130 | ArcTo 170,150,20 | LineTo 30,150 | LineTo 30,165 | LineTo 23,165 | LineTo 23,134 | ArcTo 19,130,4 | LineTo 19,113 | ArcTo 23,109,4 | LineTo 23,92 | ArcTo 19,88,4 | LineTo 19,71 | ArcTo 23,67,4 | LineTo 23,41 | LineTo 12,41 | ArcTo 12,34 | ClosePath 1 +Path2=149.1,86.4 | CurveTo 145.2,92.8,146,89.5,144.9,91.4 | CurveTo 142,94.3,145.7,94.6,145.4,94.7 | CurveTo 135.5,96.5,138.8,93.8,137.7,94.2 | CurveTo 133.3,103,133.2,98.7,132.8,99.8 | CurveTo 131.8,106.2,133.7,106.4,133.6,106.7 | CurveTo 125.4,110.1,130.4,105.9,128.5,107 | CurveTo 126.3,121,119.3,116.1,119.7,121 | CurveTo 136,111.1,130.4,121,136,115.3 | CurveTo 138,109,136,108.3,136.2,108 | CurveTo 148.4,100.9,142.8,111.6,148.5,107.1 | CurveTo 150.5,97,148.3,97.5,148.5,97 | CurveTo 159.6,89.8,153.4,97,157.6,93.7 | CurveTo 159.5,84.4,161,87.1,161,86.6 | CurveTo 149.1,86.4,157.2,80.8,154,81.4 | ClosePath 1 +MainLogo1=130,168 | LineTo 130,160 | CurveTo 454,169,271,80,424,106 | CurveTo 400,297,481,222,449,278 | LineTo 400,275 | CurveTo 430,168,448,245,451,197 | CurveTo 130,168,392,111,250,108 | ClosePath 1 +MainLogo2=83,191 | LineTo 83,201 | CurveTo 63,314,44,247,51,297 | CurveTo 391,315,101,380,278,379 | LineTo 391,347 | CurveTo 65,350,286,402,127,408 | CurveTo 83,191,12,296,43,223 | ClosePath 1 +LogoNamei=100,211 | LineTo 121,211 | LineTo 121,298 | ArcTo 100,277,21 | LineTo 100,210 | ClosePath 1 +LogoNameIn=141,211 | LineTo 190,211 | ArcTo 211,232,21 | LineTo 211,298 | LineTo 190,298 | LineTo 190,236 | ArcTo 183,229,7,*,*,1 | LineTo 162,229 | LineTo 162,298 | LineTo 141,298 | LineTo 141,211 | ClosePath 1 +LogoNamet=229,188 | LineTo 250,188 | LineTo 250,211 | LineTo 267,211 | LineTo 267,228 | LineTo 250,228 | LineTo 250,273 | ArcTo 257,280,7,*,*,1 | LineTo 267,280 | LineTo 267,298 | LineTo 250,298 | ArcTo 229,277,21 | LineTo 229,188 | ClosePath 1 +LogoNameew=349,261 | LineTo 349,250 | CurveTo 273,261,349,194,267,197 | CurveTo 347,285,276,304,325,308 | LineTo 334,273 | CurveTo 294,261,322,286,294,285 | LineTo 349,261 | ClosePath 1 +LogoNameen=328,247 | LineTo 294,247 | ArcTo 328,247,*,20 | ClosePath 1 +LogoNamel=363,175 | LineTo 384,175 | LineTo 384,298 | ArcTo 363,277,21 | LineTo 363,175 | ClosePath 1 +LogoRegisterw=406.25,188.5 | LineTo 406.25,179.25 | LineTo 410,179.25 | ArcTo 410,184.75 | LineTo 413,188.5 | LineTo 411.25,188.5 | LineTo 408.25,184.75 | LineTo 407.75,184.75 | LineTo 407.75,188.5 | LineTo 406.25,188.5 | ClosePath 1 +LogoRegisteri=407.75,180.75 | LineTo 410,180.75 | ArcTo 410,183.25 | LineTo 407.75,183.25 | LineTo 407.75,180.75 | ClosePath 1 +MainLogo3=386,202 | LineTo 484,202 | LineTo 484,299 | LineTo 455,271 | LineTo 455,230 | LineTo 414,230 | LineTo 386,202 | ClosePath 1 +MainLogo4=414,233 | LineTo 414,270 | LineTo 453,270 | LineTo 426,299 | LineTo 386,299 | LineTo 386,261 | LineTo 414,233 | ClosePath 1 +LogoNameAw=17,298 | LineTo 56,202 | LineTo 84,202 | LineTo 126,298 | LineTo 100,298 | LineTo 92,280 | LineTo 49,280 | LineTo 42,298 | LineTo 17,298 | ClosePath 1 +LogoNameAn=57,262 | LineTo 70,227 | LineTo 85,262 | LineTo 57,262 | ClosePath 1 +LogoNameM=137,298 | LineTo 137,202 | LineTo 159,202 | LineTo 190,237 | LineTo 220,202 | LineTo 243,202 | LineTo 243,298 | LineTo 218,298 | LineTo 218,240 | LineTo 191,270 | LineTo 189,270 | LineTo 162,240 | LineTo 162,298 | LineTo 137,298 | ClosePath 1 +LogoNameDw=260,298 | LineTo 260,202 | LineTo 305,202.5 | CurveTo 357,250,345,205,357,223 | CurveTo 305,297.5,358,277,350,295 | LineTo 260,298 | ClosePath 1 +LogoNameDn=285,281 | LineTo 285,221 | LineTo 303,221 | CurveTo 333,248,321,222,333,232 | CurveTo 303,281,333,264,325,279 | LineTo 285,281 | ClosePath 1 +MainLogo5=38,171 | CurveTo 362,171,195,32,308,108 | CurveTo 114,178,273,276,160,297 | CurveTo 280,172,160,136,235,117 | LineTo 244,203 | CurveTo 219,168,234,185,228,174 | CurveTo 148,182,210,161,180,148 | CurveTo 318,172,178,268,257,254 | CurveTo 81,175,252,89,143,98 | CurveTo 381,203,140,324,274,300 | CurveTo 429,233,406,219,426,228 | CurveTo 196,302,386,269,265,309 | CurveTo 38,171,133,294,73,256 | ClosePath 1 +LogoNameNN=40,442 | LineTo 40,367 | LineTo 83,367 | CurveTo 115,396,109,368,114,380 | LineTo 115,442 | LineTo 94,442 | LineTo 94,405 | CurveTo 80,385,95,397,93,386 | LineTo 61,385 | LineTo 61,442 | LineTo 40,442 | ClosePath 1 +LogoNameV=143,442 | LineTo 119,367 | LineTo 140,367 | LineTo 158,427 | LineTo 176,367 | LineTo 197,367 | LineTo 173,442 | LineTo 143,442 | ClosePath 1 +LogoNameI1=207,442 | LineTo 207,367 | LineTo 228,367 | LineTo 228,442 | LineTo 207,442 | ClosePath 1 +LogoNameDo=242,442 | LineTo 242,367 | LineTo 276,367 | CurveTo 314,405,298,367,315,376 | CurveTo 276,442,314,440,297,442 | LineTo 242,442 | ClosePath 1 +LogoNameDi=263,426 | LineTo 263,383 | LineTo 277,383 | CurveTo 294,405,283,383,294,388 | CurveTo 277,426,294,422,283,426 | LineTo 263,426 | ClosePath 1 +LogoNameI2=325,442 | LineTo 325,367 | LineTo 346,367 | LineTo 346,442 | LineTo 325,442 | ClosePath 1 +LogoNameAo=355,442 | LineTo 385,367 | LineTo 413,367 | LineTo 442,442 | LineTo 421,442 | LineTo 416,428 | LineTo 381,428 | LineTo 376,442 | LineTo 355,442 | ClosePath 1 +LogoNameAi=385,416 | LineTo 398,381 | LineTo 412,416 | LineTo 385,416 | ClosePath 1 X=(#Zoom#*30) Y=(#Zoom#*35)r W=(#Zoom#*40) @@ -1884,115 +1901,59 @@ H=(#Zoom#*40) UpdateDivider=-1 AntiAlias=1 -;--------GPU豸Զ-------- - -[MeasureGPUName1Source] -Measure=Registry -RegHKey=HKEY_LOCAL_MACHINE -RegKey=SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000 -RegValue=AdapterDesc -UpdateDivider=-1 +;--------GPU豸Ϣ-------- [MeasureGPUName1] -Measure=String -String=[MeasureGPUName1Source] -UpdateDivider=-1 -DynamicVariables=1 -Substitute="(R)":"[\x00AE]","(TM)":"[\x2122]","[R]":"[\x00AE]","[TM]":"[\x2122]" - -IfMatch=(?i)^Intel.* -IfMatchAction=[!SetVariable "IntegratedGPUName" "Intel"][!SetOption MeterIntegratedGPUName MeasureName MeasureGPUName1][!SetOption MeterIntegratedGPUName Text "%1"][!UpdateMeter MeterIntegratedGPUName][!Redraw] -IfMatch2=(?=^AMD.*)(?=.*HD.*) -IfMatchAction2=[!SetVariable "IntegratedGPUName" "AMD"][!SetOption MeterIntegratedGPUName MeasureName MeasureGPUName1][!SetOption MeterIntegratedGPUName Text "%1"][!UpdateMeter MeterIntegratedGPUName][!Redraw] -IfMatch3=(?=^AMD.*)(?=.*Graphics$) -IfMatchAction3=[!SetVariable "IntegratedGPUName" "AMD"][!SetOption MeterIntegratedGPUName MeasureName MeasureGPUName1][!SetOption MeterIntegratedGPUName Text "%1"][!UpdateMeter MeterIntegratedGPUName][!Redraw] -IfMatch4=(?i)^AMD.* -IfMatchAction4=[!SetVariable "DiscreteGPUName" "AMD"][!SetVariable "DiscreteGPUVRAM" "0"][!SetOption MeterDiscreteGPUName MeasureName MeasureGPUName1][!SetOption MeterDiscreteGPUName Text "%1"][!UpdateMeter MeterDiscreteGPUName][!Redraw] -IfMatch5=(?i)^Radeon.* -IfMatchAction5=[!SetVariable "DiscreteGPUName" "AMD"][!SetVariable "DiscreteGPUVRAM" "0"][!SetOption MeterDiscreteGPUName MeasureName MeasureGPUName1][!SetOption MeterDiscreteGPUName Text "%1"][!UpdateMeter MeterDiscreteGPUName][!Redraw] -IfMatch6=(?i)^NVIDIA.* -IfMatchAction6=[!SetVariable "DiscreteGPUName" "NVIDIA"][!SetVariable "DiscreteGPUVRAM" "0"][!SetOption MeterDiscreteGPUName MeasureName MeasureGPUName1][!SetOption MeterDiscreteGPUName Text "%1"][!UpdateMeter MeterDiscreteGPUName][!Redraw] - -[MeasureGPUName2Source] -Measure=Registry -RegHKey=HKEY_LOCAL_MACHINE -RegKey=SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000 -RegValue=DriverDesc -UpdateDivider=-1 - -[MeasureGPUName2] -Measure=String -String=[MeasureGPUName2Source] +Measure=Plugin +Plugin=DeviceInfo +Class=Display +DeviceDesc=1 +Type=DeviceName UpdateDivider=-1 -DynamicVariables=1 Substitute="(R)":"[\x00AE]","(TM)":"[\x2122]","[R]":"[\x00AE]","[TM]":"[\x2122]" -IfMatch=(?i)^Intel.* -IfMatchAction=[!SetVariable "IntegratedGPUName" "Intel"][!SetOption MeterIntegratedGPUName MeasureName MeasureGPUName2][!SetOption MeterIntegratedGPUName Text "%1"][!UpdateMeter MeterIntegratedGPUName][!Redraw] -IfMatch2=(?=^AMD.*)(?=.*HD.*) -IfMatchAction2=[!SetVariable "IntegratedGPUName" "AMD"][!SetOption MeterIntegratedGPUName MeasureName MeasureGPUName2][!SetOption MeterIntegratedGPUName Text "%1"][!UpdateMeter MeterIntegratedGPUName][!Redraw] -IfMatch3=(?=^AMD.*)(?=.*Graphics$) -IfMatchAction3=[!SetVariable "IntegratedGPUName" "AMD"][!SetOption MeterIntegratedGPUName MeasureName MeasureGPUName2][!SetOption MeterIntegratedGPUName Text "%1"][!UpdateMeter MeterIntegratedGPUName][!Redraw] -IfMatch4=(?i)^AMD.* -IfMatchAction4=[!SetVariable "DiscreteGPUName" "AMD"][!SetVariable "DiscreteGPUVRAM" "0"][!SetOption MeterDiscreteGPUName MeasureName MeasureGPUName2][!SetOption MeterDiscreteGPUName Text "%1"][!UpdateMeter MeterDiscreteGPUName][!Redraw] -IfMatch5=(?i)^Radeon.* -IfMatchAction5=[!SetVariable "DiscreteGPUName" "AMD"][!SetVariable "DiscreteGPUVRAM" "0"][!SetOption MeterDiscreteGPUName MeasureName MeasureGPUName2][!SetOption MeterDiscreteGPUName Text "%1"][!UpdateMeter MeterDiscreteGPUName][!Redraw] -IfMatch6=(?i)^NVIDIA.* -IfMatchAction6=[!SetVariable "DiscreteGPUName" "NVIDIA"][!SetVariable "DiscreteGPUVRAM" "0"][!SetOption MeterDiscreteGPUName MeasureName MeasureGPUName2][!SetOption MeterDiscreteGPUName Text "%1"][!UpdateMeter MeterDiscreteGPUName][!Redraw] - -[MeasureGPUName3Source] -Measure=Registry -RegHKey=HKEY_LOCAL_MACHINE -RegKey=SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0001 -RegValue=DriverDesc -UpdateDivider=-1 - -[MeasureGPUName3] -Measure=String -String=[MeasureGPUName3Source] -UpdateDivider=-1 -DynamicVariables=1 -Substitute="(R)":"[\x00AE]","(TM)":"[\x2122]","[R]":"[\x00AE]","[TM]":"[\x2122]" +IfAboveValue=1.99 +IfAboveAction=[!EnableMeasure "MeasureGPUName2"] +IfBelowValue=0.01 +IfBelowAction=[!DisableMeasure "MeasureGPUName2"] +IfEqualValue=1 +IfEqualAction=[!DisableMeasure "MeasureGPUName2"] IfMatch=(?i)^Intel.* -IfMatchAction=[!SetVariable "IntegratedGPUName" "Intel"][!SetOption MeterIntegratedGPUName MeasureName MeasureGPUName3][!SetOption MeterIntegratedGPUName Text "%1"][!UpdateMeter MeterIntegratedGPUName][!Redraw] +IfMatchAction=[!SetVariable "IntegratedGPUName" "Intel"][!SetOption MeterIntegratedGPUName MeasureName #Currentsection#][!SetOption MeterIntegratedGPUName Text "%1"][!UpdateMeter MeterIntegratedGPUName][!Redraw] IfMatch2=(?=^AMD.*)(?=.*HD.*) -IfMatchAction2=[!SetVariable "IntegratedGPUName" "AMD"][!SetOption MeterIntegratedGPUName MeasureName MeasureGPUName3][!SetOption MeterIntegratedGPUName Text "%1"][!UpdateMeter MeterIntegratedGPUName][!Redraw] +IfMatchAction2=[!SetVariable "IntegratedGPUName" "AMD"][!SetOption MeterIntegratedGPUName MeasureName #Currentsection#][!SetOption MeterIntegratedGPUName Text "%1"][!UpdateMeter MeterIntegratedGPUName][!Redraw] IfMatch3=(?=^AMD.*)(?=.*Graphics$) -IfMatchAction3=[!SetVariable "IntegratedGPUName" "AMD"][!SetOption MeterIntegratedGPUName MeasureName MeasureGPUName3][!SetOption MeterIntegratedGPUName Text "%1"][!UpdateMeter MeterIntegratedGPUName][!Redraw] +IfMatchAction3=[!SetVariable "IntegratedGPUName" "AMD"][!SetOption MeterIntegratedGPUName MeasureName #Currentsection#][!SetOption MeterIntegratedGPUName Text "%1"][!UpdateMeter MeterIntegratedGPUName][!Redraw] IfMatch4=(?i)^AMD.* -IfMatchAction4=[!SetVariable "DiscreteGPUName" "AMD"][!SetVariable "DiscreteGPUVRAM" "1"][!SetOption MeterDiscreteGPUName MeasureName MeasureGPUName3][!SetOption MeterDiscreteGPUName Text "%1"][!UpdateMeter MeterDiscreteGPUName][!Redraw] +IfMatchAction4=[!EnableMeasure "MeasureGPUDriveKey1"][!SetVariable "DiscreteGPUName" "AMD"][!SetOption MeterDiscreteGPUName MeasureName #Currentsection#][!SetOption MeterDiscreteGPUName Text "%1"][!UpdateMeter MeterDiscreteGPUName][!Redraw] IfMatch5=(?i)^Radeon.* -IfMatchAction5=[!SetVariable "DiscreteGPUName" "AMD"][!SetVariable "DiscreteGPUVRAM" "1"][!SetOption MeterDiscreteGPUName MeasureName MeasureGPUName3][!SetOption MeterDiscreteGPUName Text "%1"][!UpdateMeter MeterDiscreteGPUName][!Redraw] +IfMatchAction5=[!EnableMeasure "MeasureGPUDriveKey1"][!SetVariable "DiscreteGPUName" "AMD"][!SetOption MeterDiscreteGPUName MeasureName #Currentsection#][!SetOption MeterDiscreteGPUName Text "%1"][!UpdateMeter MeterDiscreteGPUName][!Redraw] IfMatch6=(?i)^NVIDIA.* -IfMatchAction6=[!SetVariable "DiscreteGPUName" "NVIDIA"][!SetVariable "DiscreteGPUVRAM" "1"][!SetOption MeterDiscreteGPUName MeasureName MeasureGPUName3][!SetOption MeterDiscreteGPUName Text "%1"][!UpdateMeter MeterDiscreteGPUName][!Redraw] - -[MeasureGPUName4Source] -Measure=Registry -RegHKey=HKEY_LOCAL_MACHINE -RegKey=SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0002 -RegValue=DriverDesc -UpdateDivider=-1 +IfMatchAction6=[!EnableMeasure "MeasureGPUDriveKey1"][!SetVariable "DiscreteGPUName" "NVIDIA"][!SetOption MeterDiscreteGPUName MeasureName #Currentsection#][!SetOption MeterDiscreteGPUName Text "%1"][!UpdateMeter MeterDiscreteGPUName][!Redraw] -[MeasureGPUName4] -Measure=String -String=[MeasureGPUName4Source] +[MeasureGPUName2] +Measure=Plugin +Plugin=DeviceInfo +Class=Display +DeviceDesc=2 +Type=DeviceName UpdateDivider=-1 -DynamicVariables=1 +Disabled=1 Substitute="(R)":"[\x00AE]","(TM)":"[\x2122]","[R]":"[\x00AE]","[TM]":"[\x2122]" IfMatch=(?i)^Intel.* -IfMatchAction=[!SetVariable "IntegratedGPUName" "Intel"][!SetOption MeterIntegratedGPUName MeasureName MeasureGPUName4][!SetOption MeterIntegratedGPUName Text "%1"][!UpdateMeter MeterIntegratedGPUName][!Redraw] +IfMatchAction=[!SetVariable "IntegratedGPUName" "Intel"][!SetOption MeterIntegratedGPUName MeasureName #Currentsection#][!SetOption MeterIntegratedGPUName Text "%1"][!UpdateMeter MeterIntegratedGPUName][!Redraw] IfMatch2=(?=^AMD.*)(?=.*HD.*) -IfMatchAction2=[!SetVariable "IntegratedGPUName" "AMD"][!SetOption MeterIntegratedGPUName MeasureName MeasureGPUName4][!SetOption MeterIntegratedGPUName Text "%1"][!UpdateMeter MeterIntegratedGPUName][!Redraw] +IfMatchAction2=[!SetVariable "IntegratedGPUName" "AMD"][!SetOption MeterIntegratedGPUName MeasureName #Currentsection#][!SetOption MeterIntegratedGPUName Text "%1"][!UpdateMeter MeterIntegratedGPUName][!Redraw] IfMatch3=(?=^AMD.*)(?=.*Graphics$) -IfMatchAction3=[!SetVariable "IntegratedGPUName" "AMD"][!SetOption MeterIntegratedGPUName MeasureName MeasureGPUName4][!SetOption MeterIntegratedGPUName Text "%1"][!UpdateMeter MeterIntegratedGPUName][!Redraw] +IfMatchAction3=[!SetVariable "IntegratedGPUName" "AMD"][!SetOption MeterIntegratedGPUName MeasureName #Currentsection#][!SetOption MeterIntegratedGPUName Text "%1"][!UpdateMeter MeterIntegratedGPUName][!Redraw] IfMatch4=(?i)^AMD.* -IfMatchAction4=[!SetVariable "DiscreteGPUName" "AMD"][!SetVariable "DiscreteGPUVRAM" "2"][!SetOption MeterDiscreteGPUName MeasureName MeasureGPUName4][!SetOption MeterDiscreteGPUName Text "%1"][!UpdateMeter MeterDiscreteGPUName][!Redraw] +IfMatchAction4=[!EnableMeasure "MeasureGPUDriveKey2"][!SetVariable "DiscreteGPUName" "AMD"][!SetOption MeterDiscreteGPUName MeasureName #Currentsection#][!SetOption MeterDiscreteGPUName Text "%1"][!UpdateMeter MeterDiscreteGPUName][!Redraw] IfMatch5=(?i)^Radeon.* -IfMatchAction5=[!SetVariable "DiscreteGPUName" "AMD"][!SetVariable "DiscreteGPUVRAM" "2"][!SetOption MeterDiscreteGPUName MeasureName MeasureGPUName4][!SetOption MeterDiscreteGPUName Text "%1"][!UpdateMeter MeterDiscreteGPUName][!Redraw] +IfMatchAction5=[!EnableMeasure "MeasureGPUDriveKey2"][!SetVariable "DiscreteGPUName" "AMD"][!SetOption MeterDiscreteGPUName MeasureName #Currentsection#][!SetOption MeterDiscreteGPUName Text "%1"][!UpdateMeter MeterDiscreteGPUName][!Redraw] IfMatch6=(?i)^NVIDIA.* -IfMatchAction6=[!SetVariable "DiscreteGPUName" "NVIDIA"][!SetVariable "DiscreteGPUVRAM" "2"][!SetOption MeterDiscreteGPUName MeasureName MeasureGPUName4][!SetOption MeterDiscreteGPUName Text "%1"][!UpdateMeter MeterDiscreteGPUName][!Redraw] +IfMatchAction6=[!EnableMeasure "MeasureGPUDriveKey2"][!SetVariable "DiscreteGPUName" "NVIDIA"][!SetOption MeterDiscreteGPUName MeasureName #Currentsection#][!SetOption MeterDiscreteGPUName Text "%1"][!UpdateMeter MeterDiscreteGPUName][!Redraw] [MeasureGPUNameRevise] Measure=String @@ -2010,29 +1971,31 @@ UpdateDivider=-1 DynamicVariables=1 IfMatch=^Intel,,10$ -IfMatchAction=[!DisableMeasure MeasureTempAlto][!DisableMeasure MeasureVRAMTotalSource][!DisableMeasure MeasureVRAMTotal][!DisableMeasure MeasureVRAMUsedSource][!DisableMeasure MeasureVRAMUsed][!DisableMeasure MeasureVRAMFree][!EnableMeasure MeasureCPUTemp][!HideMeterGroup DiscreteGPUBar][!HideMeter MeterDiscreteGPUUsedPercentual][!HideMeter MeterDiscreteGPUName][!HideMeter MeterDiscreteGPUluid][!HideMeter MeterVRAMBar][!HideMeter MeterVRAMUsedPercentual][!HideMeter MeterVRAMFree][!SetOption MeterIntegratedGPUUsedPercentual X (#Zoom#*40)r][!SetOption MeterIntegratedGPUUsedPercentual Y (#Zoom#*60)r][!SetOption MeterIntegratedGPUUsedPercentual FontSize (#Zoom#*8)][!SetOption MeterScreenText Y (#Zoom#*19)r][!SetOption MeterGPUTemp MeasureName MeasureCPUTemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption MeterGPUTopText Y (#Zoom#*6)r][!SetOption ImageVRAM Y (#Zoom#*-95)r][!SetOption MeterVRAMBarBack LineColor #FontColour4#,100][!SetOption MeterVRAMTotal Y (#Zoom#*60)r][!SetOption MeterVRAMTotal Text "Nun"][!SetOption MeterVRAMTotal FontSize (#Zoom#*8)][!SetOption MeterVRAMTotal FontColor #FontColour4#,255][!SetOption TextRAM&ROM Y (#Zoom#*59)r][!UpdateMeter MeterIntegratedGPUUsedPercentual][!UpdateMeter MeterScreenText][!UpdateMeter MeterGPUTemp][!UpdateMeter MeterGPUTopText][!UpdateMeter ImageVRAM][!UpdateMeter MeterVRAMBarBack][!UpdateMeter MeterVRAMTotal][!UpdateMeter TextRAM&ROM][!Redraw] +IfMatchAction=[!DisableMeasure MeasureVRAMTotalSource][!DisableMeasure MeasureVRAMTotal][!DisableMeasure MeasureVRAMUsedSource][!DisableMeasure MeasureVRAMUsed][!DisableMeasure MeasureVRAMFree][!HideMeterGroup DiscreteGPUBar][!HideMeter MeterDiscreteGPUUsedPercentual][!HideMeter MeterDiscreteGPUName][!HideMeter MeterDiscreteGPUluid][!HideMeter MeterVRAMBar][!HideMeter MeterVRAMUsedPercentual][!HideMeter MeterVRAMFree][!SetOption ImageGPU Shape8 "Path MainLogo1 | Fill Color 0,113,197,255"][!SetOption ImageGPU Shape9 "Path MainLogo2"][!SetOption ImageGPU Shape10 "Rectangle 100,179,21,21"][!SetOption ImageGPU Shape11 "Path LogoNamei"][!SetOption ImageGPU Shape12 "Path LogoNameIn"][!SetOption ImageGPU Shape13 "Path LogoNamet"][!SetOption ImageGPU Shape14 "Path LogoNameew"][!SetOption ImageGPU Shape15 "Path LogoNameen"][!SetOption ImageGPU Shape16 "Path LogoNamel"][!SetOption ImageGPU Shape17 "Ellipse 409,184,8.75"][!SetOption ImageGPU Shape18 "Ellipse 409,184,7.25"][!SetOption ImageGPU Shape19 "Path LogoRegisterw"][!SetOption ImageGPU Shape20 "Path LogoRegisteri"][!SetOption ImageGPU Shape21 "Combine Shape8 | Union Shape9 | Union Shape10 | Union Shape11 | Union Shape12 | Union Shape13 | Union Shape14| Exclude Shape15 | Union Shape16 | Union Shape17 | Exclude Shape18 | Union Shape19 | Exclude Shape20 | Scale 0.1,0.1,15,-25"][!SetOption ImageGPU Shape22 "Combine Shape7 | Exclude Shape21 | Scale (40/200*#Zoom#),(40/200*#Zoom#),0,0"][!SetOption MeterIntegratedGPUUsedPercentual X (#Zoom#*40)r][!SetOption MeterIntegratedGPUUsedPercentual Y (#Zoom#*60)r][!SetOption MeterIntegratedGPUUsedPercentual FontSize (#Zoom#*8)][!SetOption MeterScreenText Y (#Zoom#*19)r][!SetOption MeterGPUTemp MeasureName MeasureCPUTempPlugin][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption MeterGPUTopText Y (#Zoom#*6)r][!SetOption ImageVRAM Y (#Zoom#*-95)r][!SetOption MeterVRAMBarBack LineColor #FontColour4#,100][!SetOption MeterVRAMTotal Y (#Zoom#*60)r][!SetOption MeterVRAMTotal Text "Nun"][!SetOption MeterVRAMTotal FontSize (#Zoom#*8)][!SetOption MeterVRAMTotal FontColor #FontColour4#,255][!SetOption TextRAM&ROM Y (#Zoom#*59)r][!UpdateMeter ImageGPU][!UpdateMeter MeterIntegratedGPUUsedPercentual][!UpdateMeter MeterScreenText][!UpdateMeter MeterGPUTemp][!UpdateMeter MeterGPUTopText][!UpdateMeter ImageVRAM][!UpdateMeter MeterVRAMBarBack][!UpdateMeter MeterVRAMTotal][!UpdateMeter TextRAM&ROM][!Redraw] IfMatch2=^Intel,,No10$ -IfMatchAction2=[!DisableMeasure MeasureTempAlto][!HideMeter MeterGPUBarContainer][!HideMeter MeterGPUBarBack][!HideMeterGroup IntegratedGPUBar][!HideMeterGroup DiscreteGPUBar][!HideMeter MeterIntegratedGPUUsedPercentual][!HideMeter MeterDiscreteGPUUsedPercentual][!HideMeter MeterDiscreteGPUName][!SetOption ImageGPU X (#Zoom#*10)][!SetOption ImageGPU Y (#Zoom#*14)r][!SetOption ImageGPU W (0.25*#Zoom#*200)][!SetOption ImageGPU H (0.25*#Zoom#*200)][!SetOption ImageGPU Shape8 "Combine Shape1 | XOR Shape2 | XOR Shape3 | XOR Shape4 | XOR Shape5 | XOR Shape6 | XOR Shape7 | Scale (0.25*#Zoom#),(0.25*#Zoom#),0,0"][!SetOption MeterScreenText X (#Zoom#*88)][!SetOption MeterScreenText Y (#Zoom#*-48)r][!SetOption MeterScreen X (#Zoom#*190)][!SetOption MeterGPUTempText X (#Zoom#*90)][!SetOption MeterGPUTempText Y (#Zoom#*21)r][!SetOption MeterGPUTemp MeasureName MeasureCPUTemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption TextRAM&ROM Y (#Zoom#*53)r][!UpdateMeter ImageGPU][!UpdateMeter MeterScreenText][!UpdateMeter MeterScreen][!UpdateMeter MeterGPUTempText][!UpdateMeter MeterGPUTemp][!UpdateMeter TextRAM&ROM][!Redraw] +IfMatchAction2=[!HideMeter MeterGPUBarContainer][!HideMeter MeterGPUBarBack][!HideMeterGroup IntegratedGPUBar][!HideMeterGroup DiscreteGPUBar][!HideMeter MeterIntegratedGPUUsedPercentual][!HideMeter MeterDiscreteGPUUsedPercentual][!HideMeter MeterDiscreteGPUName][!SetOption ImageGPU Shape8 "Path MainLogo1 | Fill Color 0,113,197,255"][!SetOption ImageGPU Shape9 "Path MainLogo2"][!SetOption ImageGPU Shape10 "Rectangle 100,179,21,21"][!SetOption ImageGPU Shape11 "Path LogoNamei"][!SetOption ImageGPU Shape12 "Path LogoNameIn"][!SetOption ImageGPU Shape13 "Path LogoNamet"][!SetOption ImageGPU Shape14 "Path LogoNameew"][!SetOption ImageGPU Shape15 "Path LogoNameen"][!SetOption ImageGPU Shape16 "Path LogoNamel"][!SetOption ImageGPU Shape17 "Ellipse 409,184,8.75"][!SetOption ImageGPU Shape18 "Ellipse 409,184,7.25"][!SetOption ImageGPU Shape19 "Path LogoRegisterw"][!SetOption ImageGPU Shape20 "Path LogoRegisteri"][!SetOption ImageGPU Shape21 "Combine Shape8 | Union Shape9 | Union Shape10 | Union Shape11 | Union Shape12 | Union Shape13 | Union Shape14| Exclude Shape15 | Union Shape16 | Union Shape17 | Exclude Shape18 | Union Shape19 | Exclude Shape20 | Scale 0.1,0.1,15,-25"][!SetOption ImageGPU Shape22 "Combine Shape7 | Exclude Shape21 | Scale (40/200*#Zoom#),(40/200*#Zoom#),0,0"][!SetOption ImageGPU X (#Zoom#*10)][!SetOption ImageGPU Y (#Zoom#*14)r][!SetOption ImageGPU W (0.25*#Zoom#*200)][!SetOption ImageGPU H (0.25*#Zoom#*200)][!SetOption MeterScreenText X (#Zoom#*88)][!SetOption MeterScreenText Y (#Zoom#*-48)r][!SetOption MeterScreen X (#Zoom#*190)][!SetOption MeterGPUTempText X (#Zoom#*90)][!SetOption MeterGPUTempText Y (#Zoom#*21)r][!SetOption MeterGPUTemp MeasureName MeasureCPUTempPlugin][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption TextRAM&ROM Y (#Zoom#*53)r][!UpdateMeter ImageGPU][!UpdateMeter MeterScreenText][!UpdateMeter MeterScreen][!UpdateMeter MeterGPUTempText][!UpdateMeter MeterGPUTemp][!UpdateMeter TextRAM&ROM][!Redraw] IfMatch3=^AMD,,10$ -IfMatchAction3=[!DisableMeasure MeasureVRAMTotalSource][!DisableMeasure MeasureVRAMTotal][!DisableMeasure MeasureVRAMUsedSource][!DisableMeasure MeasureVRAMUsed][!DisableMeasure MeasureVRAMFree][!EnableMeasure MeasureGPUATemp][!HideMeterGroup DiscreteGPUBar][!HideMeter MeterDiscreteGPUUsedPercentual][!HideMeter MeterDiscreteGPUName][!HideMeter MeterDiscreteGPUluid][!HideMeter MeterVRAMBar][!HideMeter MeterVRAMUsedPercentual][!HideMeter MeterVRAMFree][!SetOption MeterIntegratedGPUUsedPercentual X (#Zoom#*40)r][!SetOption MeterIntegratedGPUUsedPercentual Y (#Zoom#*60)r][!SetOption MeterIntegratedGPUUsedPercentual FontSize (#Zoom#*8)][!SetOption MeterScreenText Y (#Zoom#*19)r][!SetOption MeterGPUTemp MeasureName MeasureGPUATemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption MeterGPUTopText Y (#Zoom#*6)r][!SetOption ImageVRAM Y (#Zoom#*-95)r][!SetOption MeterVRAMBarBack LineColor #FontColour4#,100][!SetOption MeterVRAMTotal Y (#Zoom#*60)r][!SetOption MeterVRAMTotal Text "Nun"][!SetOption MeterVRAMTotal FontSize (#Zoom#*8)][!SetOption MeterVRAMTotal FontColor #FontColour4#,255][!SetOption TextRAM&ROM Y (#Zoom#*59)r][!UpdateMeter MeterIntegratedGPUUsedPercentual][!UpdateMeter MeterScreenText][!UpdateMeter MeterGPUTemp][!UpdateMeter MeterGPUTopText][!UpdateMeter ImageVRAM][!UpdateMeter MeterVRAMBarBack][!UpdateMeter MeterVRAMTotal][!UpdateMeter TextRAM&ROM][!Redraw] +IfMatchAction3=[!DisableMeasure MeasureVRAMTotalSource][!DisableMeasure MeasureVRAMTotal][!DisableMeasure MeasureVRAMUsedSource][!DisableMeasure MeasureVRAMUsed][!DisableMeasure MeasureVRAMFree][!EnableMeasure MeasureCPUTemp][!HideMeterGroup DiscreteGPUBar][!HideMeter MeterDiscreteGPUUsedPercentual][!HideMeter MeterDiscreteGPUName][!HideMeter MeterDiscreteGPUluid][!HideMeter MeterVRAMBar][!HideMeter MeterVRAMUsedPercentual][!HideMeter MeterVRAMFree][!SetOption ImageGPU Shape8 "Path MainLogo3 | Fill Color 0,154,102,255"][!SetOption ImageGPU Shape9 "Path MainLogo4"][!SetOption ImageGPU Shape10 "Path LogoNameAw | Fill Color 0,0,0,255"][!SetOption ImageGPU Shape11 "Path LogoNameAn"][!SetOption ImageGPU Shape12 "Path LogoNameM"][!SetOption ImageGPU Shape13 "Path LogoNameDw"][!SetOption ImageGPU Shape14 "Path LogoNameDn"][!SetOption ImageGPU Shape15 "Combine Shape8 | Union Shape9 | Union Shape10 | Exclude Shape11 | Union Shape12 | Union Shape13 | Exclude Shape14 | Scale 0.1,0.1,35,-115"][!SetOption ImageGPU Shape16 "Combine Shape7 | Exclude Shape15 | Scale (40/200*#Zoom#),(40/200*#Zoom#),0,0"][!SetOption MeterIntegratedGPUUsedPercentual X (#Zoom#*40)r][!SetOption MeterIntegratedGPUUsedPercentual Y (#Zoom#*60)r][!SetOption MeterIntegratedGPUUsedPercentual FontSize (#Zoom#*8)][!SetOption MeterScreenText Y (#Zoom#*19)r][!SetOption MeterGPUTemp MeasureName MeasureCPUTemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption MeterGPUTopText Y (#Zoom#*6)r][!SetOption ImageVRAM Y (#Zoom#*-95)r][!SetOption MeterVRAMBarBack LineColor #FontColour4#,100][!SetOption MeterVRAMTotal Y (#Zoom#*60)r][!SetOption MeterVRAMTotal Text "Nun"][!SetOption MeterVRAMTotal FontSize (#Zoom#*8)][!SetOption MeterVRAMTotal FontColor #FontColour4#,255][!SetOption TextRAM&ROM Y (#Zoom#*59)r][!UpdateMeter ImageGPU][!UpdateMeter MeterIntegratedGPUUsedPercentual][!UpdateMeter MeterScreenText][!UpdateMeter MeterGPUTemp][!UpdateMeter MeterGPUTopText][!UpdateMeter ImageVRAM][!UpdateMeter MeterVRAMBarBack][!UpdateMeter MeterVRAMTotal][!UpdateMeter TextRAM&ROM][!Redraw] IfMatch4=^AMD,,No10$ -IfMatchAction4=[!EnableMeasure MeasureGPUATemp][!HideMeter MeterGPUBarContainer][!HideMeter MeterGPUBarBack][!HideMeterGroup IntegratedGPUBar][!HideMeterGroup DiscreteGPUBar][!HideMeter MeterIntegratedGPUUsedPercentual][!HideMeter MeterDiscreteGPUUsedPercentual][!HideMeter MeterDiscreteGPUName][!SetOption ImageGPU X (#Zoom#*10)][!SetOption ImageGPU Y (#Zoom#*14)r][!SetOption ImageGPU W (0.25*#Zoom#*200)][!SetOption ImageGPU H (0.25*#Zoom#*200)][!SetOption ImageGPU Shape8 "Combine Shape1 | XOR Shape2 | XOR Shape3 | XOR Shape4 | XOR Shape5 | XOR Shape6 | XOR Shape7 | Scale (0.25*#Zoom#),(0.25*#Zoom#),0,0"][!SetOption MeterScreenText X (#Zoom#*88)][!SetOption MeterScreenText Y (#Zoom#*-48)r][!SetOption MeterScreen X (#Zoom#*190)][!SetOption MeterGPUTempText X (#Zoom#*90)][!SetOption MeterGPUTempText Y (#Zoom#*21)r][!SetOption MeterGPUTemp MeasureName MeasureGPUATemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption TextRAM&ROM Y (#Zoom#*53)r][!UpdateMeter ImageGPU][!UpdateMeter MeterScreenText][!UpdateMeter MeterScreen][!UpdateMeter MeterGPUTempText][!UpdateMeter MeterGPUTemp][!UpdateMeter TextRAM&ROM][!Redraw] +IfMatchAction4=[!EnableMeasure MeasureCPUTemp][!HideMeter MeterGPUBarContainer][!HideMeter MeterGPUBarBack][!HideMeterGroup IntegratedGPUBar][!HideMeterGroup DiscreteGPUBar][!HideMeter MeterIntegratedGPUUsedPercentual][!HideMeter MeterDiscreteGPUUsedPercentual][!HideMeter MeterDiscreteGPUName][!SetOption ImageGPU Shape8 "Path MainLogo3 | Fill Color 0,154,102,255"][!SetOption ImageGPU Shape9 "Path MainLogo4"][!SetOption ImageGPU Shape10 "Path LogoNameAw | Fill Color 0,0,0,255"][!SetOption ImageGPU Shape11 "Path LogoNameAn"][!SetOption ImageGPU Shape12 "Path LogoNameM"][!SetOption ImageGPU Shape13 "Path LogoNameDw"][!SetOption ImageGPU Shape14 "Path LogoNameDn"][!SetOption ImageGPU Shape15 "Combine Shape8 | Union Shape9 | Union Shape10 | Exclude Shape11 | Union Shape12 | Union Shape13 | Exclude Shape14 | Scale 0.1,0.1,35,-115"][!SetOption ImageGPU Shape16 "Combine Shape7 | Exclude Shape15 | Scale (40/200*#Zoom#),(40/200*#Zoom#),0,0"][!SetOption ImageGPU X (#Zoom#*10)][!SetOption ImageGPU Y (#Zoom#*14)r][!SetOption ImageGPU W (0.25*#Zoom#*200)][!SetOption ImageGPU H (0.25*#Zoom#*200)][!SetOption MeterScreenText X (#Zoom#*88)][!SetOption MeterScreenText Y (#Zoom#*-48)r][!SetOption MeterScreen X (#Zoom#*190)][!SetOption MeterGPUTempText X (#Zoom#*90)][!SetOption MeterGPUTempText Y (#Zoom#*21)r][!SetOption MeterGPUTemp MeasureName MeasureCPUTemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption TextRAM&ROM Y (#Zoom#*53)r][!UpdateMeter ImageGPU][!UpdateMeter MeterScreenText][!UpdateMeter MeterScreen][!UpdateMeter MeterGPUTempText][!UpdateMeter MeterGPUTemp][!UpdateMeter TextRAM&ROM][!Redraw] IfMatch5=^,AMD,10$ -IfMatchAction5=[!EnableMeasure MeasureGPUATemp][!HideMeterGroup IntegratedGPUBar][!HideMeter MeterIntegratedGPUUsedPercentual][!HideMeter MeterIntegratedGPUName][!HideMeter MeterIntegratedGPUluid][!SetOptionGroup DiscreteGPUBar StartAngle (rad(135))][!SetOptionGroup DiscreteGPUBar RotationAngle (rad(270))][!SetOption MeterDiscreteGPUUsedPercentual X (#Zoom#*20)r][!SetOption MeterDiscreteGPUUsedPercentual Y (#Zoom#*-10)r][!SetOption MeterDiscreteGPUUsedPercentual FontSize (#Zoom#*8)][!SetOption MeterScreenText Y (#Zoom#*27)r][!SetOption MeterGPUTemp MeasureName MeasureGPUATemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption MeterDiscreteGPUName Y 0r][!SetOption ImageVRAM Y (#Zoom#*-103)r][!SetOption TextRAM&ROM Y (#Zoom#*73)r][!UpdateMeterGroup DiscreteGPUBar][!UpdateMeter MeterDiscreteGPUUsedPercentual][!UpdateMeter MeterScreenText][!UpdateMeter MeterGPUTemp][!UpdateMeter MeterDiscreteGPUName][!UpdateMeter ImageVRAM][!UpdateMeter TextRAM&ROM][!Redraw] +IfMatchAction5=[!EnableMeasure MeasureGPUATemp][!HideMeterGroup IntegratedGPUBar][!HideMeter MeterIntegratedGPUUsedPercentual][!HideMeter MeterIntegratedGPUName][!HideMeter MeterIntegratedGPUluid][!SetOption ImageGPU Shape8 "Path MainLogo3 | Fill Color 0,154,102,255"][!SetOption ImageGPU Shape9 "Path MainLogo4"][!SetOption ImageGPU Shape10 "Path LogoNameAw | Fill Color 0,0,0,255"][!SetOption ImageGPU Shape11 "Path LogoNameAn"][!SetOption ImageGPU Shape12 "Path LogoNameM"][!SetOption ImageGPU Shape13 "Path LogoNameDw"][!SetOption ImageGPU Shape14 "Path LogoNameDn"][!SetOption ImageGPU Shape15 "Combine Shape8 | Union Shape9 | Union Shape10 | Exclude Shape11 | Union Shape12 | Union Shape13 | Exclude Shape14 | Scale 0.1,0.1,35,-115"][!SetOption ImageGPU Shape16 "Combine Shape7 | Exclude Shape15 | Scale (40/200*#Zoom#),(40/200*#Zoom#),0,0"][!SetOptionGroup DiscreteGPUBar StartAngle (rad(135))][!SetOptionGroup DiscreteGPUBar RotationAngle (rad(270))][!SetOption MeterDiscreteGPUUsedPercentual X (#Zoom#*20)r][!SetOption MeterDiscreteGPUUsedPercentual Y (#Zoom#*-10)r][!SetOption MeterDiscreteGPUUsedPercentual FontSize (#Zoom#*8)][!SetOption MeterScreenText Y (#Zoom#*27)r][!SetOption MeterGPUTemp MeasureName MeasureGPUATemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption MeterDiscreteGPUName Y 0r][!SetOption ImageVRAM Y (#Zoom#*-103)r][!SetOption TextRAM&ROM Y (#Zoom#*73)r][!UpdateMeterGroup DiscreteGPUBar][!UpdateMeter ImageGPU][!UpdateMeter MeterDiscreteGPUUsedPercentual][!UpdateMeter MeterScreenText][!UpdateMeter MeterGPUTemp][!UpdateMeter MeterDiscreteGPUName][!UpdateMeter ImageVRAM][!UpdateMeter TextRAM&ROM][!Redraw] IfMatch6=^,AMD,No10$ -IfMatchAction6=[!EnableMeasure MeasureGPUATemp][!HideMeter MeterGPUBarContainer][!HideMeter MeterGPUBarBack][!HideMeterGroup IntegratedGPUBar][!HideMeterGroup DiscreteGPUBar][!HideMeter MeterIntegratedGPUUsedPercentual][!HideMeter MeterDiscreteGPUUsedPercentual][!HideMeter MeterIntegratedGPUName][!SetOption ImageGPU X (#Zoom#*10)][!SetOption ImageGPU Y (#Zoom#*14)r][!SetOption ImageGPU W (0.25*#Zoom#*200)][!SetOption ImageGPU H (0.25*#Zoom#*200)][!SetOption ImageGPU Shape8 "Combine Shape1 | XOR Shape2 | XOR Shape3 | XOR Shape4 | XOR Shape5 | XOR Shape6 | XOR Shape7 | Scale (0.25*#Zoom#),(0.25*#Zoom#),0,0"][!SetOption MeterScreenText X (#Zoom#*88)][!SetOption MeterScreenText Y (#Zoom#*-48)r][!SetOption MeterScreen X (#Zoom#*190)][!SetOption MeterGPUTempText X (#Zoom#*90)][!SetOption MeterGPUTempText Y (#Zoom#*21)r][!SetOption MeterGPUTemp MeasureName MeasureGPUATemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption MeterDiscreteGPUName Y 0r][!SetOption TextRAM&ROM Y (#Zoom#*63)r][!UpdateMeter ImageGPU][!UpdateMeter MeterScreenText][!UpdateMeter MeterScreen][!UpdateMeter MeterGPUTempText][!UpdateMeter MeterGPUTemp][!UpdateMeter MeterDiscreteGPUName][!UpdateMeter TextRAM&ROM][!Redraw] +IfMatchAction6=[!EnableMeasure MeasureGPUATemp][!HideMeter MeterGPUBarContainer][!HideMeter MeterGPUBarBack][!HideMeterGroup IntegratedGPUBar][!HideMeterGroup DiscreteGPUBar][!HideMeter MeterIntegratedGPUUsedPercentual][!HideMeter MeterDiscreteGPUUsedPercentual][!HideMeter MeterIntegratedGPUName][!SetOption ImageGPU Shape8 "Path MainLogo3 | Fill Color 0,154,102,255"][!SetOption ImageGPU Shape9 "Path MainLogo4"][!SetOption ImageGPU Shape10 "Path LogoNameAw | Fill Color 0,0,0,255"][!SetOption ImageGPU Shape11 "Path LogoNameAn"][!SetOption ImageGPU Shape12 "Path LogoNameM"][!SetOption ImageGPU Shape13 "Path LogoNameDw"][!SetOption ImageGPU Shape14 "Path LogoNameDn"][!SetOption ImageGPU Shape15 "Combine Shape8 | Union Shape9 | Union Shape10 | Exclude Shape11 | Union Shape12 | Union Shape13 | Exclude Shape14 | Scale 0.1,0.1,35,-115"][!SetOption ImageGPU Shape16 "Combine Shape7 | Exclude Shape15 | Scale (40/200*#Zoom#),(40/200*#Zoom#),0,0"][!SetOption ImageGPU X (#Zoom#*10)][!SetOption ImageGPU Y (#Zoom#*14)r][!SetOption ImageGPU W (0.25*#Zoom#*200)][!SetOption ImageGPU H (0.25*#Zoom#*200)][!SetOption MeterScreenText X (#Zoom#*88)][!SetOption MeterScreenText Y (#Zoom#*-48)r][!SetOption MeterScreen X (#Zoom#*190)][!SetOption MeterGPUTempText X (#Zoom#*90)][!SetOption MeterGPUTempText Y (#Zoom#*21)r][!SetOption MeterGPUTemp MeasureName MeasureGPUATemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption MeterDiscreteGPUName Y 0r][!SetOption TextRAM&ROM Y (#Zoom#*63)r][!UpdateMeter ImageGPU][!UpdateMeter MeterScreenText][!UpdateMeter MeterScreen][!UpdateMeter MeterGPUTempText][!UpdateMeter MeterGPUTemp][!UpdateMeter MeterDiscreteGPUName][!UpdateMeter TextRAM&ROM][!Redraw] IfMatch7=^,NVIDIA,10$ -IfMatchAction7=[!EnableMeasure MeasureGPUNTemp][!HideMeterGroup IntegratedGPUBar][!HideMeter MeterIntegratedGPUUsedPercentual][!HideMeter MeterIntegratedGPUName][!HideMeter MeterIntegratedGPUluid][!SetOptionGroup DiscreteGPUBar StartAngle (rad(135))][!SetOptionGroup DiscreteGPUBar RotationAngle (rad(270))][!SetOption MeterDiscreteGPUUsedPercentual X (#Zoom#*20)r][!SetOption MeterDiscreteGPUUsedPercentual Y (#Zoom#*-10)r][!SetOption MeterDiscreteGPUUsedPercentual FontSize (#Zoom#*8)][!SetOption MeterScreenText Y (#Zoom#*27)r][!SetOption MeterGPUTemp MeasureName MeasureGPUNTemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption MeterDiscreteGPUName Y 0r][!SetOption ImageVRAM Y (#Zoom#*-103)r][!SetOption TextRAM&ROM Y (#Zoom#*73)r][!UpdateMeterGroup DiscreteGPUBar][!UpdateMeter MeterDiscreteGPUUsedPercentual][!UpdateMeter MeterScreenText][!UpdateMeter MeterGPUTemp][!UpdateMeter MeterDiscreteGPUName][!UpdateMeter ImageVRAM][!UpdateMeter TextRAM&ROM][!Redraw] +IfMatchAction7=[!EnableMeasure MeasureGPUNTemp][!HideMeterGroup IntegratedGPUBar][!HideMeter MeterIntegratedGPUUsedPercentual][!HideMeter MeterIntegratedGPUName][!HideMeter MeterIntegratedGPUluid][!SetOption ImageGPU Shape8 "Rectangle 196,55,264,279 | Fill Color 119,185,0,255"][!SetOption ImageGPU Shape9 "Path MainLogo5"][!SetOption ImageGPU Shape10 "Path LogoNameNN | Fill Color 0,0,0,255"][!SetOption ImageGPU Shape11 "Path LogoNameV"][!SetOption ImageGPU Shape12 "Path LogoNameI1"][!SetOption ImageGPU Shape13 "Path LogoNameDo"][!SetOption ImageGPU Shape14 "Path LogoNameDi"][!SetOption ImageGPU Shape15 "Path LogoNameI2"][!SetOption ImageGPU Shape16 "Path LogoNameAo"][!SetOption ImageGPU Shape17 "Path LogoNameAi"][!SetOption ImageGPU Shape18 "Ellipse 453.5,437.5,6.25"][!SetOption ImageGPU Shape19 "Ellipse 453.5,437.5,4.75"][!SetOption ImageGPU Shape20 "Path LogoRegisterw"][!SetOption ImageGPU Shape21 "Path LogoRegisteri"][!SetOption ImageGPU Shape22 "Combine Shape20 | Exclude Shape21 | Scale 0.7,0.7 | Offset 44,253.5"][!SetOption ImageGPU Shape23 "Combine Shape8 | XOR Shape9 | Union Shape10 | Union Shape11 | Union Shape12 | Union Shape13 | Exclude Shape14 | Union Shape15 | Union Shape16 | Exclude Shape17 | Union Shape18 | Exclude Shape19 | Union Shape22 | Scale 0.1,0.1,15,33"][!SetOption ImageGPU Shape24 "Combine Shape7 | Exclude Shape23 | Scale (40/200*#Zoom#),(40/200*#Zoom#),0,0"][!SetOptionGroup DiscreteGPUBar StartAngle (rad(135))][!SetOptionGroup DiscreteGPUBar RotationAngle (rad(270))][!SetOption MeterDiscreteGPUUsedPercentual X (#Zoom#*20)r][!SetOption MeterDiscreteGPUUsedPercentual Y (#Zoom#*-10)r][!SetOption MeterDiscreteGPUUsedPercentual FontSize (#Zoom#*8)][!SetOption MeterScreenText Y (#Zoom#*27)r][!SetOption MeterGPUTemp MeasureName MeasureGPUNTemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption MeterDiscreteGPUName Y 0r][!SetOption ImageVRAM Y (#Zoom#*-103)r][!SetOption TextRAM&ROM Y (#Zoom#*73)r][!UpdateMeterGroup DiscreteGPUBar][!UpdateMeter ImageGPU][!UpdateMeter MeterDiscreteGPUUsedPercentual][!UpdateMeter MeterScreenText][!UpdateMeter MeterGPUTemp][!UpdateMeter MeterDiscreteGPUName][!UpdateMeter ImageVRAM][!UpdateMeter TextRAM&ROM][!Redraw] IfMatch8=^,NVIDIA,No10$ -IfMatchAction8=[!EnableMeasure MeasureNvidiaGPU][!EnableMeasure MeasureNvidiaGPU0][!EnableMeasure MeasureGPUNTemp][!EnableMeasure MeasureVRAMTotalSource][!EnableMeasure MeasureVRAMTotal][!HideMeterGroup IntegratedGPUBar][!HideMeterGroup DiscreteGPUEngineBar][!HideMeter MeterIntegratedGPUUsedPercentual][!HideMeter MeterIntegratedGPUName][!ShowMeter ImageVRAM][!ShowMeter MeterVRAMBarContainer][!ShowMeter MeterVRAMBarBack][!ShowMeter MeterVRAMTotal][!SetOption MeterDiscreteGPUBar StartAngle (rad(135))][!SetOption MeterDiscreteGPUBar RotationAngle (rad(270))][!SetOption MeterDiscreteGPUUsedPercentual X (#Zoom#*20)r][!SetOption MeterDiscreteGPUUsedPercentual Y (#Zoom#*-10)r][!SetOption MeterDiscreteGPUUsedPercentual FontSize (#Zoom#*8)][!SetOption MeterScreenText Y (#Zoom#*19)r][!SetOption MeterGPUTemp MeasureName MeasureGPUNTemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption MeterDiscreteGPUName Y 0r][!SetOption ImageVRAM Y (#Zoom#*-95)r][!SetOption MeterVRAMBarBack LineColor #FontColour4#,100][!SetOption MeterVRAMTotal Y (#Zoom#*60)r][!SetOption MeterVRAMTotal FontSize (#Zoom#*8)][!SetOption TextRAM&ROM Y (#Zoom#*39)r][!UpdateMeter MeterDiscreteGPUBar][!UpdateMeter MeterDiscreteGPUUsedPercentual][!UpdateMeter MeterScreenText][!UpdateMeter MeterGPUTemp][!UpdateMeter MeterDiscreteGPUName][!UpdateMeter ImageVRAM][!UpdateMeter MeterVRAMBarBack][!UpdateMeter MeterVRAMTotal][!UpdateMeter TextRAM&ROM][!Redraw] +IfMatchAction8=[!EnableMeasure MeasureNvidiaGPU][!EnableMeasure MeasureNvidiaGPU0][!EnableMeasure MeasureGPUNTemp][!EnableMeasure MeasureVRAMTotalSource][!EnableMeasure MeasureVRAMTotal][!HideMeterGroup IntegratedGPUBar][!HideMeterGroup DiscreteGPUEngineBar][!HideMeter MeterIntegratedGPUUsedPercentual][!HideMeter MeterIntegratedGPUName][!ShowMeter ImageVRAM][!ShowMeter MeterVRAMBarContainer][!ShowMeter MeterVRAMBarBack][!ShowMeter MeterVRAMTotal][!SetOption ImageGPU Shape8 "Rectangle 196,55,264,279 | Fill Color 119,185,0,255"][!SetOption ImageGPU Shape9 "Path MainLogo5"][!SetOption ImageGPU Shape10 "Path LogoNameNN | Fill Color 0,0,0,255"][!SetOption ImageGPU Shape11 "Path LogoNameV"][!SetOption ImageGPU Shape12 "Path LogoNameI1"][!SetOption ImageGPU Shape13 "Path LogoNameDo"][!SetOption ImageGPU Shape14 "Path LogoNameDi"][!SetOption ImageGPU Shape15 "Path LogoNameI2"][!SetOption ImageGPU Shape16 "Path LogoNameAo"][!SetOption ImageGPU Shape17 "Path LogoNameAi"][!SetOption ImageGPU Shape18 "Ellipse 453.5,437.5,6.25"][!SetOption ImageGPU Shape19 "Ellipse 453.5,437.5,4.75"][!SetOption ImageGPU Shape20 "Path LogoRegisterw"][!SetOption ImageGPU Shape21 "Path LogoRegisteri"][!SetOption ImageGPU Shape22 "Combine Shape20 | Exclude Shape21 | Scale 0.7,0.7 | Offset 44,253.5"][!SetOption ImageGPU Shape23 "Combine Shape8 | XOR Shape9 | Union Shape10 | Union Shape11 | Union Shape12 | Union Shape13 | Exclude Shape14 | Union Shape15 | Union Shape16 | Exclude Shape17 | Union Shape18 | Exclude Shape19 | Union Shape22 | Scale 0.1,0.1,15,33"][!SetOption ImageGPU Shape24 "Combine Shape7 | Exclude Shape23 | Scale (40/200*#Zoom#),(40/200*#Zoom#),0,0"][!SetOption MeterDiscreteGPUBar StartAngle (rad(135))][!SetOption MeterDiscreteGPUBar RotationAngle (rad(270))][!SetOption MeterDiscreteGPUUsedPercentual X (#Zoom#*20)r][!SetOption MeterDiscreteGPUUsedPercentual Y (#Zoom#*-10)r][!SetOption MeterDiscreteGPUUsedPercentual FontSize (#Zoom#*8)][!SetOption MeterScreenText Y (#Zoom#*19)r][!SetOption MeterGPUTemp MeasureName MeasureGPUNTemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption MeterDiscreteGPUName Y 0r][!SetOption ImageVRAM Y (#Zoom#*-95)r][!SetOption MeterVRAMBarBack LineColor #FontColour4#,100][!SetOption MeterVRAMTotal Y (#Zoom#*60)r][!SetOption MeterVRAMTotal FontSize (#Zoom#*8)][!SetOption TextRAM&ROM Y (#Zoom#*39)r][!UpdateMeter ImageGPU][!UpdateMeter MeterDiscreteGPUBar][!UpdateMeter MeterDiscreteGPUUsedPercentual][!UpdateMeter MeterScreenText][!UpdateMeter MeterGPUTemp][!UpdateMeter MeterDiscreteGPUName][!UpdateMeter ImageVRAM][!UpdateMeter MeterVRAMBarBack][!UpdateMeter MeterVRAMTotal][!UpdateMeter TextRAM&ROM][!Redraw] IfMatch9=^Intel,AMD,10$ -IfMatchAction9=[!EnableMeasure MeasureGPUATemp][!SetOption MeterGPUBarContainer Shape2 "Path IntegratedGPUEnd"][!SetOption MeterGPUBarContainer Shape3 "Combine Shape | Exclude Shape2"][!SetOption MeterGPUBarContainer IntegratedGPUEnd "(#Zoom#*40*(1+cos(rad(135+270*1/2-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/2-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/2+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/2+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/2+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/2+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/2-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/2-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/2-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/2-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOptionGroup IntegratedGPUBar RotationAngle (rad(270*1/2))][!SetOptionGroup DiscreteGPUBar RotationAngle (-rad(270*1/2))][!SetOption MeterGPUTemp MeasureName MeasureGPUATemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!UpdateMeter MeterGPUBarContainer][!UpdateMeterGroup IntegratedGPUBar][!UpdateMeterGroup DiscreteGPUBar][!UpdateMeter MeterGPUTemp][!Redraw] +IfMatchAction9=[!EnableMeasure MeasureGPUATemp][!SetOption ImageGPU Shape8 "Path MainLogo3 | Fill Color 0,154,102,255"][!SetOption ImageGPU Shape9 "Path MainLogo4"][!SetOption ImageGPU Shape10 "Path LogoNameAw | Fill Color 0,0,0,255"][!SetOption ImageGPU Shape11 "Path LogoNameAn"][!SetOption ImageGPU Shape12 "Path LogoNameM"][!SetOption ImageGPU Shape13 "Path LogoNameDw"][!SetOption ImageGPU Shape14 "Path LogoNameDn"][!SetOption ImageGPU Shape15 "Combine Shape8 | Union Shape9 | Union Shape10 | Exclude Shape11 | Union Shape12 | Union Shape13 | Exclude Shape14 | Scale 0.1,0.1,35,-115"][!SetOption ImageGPU Shape16 "Combine Shape7 | Exclude Shape15 | Scale (40/200*#Zoom#),(40/200*#Zoom#),0,0"][!SetOption MeterGPUBarContainer Shape2 "Path IntegratedGPUEnd"][!SetOption MeterGPUBarContainer Shape3 "Combine Shape | Exclude Shape2"][!SetOption MeterGPUBarContainer IntegratedGPUEnd "(#Zoom#*40*(1+cos(rad(135+270*1/2-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/2-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/2+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/2+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/2+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/2+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/2-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/2-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/2-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/2-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOptionGroup IntegratedGPUBar RotationAngle (rad(270*1/2))][!SetOptionGroup DiscreteGPUBar RotationAngle (-rad(270*1/2))][!SetOption MeterGPUTemp MeasureName MeasureGPUATemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!UpdateMeter ImageGPU][!UpdateMeter MeterGPUBarContainer][!UpdateMeterGroup IntegratedGPUBar][!UpdateMeterGroup DiscreteGPUBar][!UpdateMeter MeterGPUTemp][!Redraw] IfMatch10=^Intel,AMD,No10$ -IfMatchAction10=[!EnableMeasure MeasureGPUATemp][!HideMeter MeterGPUBarContainer][!HideMeter MeterGPUBarBack][!HideMeterGroup IntegratedGPUBar][!HideMeterGroup DiscreteGPUBar][!HideMeter MeterIntegratedGPUUsedPercentual][!HideMeter MeterDiscreteGPUUsedPercentual][!SetOption ImageGPU X (#Zoom#*10)][!SetOption ImageGPU Y (#Zoom#*14)r][!SetOption ImageGPU W (0.25*#Zoom#*200)][!SetOption ImageGPU H (0.25*#Zoom#*200)][!SetOption ImageGPU Shape8 "Combine Shape1 | XOR Shape2 | XOR Shape3 | XOR Shape4 | XOR Shape5 | XOR Shape6 | XOR Shape7 | Scale (0.25*#Zoom#),(0.25*#Zoom#),0,0"][!SetOption MeterScreenText X (#Zoom#*88)][!SetOption MeterScreenText Y (#Zoom#*-48)r][!SetOption MeterScreen X (#Zoom#*190)][!SetOption MeterGPUTempText X (#Zoom#*90)][!SetOption MeterGPUTempText Y (#Zoom#*21)r][!SetOption MeterGPUTemp MeasureName MeasureGPUATemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption TextRAM&ROM Y (#Zoom#*63)r][!UpdateMeter ImageGPU][!UpdateMeter MeterScreenText][!UpdateMeter MeterScreen][!UpdateMeter MeterGPUTempText][!UpdateMeter MeterGPUTemp][!UpdateMeter TextRAM&ROM][!Redraw] +IfMatchAction10=[!EnableMeasure MeasureGPUATemp][!HideMeter MeterGPUBarContainer][!HideMeter MeterGPUBarBack][!HideMeterGroup IntegratedGPUBar][!HideMeterGroup DiscreteGPUBar][!HideMeter MeterIntegratedGPUUsedPercentual][!HideMeter MeterDiscreteGPUUsedPercentual][!SetOption ImageGPU Shape8 "Path MainLogo3 | Fill Color 0,154,102,255"][!SetOption ImageGPU Shape9 "Path MainLogo4"][!SetOption ImageGPU Shape10 "Path LogoNameAw | Fill Color 0,0,0,255"][!SetOption ImageGPU Shape11 "Path LogoNameAn"][!SetOption ImageGPU Shape12 "Path LogoNameM"][!SetOption ImageGPU Shape13 "Path LogoNameDw"][!SetOption ImageGPU Shape14 "Path LogoNameDn"][!SetOption ImageGPU Shape15 "Combine Shape8 | Union Shape9 | Union Shape10 | Exclude Shape11 | Union Shape12 | Union Shape13 | Exclude Shape14 | Scale 0.1,0.1,35,-115"][!SetOption ImageGPU Shape16 "Combine Shape7 | Exclude Shape15 | Scale (40/200*#Zoom#),(40/200*#Zoom#),0,0"][!SetOption ImageGPU X (#Zoom#*10)][!SetOption ImageGPU Y (#Zoom#*14)r][!SetOption ImageGPU W (0.25*#Zoom#*200)][!SetOption ImageGPU H (0.25*#Zoom#*200)][!SetOption MeterScreenText X (#Zoom#*88)][!SetOption MeterScreenText Y (#Zoom#*-48)r][!SetOption MeterScreen X (#Zoom#*190)][!SetOption MeterGPUTempText X (#Zoom#*90)][!SetOption MeterGPUTempText Y (#Zoom#*21)r][!SetOption MeterGPUTemp MeasureName MeasureGPUATemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption TextRAM&ROM Y (#Zoom#*63)r][!UpdateMeter ImageGPU][!UpdateMeter MeterScreenText][!UpdateMeter MeterScreen][!UpdateMeter MeterGPUTempText][!UpdateMeter MeterGPUTemp][!UpdateMeter TextRAM&ROM][!Redraw] IfMatch11=^Intel,NVIDIA,10$|^AMD,NVIDIA,10$ -IfMatchAction11=[!EnableMeasure MeasureGPUNTemp][!SetOption MeterGPUBarContainer Shape2 "Path IntegratedGPUEnd"][!SetOption MeterGPUBarContainer Shape3 "Combine Shape | Exclude Shape2"][!SetOption MeterGPUBarContainer IntegratedGPUEnd "(#Zoom#*40*(1+cos(rad(135+270*1/2-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/2-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/2+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/2+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/2+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/2+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/2-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/2-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/2-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/2-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOptionGroup IntegratedGPUBar RotationAngle (rad(270*1/2))][!SetOptionGroup DiscreteGPUBar RotationAngle (-rad(270*1/2))][!SetOption MeterGPUTemp MeasureName MeasureGPUNTemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!UpdateMeter MeterGPUBarContainer][!UpdateMeterGroup IntegratedGPUBar][!UpdateMeterGroup DiscreteGPUBar][!UpdateMeter MeterGPUTemp][!Redraw] +IfMatchAction11=[!EnableMeasure MeasureGPUNTemp][!SetOption ImageGPU Shape8 "Rectangle 196,55,264,279 | Fill Color 119,185,0,255"][!SetOption ImageGPU Shape9 "Path MainLogo5"][!SetOption ImageGPU Shape10 "Path LogoNameNN | Fill Color 0,0,0,255"][!SetOption ImageGPU Shape11 "Path LogoNameV"][!SetOption ImageGPU Shape12 "Path LogoNameI1"][!SetOption ImageGPU Shape13 "Path LogoNameDo"][!SetOption ImageGPU Shape14 "Path LogoNameDi"][!SetOption ImageGPU Shape15 "Path LogoNameI2"][!SetOption ImageGPU Shape16 "Path LogoNameAo"][!SetOption ImageGPU Shape17 "Path LogoNameAi"][!SetOption ImageGPU Shape18 "Ellipse 453.5,437.5,6.25"][!SetOption ImageGPU Shape19 "Ellipse 453.5,437.5,4.75"][!SetOption ImageGPU Shape20 "Path LogoRegisterw"][!SetOption ImageGPU Shape21 "Path LogoRegisteri"][!SetOption ImageGPU Shape22 "Combine Shape20 | Exclude Shape21 | Scale 0.7,0.7 | Offset 44,253.5"][!SetOption ImageGPU Shape23 "Combine Shape8 | XOR Shape9 | Union Shape10 | Union Shape11 | Union Shape12 | Union Shape13 | Exclude Shape14 | Union Shape15 | Union Shape16 | Exclude Shape17 | Union Shape18 | Exclude Shape19 | Union Shape22 | Scale 0.1,0.1,15,33"][!SetOption ImageGPU Shape24 "Combine Shape7 | Exclude Shape23 | Scale (40/200*#Zoom#),(40/200*#Zoom#),0,0"][!SetOption MeterGPUBarContainer Shape2 "Path IntegratedGPUEnd"][!SetOption MeterGPUBarContainer Shape3 "Combine Shape | Exclude Shape2"][!SetOption MeterGPUBarContainer IntegratedGPUEnd "(#Zoom#*40*(1+cos(rad(135+270*1/2-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/2-360*3/2/PI/37)))) | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/2+360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/2+360*3/2/PI/37)))),(#Zoom#*40) | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/2+360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/2+360*3/2/PI/37)))+6)),*,*,*,1 | ArcTo (#Zoom#*(34*(1+cos(rad(135+270*1/2-360*3/2/PI/37)))+6)),(#Zoom#*(34*(1+sin(rad(135+270*1/2-360*3/2/PI/37)))+6)),(#Zoom#*34),*,*,1 | ArcTo (#Zoom#*40*(1+cos(rad(135+270*1/2-360*3/2/PI/37)))),(#Zoom#*40*(1+sin(rad(135+270*1/2-360*3/2/PI/37)))),*,*,*,1 | ClosePath 1"][!SetOptionGroup IntegratedGPUBar RotationAngle (rad(270*1/2))][!SetOptionGroup DiscreteGPUBar RotationAngle (-rad(270*1/2))][!SetOption MeterGPUTemp MeasureName MeasureGPUNTemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!UpdateMeter MeterGPUBarContainer][!UpdateMeterGroup IntegratedGPUBar][!UpdateMeterGroup DiscreteGPUBar][!UpdateMeter ImageGPU][!UpdateMeter MeterGPUTemp][!Redraw] IfMatch12=^Intel,NVIDIA,No10$|^AMD,NVIDIA,No10$ -IfMatchAction12=[!EnableMeasure MeasureNvidiaGPU][!EnableMeasure MeasureNvidiaGPU0][!EnableMeasure MeasureGPUNTemp][!EnableMeasure MeasureVRAMTotalSource][!EnableMeasure MeasureVRAMTotal][!HideMeterGroup IntegratedGPUBar][!HideMeterGroup DiscreteGPUEngineBar][!HideMeter MeterIntegratedGPUUsedPercentual][!ShowMeter ImageVRAM][!ShowMeter MeterVRAMBarContainer][!ShowMeter MeterVRAMBarBack][!ShowMeter MeterVRAMTotal][!SetOption MeterDiscreteGPUBar StartAngle (rad(135))][!SetOption MeterDiscreteGPUBar RotationAngle (rad(270))][!SetOption MeterDiscreteGPUUsedPercentual X (#Zoom#*20)r][!SetOption MeterDiscreteGPUUsedPercentual Y (#Zoom#*-10)r][!SetOption MeterDiscreteGPUUsedPercentual FontSize (#Zoom#*8)][!SetOption MeterScreenText Y (#Zoom#*19)r][!SetOption MeterGPUTemp MeasureName MeasureGPUNTemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption ImageVRAM Y (#Zoom#*-105)r][!SetOption MeterVRAMBarBack LineColor #FontColour4#,100][!SetOption MeterVRAMTotal Y (#Zoom#*60)r][!SetOption MeterVRAMTotal FontSize (#Zoom#*8)][!SetOption TextRAM&ROM Y (#Zoom#*49)r][!UpdateMeter MeterDiscreteGPUBar][!UpdateMeter MeterDiscreteGPUUsedPercentual][!UpdateMeter MeterGPUTemp][!UpdateMeter ImageVRAM][!UpdateMeter MeterVRAMBarBack][!UpdateMeter MeterVRAMTotal][!UpdateMeter TextRAM&ROM][!Redraw] +IfMatchAction12=[!EnableMeasure MeasureNvidiaGPU][!EnableMeasure MeasureNvidiaGPU0][!EnableMeasure MeasureGPUNTemp][!EnableMeasure MeasureVRAMTotalSource][!EnableMeasure MeasureVRAMTotal][!HideMeterGroup IntegratedGPUBar][!HideMeterGroup DiscreteGPUEngineBar][!HideMeter MeterIntegratedGPUUsedPercentual][!ShowMeter ImageVRAM][!ShowMeter MeterVRAMBarContainer][!ShowMeter MeterVRAMBarBack][!ShowMeter MeterVRAMTotal][!SetOption ImageGPU Shape8 "Rectangle 196,55,264,279 | Fill Color 119,185,0,255"][!SetOption ImageGPU Shape9 "Path MainLogo5"][!SetOption ImageGPU Shape10 "Path LogoNameNN | Fill Color 0,0,0,255"][!SetOption ImageGPU Shape11 "Path LogoNameV"][!SetOption ImageGPU Shape12 "Path LogoNameI1"][!SetOption ImageGPU Shape13 "Path LogoNameDo"][!SetOption ImageGPU Shape14 "Path LogoNameDi"][!SetOption ImageGPU Shape15 "Path LogoNameI2"][!SetOption ImageGPU Shape16 "Path LogoNameAo"][!SetOption ImageGPU Shape17 "Path LogoNameAi"][!SetOption ImageGPU Shape18 "Ellipse 453.5,437.5,6.25"][!SetOption ImageGPU Shape19 "Ellipse 453.5,437.5,4.75"][!SetOption ImageGPU Shape20 "Path LogoRegisterw"][!SetOption ImageGPU Shape21 "Path LogoRegisteri"][!SetOption ImageGPU Shape22 "Combine Shape20 | Exclude Shape21 | Scale 0.7,0.7 | Offset 44,253.5"][!SetOption ImageGPU Shape23 "Combine Shape8 | XOR Shape9 | Union Shape10 | Union Shape11 | Union Shape12 | Union Shape13 | Exclude Shape14 | Union Shape15 | Union Shape16 | Exclude Shape17 | Union Shape18 | Exclude Shape19 | Union Shape22 | Scale 0.1,0.1,15,33"][!SetOption ImageGPU Shape24 "Combine Shape7 | Exclude Shape23 | Scale (40/200*#Zoom#),(40/200*#Zoom#),0,0"][!SetOption MeterDiscreteGPUBar StartAngle (rad(135))][!SetOption MeterDiscreteGPUBar RotationAngle (rad(270))][!SetOption MeterDiscreteGPUUsedPercentual X (#Zoom#*20)r][!SetOption MeterDiscreteGPUUsedPercentual Y (#Zoom#*-10)r][!SetOption MeterDiscreteGPUUsedPercentual FontSize (#Zoom#*8)][!SetOption MeterScreenText Y (#Zoom#*19)r][!SetOption MeterGPUTemp MeasureName MeasureGPUNTemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!SetOption ImageVRAM Y (#Zoom#*-105)r][!SetOption MeterVRAMBarBack LineColor #FontColour4#,100][!SetOption MeterVRAMTotal Y (#Zoom#*60)r][!SetOption MeterVRAMTotal FontSize (#Zoom#*8)][!SetOption TextRAM&ROM Y (#Zoom#*49)r][!UpdateMeter ImageGPU][!UpdateMeter MeterDiscreteGPUBar][!UpdateMeter MeterDiscreteGPUUsedPercentual][!UpdateMeter MeterGPUTemp][!UpdateMeter ImageVRAM][!UpdateMeter MeterVRAMBarBack][!UpdateMeter MeterVRAMTotal][!UpdateMeter TextRAM&ROM][!Redraw] +IfMatch13=^,,.*$ +IfMatchAction13=[!HideMeter MeterGPUBarContainer][!HideMeter MeterGPUBarBack][!HideMeterGroup IntegratedGPUBar][!HideMeterGroup DiscreteGPUBar][!HideMeter MeterIntegratedGPUUsedPercentual][!HideMeter MeterDiscreteGPUUsedPercentual][!HideMeter MeterDiscreteGPUName][!SetOption ImageGPU X (#Zoom#*10)][!SetOption ImageGPU Y (#Zoom#*14)r][!SetOption ImageGPU W (0.25*#Zoom#*200)][!SetOption ImageGPU H (0.25*#Zoom#*200)][!SetOption MeterScreenText X (#Zoom#*88)][!SetOption MeterScreenText Y (#Zoom#*-48)r][!SetOption MeterScreen X (#Zoom#*190)][!SetOption MeterGPUTempText X (#Zoom#*90)][!SetOption MeterGPUTempText Y (#Zoom#*21)r][!SetOption MeterIntegratedGPUName Text "Unknown Device"][!SetOption TextRAM&ROM Y (#Zoom#*53)r][!UpdateMeter ImageGPU][!UpdateMeter MeterScreenText][!UpdateMeter MeterScreen][!UpdateMeter MeterGPUTempText][!UpdateMeter MeterGPUTemp][!UpdateMeter TextRAM&ROM][!Redraw] ;--------ȡ GPU LUID-------- @@ -2049,7 +2012,6 @@ Group=Win10 IfCondition=MeasureGPUAdapter0 <> 0 IfTrueAction=[!SetVariable "DiscreteGPUAdapter" "[MeasureGPUAdapter0]"] IfFalseAction=[!SetVariable "DiscreteGPUAdapter" "N/A"] -;IfMatchMode=1 [MeasureGPUAdapter1] Measure=Plugin @@ -4371,7 +4333,7 @@ String="N/A" DynamicVariables=1 Group=Win10 IfMatchMode=1 -;IfConditionMode=1 +IfConditionMode=1 IfMatch=#Integrated_3D_String_20# IfNotMatchAction=[!SetOption MeasureIntegratedGPU3D String "#Integrated_3D_String_20#"][!UpdateMeasure MeasureIntegratedGPU3D] @@ -6970,15 +6932,17 @@ UpdateDivider=-1 ;--------Կ¶-------- -[MeasureTempAlto] -Measure=String -String=#TempType# -UpdateDivider=-1 - -IfMatch=CPU -IfMatchAction=[!DisableMeasure MeasureGPUNTemp][!DisableMeasure MeasureGPUATemp][!EnableMeasure MeasureCPUTemp][!SetOption MeterGPUTemp MeasureName MeasureCPUTemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!UpdateMeter MeterGPUTemp][!Redraw] -IfMatch2=GPU -IfMatchAction2=[!DisableMeasure MeasureCPUTemp] +[MeasureCPUTemp] +Measure=Plugin +Plugin=CoreTemp +CoreTempType=MaxTemperature +IfCondition=(MeasureCPUTemp >= 80) || (MeasureCPUTemp = 0) +IfTrueAction=[!SetOption MeterGPUTemp FontColor #FontColour4#,255][!UpdateMeter MeterGPUTemp][!Redraw] +IfFalseAction=[!SetOption MeterGPUTemp FontColor #FontColour2#,255][!UpdateMeter MeterGPUTemp][!Redraw] +IfCondition2=MeasureCPUTemp = 0 +IfTrueAction2=[!EnableMeasure MeasureGPUATemp][!SetOption MeterGPUTemp MeasureName MeasureGPUATemp][!SetOption MeterGPUTemp Text "N/A"][!UpdateMeter MeterGPUTemp][!Redraw] +IfFalseAction2=[!DisableMeasure MeasureGPUATemp][!SetOption MeterGPUTemp MeasureName MeasureCPUTemp][!SetOption MeterGPUTemp Text "%1 [\x2103]"][!UpdateMeter MeterGPUTemp][!Redraw] +Disabled=1 [MeasureGPUNTemp] Measure=Plugin @@ -7006,18 +6970,6 @@ IfTrueAction2=[!SetOption MeterGPUTemp Text "N/A"][!UpdateMeter MeterGPUTemp][!R IfFalseAction2=[!SetOption MeterGPUTemp Text "%1 [\x2103]"][!UpdateMeter MeterGPUTemp][!Redraw] Disabled=1 -[MeasureCPUTemp] -Measure=Plugin -Plugin=CoreTemp -CoreTempType=MaxTemperature -IfCondition=(MeasureCPUTemp >= 80) || (MeasureCPUTemp = 0) -IfTrueAction=[!SetOption MeterGPUTemp FontColor #FontColour4#,255][!UpdateMeter MeterGPUTemp][!Redraw] -IfFalseAction=[!SetOption MeterGPUTemp FontColor #FontColour2#,255][!UpdateMeter MeterGPUTemp][!Redraw] -IfCondition2=MeasureCPUTemp = 0 -IfTrueAction2=[!SetOption MeterGPUTemp Text "N/A"][!UpdateMeter MeterGPUTemp][!Redraw] -IfFalseAction2=[!SetOption MeterGPUTemp Text "%1 [\x2103]"][!UpdateMeter MeterGPUTemp][!Redraw] -Disabled=1 - [MeterGPUTempText] Meter=Shape Shape=Ellipse 128,384,128 | Fill Color #FontColour#,255 | StrokeWidth 0 @@ -7026,7 +6978,7 @@ Shape3=Ellipse 128,384,80 Shape4=Rectangle 80,48,96,416,48 Shape5=Ellipse 128,384,64 Shape6=Rectangle 96,192,64,256,32 -Shape7=Combine Shape1 | Union Shape2 | Exclude Shape3 | Exclude Shape4 | Union Shape5 | Union Shape6 | Scale (13/512*#Zoom#),(13/512*#Zoom#),0,0 | Offset 78,26 | TransformOrder Offset,Scale +Shape7=Combine Shape | Union Shape2 | Exclude Shape3 | Exclude Shape4 | Union Shape5 | Union Shape6 | Scale (13/512*#Zoom#),(13/512*#Zoom#),0,0 | Offset 78,26 | TransformOrder Offset,Scale X=(#Zoom#*130) Y=(#Zoom#*1)r W=(#Zoom#*15) @@ -7034,12 +6986,13 @@ H=(#Zoom#*15) UpdateDivider=-1 SolidColor=#FontColour#,1 AntiAlias=1 -ToolTipText="¶" +ToolTipText="GPU¶" [MeterGPUTemp] Meter=String MeterStyle=MeterRightStringParent Text="Nun" +FontColor=#FontColour4#,255 ;--------Կ豸Ϣ-------- @@ -7208,7 +7161,7 @@ Shape12=Path PathRI | Offset 0,5 Shape13=Path PathAO | Offset 0,5 Shape14=Path PathAI | Offset 0,5 Shape15=Path PathM | Offset 0,5 -Shape16=Combine Shape1 | Union Shape2 | Union Shape3 | Union Shape4 | Union Shape5 | Union Shape6 | Union Shape7 | Union Shape8 | Union Shape9 | Exclude Shape10 | Exclude Shape11 | Union Shape12 | Exclude Shape13 | Union Shape14 | Exclude Shape15 | Scale (33/512*#Zoom#),(28/512*#Zoom#),0,0 +Shape16=Combine Shape | Union Shape2 | Union Shape3 | Union Shape4 | Union Shape5 | Union Shape6 | Union Shape7 | Union Shape8 | Union Shape9 | Exclude Shape10 | Exclude Shape11 | Union Shape12 | Exclude Shape13 | Union Shape14 | Exclude Shape15 | Scale (33/512*#Zoom#),(28/512*#Zoom#),0,0 Path1=48,416 | LineTo 464,416 | ArcTo 512,368,48,48,0,1,0 | LineTo 512,144 | ArcTo 464,96,48,48,0,1,0 | LineTo 48,96 | ArcTo 0,144,48,48,0,1,0 | LineTo 0,368 | ArcTo 48,416,48,48,0,1,0 | ClosePath 1 Path2=106,512 | LineTo 118,512 | ArcTo 124,506,6,6,0,1,0 | LineTo 124,488 | LineTo 130,488 | ArcTo 136,482,6,6,0,1,0 | LineTo 136,440 | LineTo 88,440 | LineTo 88,482 | ArcTo 94,488,6,6,0,1,0 | LineTo 100,488 | LineTo 100,506 | ArcTo 106,512,6,6,0,1,0 | ClosePath 1 Path3=376,30 | LineTo 376,72 | LineTo 424,72 | LineTo 424,30 | ArcTo 418,24,6,6,0,1,0 | LineTo 412,24 | LineTo 412,6 | ArcTo 406,0,6,6,0,1,0 | LineTo 394,0 | ArcTo 388,6,6,6,0,1,0 | LineTo 388,24 | LineTo 382,24 | ArcTo 376,30,6,6,0,1,0 | ClosePath 1 @@ -7226,10 +7179,31 @@ UpdateDivider=-1 AntiAlias=1 Group=Win10 +[MeasureGPUDriveKey1] +Measure=Plugin +Plugin=DeviceInfo +Class=Display +DeviceDesc=1 +Type=DriveKey +UpdateDivider=-1 +OnUpdateAction=[!SetOption MeasureVRAMTotalSource RegKey "SYSTEM\CurrentControlSet\Control\Class\[&[#CURRENTSECTION]]"][!UpdateMeasure MeasureVRAMTotalSource] +DynamicVariables=1 +Disabled=1 + +[MeasureGPUDriveKey2] +Measure=Plugin +Plugin=DeviceInfo +Class=Display +DeviceDesc=2 +Type=DriveKey +UpdateDivider=-1 +OnUpdateAction=[!SetOption MeasureVRAMTotalSource RegKey "SYSTEM\CurrentControlSet\Control\Class\[&[#CURRENTSECTION]]"][!UpdateMeasure MeasureVRAMTotalSource] +DynamicVariables=1 +Disabled=1 + [MeasureVRAMTotalSource] Measure=Registry RegHKey=HKEY_LOCAL_MACHINE -RegKey=SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\000#DiscreteGPUVRAM# RegValue=HardwareInformation.qwMemorySize UpdateDivider=-1 DynamicVariables=1 @@ -7364,7 +7338,7 @@ Shape2=Rectangle 160,64,64,128 Shape3=Rectangle 288,64,64,128 Shape4=Rectangle 416,64,64,128 Shape5=Rectangle 0,256,640,32 -Shape6=Combine Shape1 | Exclude Shape2 | Exclude Shape3 | Exclude Shape4 | Exclude Shape5 | Scale (20/384*#Zoom#),(20/384*#Zoom#),0,0 +Shape6=Combine Shape | Exclude Shape2 | Exclude Shape3 | Exclude Shape4 | Exclude Shape5 | Scale (20/384*#Zoom#),(20/384*#Zoom#),0,0 Path1=0,384 | LineTo 0,157 | ArcTo 0,67,48,*,*,1 | LineTo 0,32 | ArcTo 32,0,32 | LineTo 608,0 | ArcTo 640,32,32 | LineTo 640,67 | ArcTo 640,157,48,*,*,1 | LineTo 640,384 | LineTo 576,384 | LineTo 576,357 | ArcTo 544,357,*,*,*,1 | LineTo 544,384 | LineTo 416,384 | LineTo 416,357 | ArcTo 384,357,*,*,*,1 | LineTo 384,384 | LineTo 256,384 | LineTo 256,357 | ArcTo 224,357,*,*,*,1 | LineTo 224,384 | LineTo 96,384 | LineTo 96,357 | ArcTo 64,357,*,*,*,1 | LineTo 64,384 | LineTo 0,384 | ClosePath 1 X=(#Zoom#*34) Y=(#Zoom#*40)r @@ -7633,7 +7607,7 @@ Shape=Path Path1 | Fill Color #FontColour#,255 | StrokeWidth 0 Shape2=Path Path2 Shape3=Path Path3 Shape4=Path Path4 -Shape5=Combine Shape1 | XOR Shape2 | XOR Shape3 | XOR Shape4 | Scale (35/600*#Zoom#),(35/600*#Zoom#),0,0 +Shape5=Combine Shape | XOR Shape2 | XOR Shape3 | XOR Shape4 | Scale (35/600*#Zoom#),(35/600*#Zoom#),0,0 Path1=576,304 | LineTo 576,400 | CurveTo 528,448,576,426.51,554.51,448 | LineTo 48,448 | CurveTo 0,400,21.49,448,0,426.51 | LineTo 0,304 | CurveTo 48,256,0,277.49,21.49,256 | LineTo 528,256 | CurveTo 576,304,554.51,256,576,277.49 | ClosePath 1 Path2=528,224 | ArcTo 558.777,230.165,79.557,79.557,0,0,0 | LineTo 462.25,85.374 | ArcTo 422.311,64,48.003,48.003,0,1,0 | LineTo 153.689,64 | ArcTo 113.751,85.374,48,48,0,1,0 | LineTo 17.223,230.165 | ArcTo 48,224,79.557,79.557,0,0,0 | LineTo 528,224 | ClosePath 1 Path3=480,320 | CurveTo 448,352,462.327,320,448,334.327 | CurveTo 480,384,448,369.673,462.327,384 | CurveTo 512,352,497.673,384,512,369.673 | CurveTo 480,320,512,334.327,497.673,320 | ClosePath 1 @@ -7647,15 +7621,20 @@ AntiAlias=1 ;--------Ӳ̸Ϣ-------- +[MeasureCType] +Measure=FreeDiskSpace +Drive=C: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterCBar"] +IfFalseAction=[!DisableMeasure MeasureCTotal][!DisableMeasure MeasureCUsed][!DisableMeasure MeasureCFree] + [MeasureCTotal] Measure=FreeDiskSpace Drive=C: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterCBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureCUsed][!DisableMeasure MeasureCFree][] Substitute="k":"K" [MeasureCUsed] @@ -7670,15 +7649,20 @@ Drive=C: UpdateDivider=60 Substitute="k":"K" +[MeasureDType] +Measure=FreeDiskSpace +Drive=D: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterDBar"] +IfFalseAction=[!DisableMeasure MeasureDTotal][!DisableMeasure MeasureDUsed][!DisableMeasure MeasureDFree] + [MeasureDTotal] Measure=FreeDiskSpace Drive=D: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterDBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureDUsed][!DisableMeasure MeasureDFree] [MeasureDUsed] Measure=FreeDiskSpace @@ -7691,15 +7675,20 @@ Measure=FreeDiskSpace Drive=D: UpdateDivider=60 +[MeasureEType] +Measure=FreeDiskSpace +Drive=E: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterEBar"] +IfFalseAction=[!DisableMeasure MeasureETotal][!DisableMeasure MeasureEUsed][!DisableMeasure MeasureEFree] + [MeasureETotal] Measure=FreeDiskSpace Drive=E: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterEBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureEUsed][!DisableMeasure MeasureEFree] [MeasureEUsed] Measure=FreeDiskSpace @@ -7712,15 +7701,20 @@ Measure=FreeDiskSpace Drive=E: UpdateDivider=60 +[MeasureFType] +Measure=FreeDiskSpace +Drive=F: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterFBar"] +IfFalseAction=[!DisableMeasure MeasureFTotal][!DisableMeasure MeasureFUsed][!DisableMeasure MeasureFFree] + [MeasureFTotal] Measure=FreeDiskSpace Drive=F: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterFBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureFUsed][!DisableMeasure MeasureFFree] [MeasureFUsed] Measure=FreeDiskSpace @@ -7733,15 +7727,20 @@ Measure=FreeDiskSpace Drive=F: UpdateDivider=60 +[MeasureGType] +Measure=FreeDiskSpace +Drive=G: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterGBar"] +IfFalseAction=[!DisableMeasure MeasureGTotal][!DisableMeasure MeasureGUsed][!DisableMeasure MeasureGFree] + [MeasureGTotal] Measure=FreeDiskSpace Drive=G: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterGBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureGUsed][!DisableMeasure MeasureGFree] [MeasureGUsed] Measure=FreeDiskSpace @@ -7754,15 +7753,20 @@ Measure=FreeDiskSpace Drive=G: UpdateDivider=60 +[MeasureHType] +Measure=FreeDiskSpace +Drive=H: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterHBar"] +IfFalseAction=[!DisableMeasure MeasureHTotal][!DisableMeasure MeasureHUsed][!DisableMeasure MeasureHFree] + [MeasureHTotal] Measure=FreeDiskSpace Drive=H: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterHBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureHUsed][!DisableMeasure MeasureHFree] [MeasureHUsed] Measure=FreeDiskSpace @@ -7775,15 +7779,20 @@ Measure=FreeDiskSpace Drive=H: UpdateDivider=60 +[MeasureIType] +Measure=FreeDiskSpace +Drive=I: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterIBar"] +IfFalseAction=[!DisableMeasure MeasureITotal][!DisableMeasure MeasureIUsed][!DisableMeasure MeasureIFree] + [MeasureITotal] Measure=FreeDiskSpace Drive=I: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterIBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureIUsed][!DisableMeasure MeasureIFree] [MeasureIUsed] Measure=FreeDiskSpace @@ -7796,15 +7805,20 @@ Measure=FreeDiskSpace Drive=I: UpdateDivider=60 +[MeasureJType] +Measure=FreeDiskSpace +Drive=J: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterJBar"] +IfFalseAction=[!DisableMeasure MeasureJTotal][!DisableMeasure MeasureJUsed][!DisableMeasure MeasureJFree] + [MeasureJTotal] Measure=FreeDiskSpace Drive=J: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterJBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureJUsed][!DisableMeasure MeasureJFree] [MeasureJUsed] Measure=FreeDiskSpace @@ -7817,15 +7831,20 @@ Measure=FreeDiskSpace Drive=J: UpdateDivider=60 +[MeasureKType] +Measure=FreeDiskSpace +Drive=K: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterKBar"] +IfFalseAction=[!DisableMeasure MeasureKTotal][!DisableMeasure MeasureKUsed][!DisableMeasure MeasureKFree] + [MeasureKTotal] Measure=FreeDiskSpace Drive=K: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterKBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureKUsed][!DisableMeasure MeasureKFree] [MeasureKUsed] Measure=FreeDiskSpace @@ -7838,15 +7857,20 @@ Measure=FreeDiskSpace Drive=K: UpdateDivider=60 +[MeasureLType] +Measure=FreeDiskSpace +Drive=L: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterLBar"] +IfFalseAction=[!DisableMeasure MeasureLTotal][!DisableMeasure MeasureLUsed][!DisableMeasure MeasureLFree] + [MeasureLTotal] Measure=FreeDiskSpace Drive=L: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterLBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureLUsed][!DisableMeasure MeasureLFree] [MeasureLUsed] Measure=FreeDiskSpace @@ -7859,15 +7883,20 @@ Measure=FreeDiskSpace Drive=L: UpdateDivider=60 +[MeasureMType] +Measure=FreeDiskSpace +Drive=M: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterMBar"] +IfFalseAction=[!DisableMeasure MeasureMTotal][!DisableMeasure MeasureMUsed][!DisableMeasure MeasureMFree] + [MeasureMTotal] Measure=FreeDiskSpace Drive=M: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterMBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureMUsed][!DisableMeasure MeasureMFree] [MeasureMUsed] Measure=FreeDiskSpace @@ -7880,15 +7909,20 @@ Measure=FreeDiskSpace Drive=M: UpdateDivider=60 +[MeasureNType] +Measure=FreeDiskSpace +Drive=N: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterNBar"] +IfFalseAction=[!DisableMeasure MeasureNTotal][!DisableMeasure MeasureNUsed][!DisableMeasure MeasureNFree] + [MeasureNTotal] Measure=FreeDiskSpace Drive=N: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterNBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureNUsed][!DisableMeasure MeasureNFree] [MeasureNUsed] Measure=FreeDiskSpace @@ -7901,15 +7935,20 @@ Measure=FreeDiskSpace Drive=N: UpdateDivider=60 +[MeasureOType] +Measure=FreeDiskSpace +Drive=O: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterOBar"] +IfFalseAction=[!DisableMeasure MeasureOTotal][!DisableMeasure MeasureOUsed][!DisableMeasure MeasureOFree] + [MeasureOTotal] Measure=FreeDiskSpace Drive=O: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterOBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureOUsed][!DisableMeasure MeasureOFree] [MeasureOUsed] Measure=FreeDiskSpace @@ -7922,15 +7961,20 @@ Measure=FreeDiskSpace Drive=O: UpdateDivider=60 +[MeasurePType] +Measure=FreeDiskSpace +Drive=P: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterPBar"] +IfFalseAction=[!DisableMeasure MeasurePTotal][!DisableMeasure MeasurePUsed][!DisableMeasure MeasurePFree] + [MeasurePTotal] Measure=FreeDiskSpace Drive=P: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterPBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasurePUsed][!DisableMeasure MeasurePFree] [MeasurePUsed] Measure=FreeDiskSpace @@ -7943,15 +7987,20 @@ Measure=FreeDiskSpace Drive=P: UpdateDivider=60 +[MeasureQType] +Measure=FreeDiskSpace +Drive=Q: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterQBar"] +IfFalseAction=[!DisableMeasure MeasureQTotal][!DisableMeasure MeasureQUsed][!DisableMeasure MeasureQFree] + [MeasureQTotal] Measure=FreeDiskSpace Drive=Q: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterQBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureQUsed][!DisableMeasure MeasureQFree] [MeasureQUsed] Measure=FreeDiskSpace @@ -7964,15 +8013,20 @@ Measure=FreeDiskSpace Drive=Q: UpdateDivider=60 +[MeasureRType] +Measure=FreeDiskSpace +Drive=R: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterRBar"] +IfFalseAction=[!DisableMeasure MeasureRTotal][!DisableMeasure MeasureRUsed][!DisableMeasure MeasureRFree] + [MeasureRTotal] Measure=FreeDiskSpace Drive=R: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterRBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureRUsed][!DisableMeasure MeasureRFree] [MeasureRUsed] Measure=FreeDiskSpace @@ -7985,15 +8039,20 @@ Measure=FreeDiskSpace Drive=R: UpdateDivider=60 +[MeasureSType] +Measure=FreeDiskSpace +Drive=S: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterSBar"] +IfFalseAction=[!DisableMeasure MeasureSTotal][!DisableMeasure MeasureSUsed][!DisableMeasure MeasureSFree] + [MeasureSTotal] Measure=FreeDiskSpace Drive=S: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterSBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureSUsed][!DisableMeasure MeasureSFree] [MeasureSUsed] Measure=FreeDiskSpace @@ -8006,15 +8065,20 @@ Measure=FreeDiskSpace Drive=S: UpdateDivider=60 +[MeasureTType] +Measure=FreeDiskSpace +Drive=T: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterTBar"] +IfFalseAction=[!DisableMeasure MeasureTTotal][!DisableMeasure MeasureTUsed][!DisableMeasure MeasureTFree] + [MeasureTTotal] Measure=FreeDiskSpace Drive=T: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterTBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureTUsed][!DisableMeasure MeasureTFree] [MeasureTUsed] Measure=FreeDiskSpace @@ -8027,15 +8091,20 @@ Measure=FreeDiskSpace Drive=T: UpdateDivider=60 +[MeasureUType] +Measure=FreeDiskSpace +Drive=U: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterUBar"] +IfFalseAction=[!DisableMeasure MeasureUTotal][!DisableMeasure MeasureUUsed][!DisableMeasure MeasureUFree] + [MeasureUTotal] Measure=FreeDiskSpace Drive=U: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterUBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureUUsed][!DisableMeasure MeasureUFree] [MeasureUUsed] Measure=FreeDiskSpace @@ -8048,15 +8117,20 @@ Measure=FreeDiskSpace Drive=U: UpdateDivider=60 +[MeasureVType] +Measure=FreeDiskSpace +Drive=V: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterVBar"] +IfFalseAction=[!DisableMeasure MeasureVTotal][!DisableMeasure MeasureVUsed][!DisableMeasure MeasureVFree] + [MeasureVTotal] Measure=FreeDiskSpace Drive=V: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterVBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureVUsed][!DisableMeasure MeasureVFree] [MeasureVUsed] Measure=FreeDiskSpace @@ -8069,15 +8143,20 @@ Measure=FreeDiskSpace Drive=V: UpdateDivider=60 +[MeasureWType] +Measure=FreeDiskSpace +Drive=W: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterWBar"] +IfFalseAction=[!DisableMeasure MeasureWTotal][!DisableMeasure MeasureWUsed][!DisableMeasure MeasureWFree] + [MeasureWTotal] Measure=FreeDiskSpace Drive=W: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterWBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureWUsed][!DisableMeasure MeasureWFree] [MeasureWUsed] Measure=FreeDiskSpace @@ -8090,15 +8169,20 @@ Measure=FreeDiskSpace Drive=W: UpdateDivider=60 +[MeasureXType] +Measure=FreeDiskSpace +Drive=X: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterXBar"] +IfFalseAction=[!DisableMeasure MeasureXTotal][!DisableMeasure MeasureXUsed][!DisableMeasure MeasureXFree] + [MeasureXTotal] Measure=FreeDiskSpace Drive=X: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterXBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureXUsed][!DisableMeasure MeasureXFree] [MeasureXUsed] Measure=FreeDiskSpace @@ -8111,15 +8195,20 @@ Measure=FreeDiskSpace Drive=X: UpdateDivider=60 +[MeasureYType] +Measure=FreeDiskSpace +Drive=Y: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterYBar"] +IfFalseAction=[!DisableMeasure MeasureYTotal][!DisableMeasure MeasureYUsed][!DisableMeasure MeasureYFree] + [MeasureYTotal] Measure=FreeDiskSpace Drive=Y: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterYBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureYUsed][!DisableMeasure MeasureYFree] [MeasureYUsed] Measure=FreeDiskSpace @@ -8132,15 +8221,20 @@ Measure=FreeDiskSpace Drive=Y: UpdateDivider=60 +[MeasureZType] +Measure=FreeDiskSpace +Drive=Z: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterZBar"] +IfFalseAction=[!DisableMeasure MeasureZTotal][!DisableMeasure MeasureZUsed][!DisableMeasure MeasureZFree] + [MeasureZTotal] Measure=FreeDiskSpace Drive=Z: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterZBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureZUsed][!DisableMeasure MeasureZFree] [MeasureZUsed] Measure=FreeDiskSpace @@ -8153,15 +8247,20 @@ Measure=FreeDiskSpace Drive=Z: UpdateDivider=60 +[MeasureAType] +Measure=FreeDiskSpace +Drive=A: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterABar"] +IfFalseAction=[!DisableMeasure MeasureATotal][!DisableMeasure MeasureAUsed][!DisableMeasure MeasureAFree] + [MeasureATotal] Measure=FreeDiskSpace Drive=A: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterABar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureAUsed][!DisableMeasure MeasureAFree] [MeasureAUsed] Measure=FreeDiskSpace @@ -8174,15 +8273,20 @@ Measure=FreeDiskSpace Drive=A: UpdateDivider=60 +[MeasureBType] +Measure=FreeDiskSpace +Drive=B: +Type=1 +UpdateDivider=-1 +IfCondition=#CurrentSection# = 4 +IfTrueAction=[!ShowMeter "MeterBBar"] +IfFalseAction=[!DisableMeasure MeasureBTotal][!DisableMeasure MeasureBUsed][!DisableMeasure MeasureBFree] + [MeasureBTotal] Measure=FreeDiskSpace Drive=B: Total=1 UpdateDivider=-1 -IfAboveValue=0 -IfAboveAction=[!ShowMeter "MeterBBar"] -IfEqualValue=0 -IfEqualAction=[!DisableMeasure MeasureBUsed][!DisableMeasure MeasureBFree] [MeasureBUsed] Measure=FreeDiskSpace @@ -8829,7 +8933,7 @@ Shape2=Rectangle 160,288,192,128,56 Shape3=Path Path2 | Rotate 180 Shape4=Ellipse 368,464,20 Shape5=Ellipse 432,464,20 -Shape6=Combine Shape1 | Exclude Shape2 | Union Shape3 | Exclude Shape4 | Exclude Shape5 | Scale (13/512*#Zoom#),(13/512*#Zoom#),0,0 +Shape6=Combine Shape | Exclude Shape2 | Union Shape3 | Exclude Shape4 | Exclude Shape5 | Scale (13/512*#Zoom#),(13/512*#Zoom#),0,0 Path1=171,352 | LineTo 341,352 | LineTo 292,401 | ArcTo 220,401,52 | LineTo 171,352 | ClosePath 1 Path2=216,0 | LineTo 296,0 | ArcTo 320,24,24 | LineTo 320,192 | LineTo 408,192 | ArcTo 422,226,21 | LineTo 270,378 | ArcTo 242,378,21 | LineTo 90,226 | ArcTo 104,192,21 | LineTo 192,192 | LineTo 192,24 | ArcTo 216,0,24 | ClosePath 1 X=(#Zoom#*12) @@ -8869,7 +8973,7 @@ Shape2=Path Path1 Shape3=Path Path2 Shape4=Ellipse 368,464,20 Shape5=Ellipse 432,464,20 -Shape6=Combine Shape1 | Exclude Shape2 | Union Shape3 | Exclude Shape4 | Exclude Shape5 | Scale (13/512*#Zoom#),(13/512*#Zoom#),0,0 +Shape6=Combine Shape | Exclude Shape2 | Union Shape3 | Exclude Shape4 | Exclude Shape5 | Scale (13/512*#Zoom#),(13/512*#Zoom#),0,0 Path1=171,352 | LineTo 341,352 | LineTo 292,401 | ArcTo 220,401,52 | LineTo 171,352 | ClosePath 1 Path2=216,0 | LineTo 296,0 | ArcTo 320,24,24 | LineTo 320,192 | LineTo 408,192 | ArcTo 422,226,21 | LineTo 270,378 | ArcTo 242,378,21 | LineTo 90,226 | ArcTo 104,192,21 | LineTo 192,192 | LineTo 192,24 | ArcTo 216,0,24 | ClosePath 1 X=(#Zoom#*112) @@ -8938,16 +9042,3 @@ StringAlign=Right NumOfDecimals=0 AutoScale=1 Y=0r - - -;==================[ê]================== - -[MeterLocation2] -Meter=Image -X=0 -Y=(#Zoom#*754) -W=1 -H=(#Zoom#*1) -UpdateDivider=-1 -SolidColor=#FontColour#,0 -AntiAlias=1 diff --git a/Skin/Drive Logo/AMD/AMD.ini b/Skin/Drive Logo/AMD/AMD.ini deleted file mode 100644 index 5fbd3b8..0000000 Binary files a/Skin/Drive Logo/AMD/AMD.ini and /dev/null differ diff --git a/Skin/Drive Logo/Intel/Intel.ini b/Skin/Drive Logo/Intel/Intel.ini deleted file mode 100644 index 79895ac..0000000 Binary files a/Skin/Drive Logo/Intel/Intel.ini and /dev/null differ diff --git a/Skin/Drive Logo/NVIDIA/NVIDIA.ini b/Skin/Drive Logo/NVIDIA/NVIDIA.ini deleted file mode 100644 index 61ddf51..0000000 Binary files a/Skin/Drive Logo/NVIDIA/NVIDIA.ini and /dev/null differ diff --git a/Source/CPUTemp/Build/VS/Rainmeter.Cpp.Default.props b/Source/CPUTemp/Build/VS/Rainmeter.Cpp.Default.props new file mode 100644 index 0000000..224aa07 --- /dev/null +++ b/Source/CPUTemp/Build/VS/Rainmeter.Cpp.Default.props @@ -0,0 +1,31 @@ + + + + + $(SolutionDir)..\WinDDK\7600.16385.1\ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + + Unicode + v142 + + diff --git a/Source/CPUTemp/Build/VS/Rainmeter.Cpp.props b/Source/CPUTemp/Build/VS/Rainmeter.Cpp.props new file mode 100644 index 0000000..b3fe9bf --- /dev/null +++ b/Source/CPUTemp/Build/VS/Rainmeter.Cpp.props @@ -0,0 +1,130 @@ + + + + + true + true + + + + true + + + + + $(SolutionDir)x32-$(Configuration)\ + $(SolutionDir)x64-$(Configuration)\ + + $(RmOutDirRoot) + $(OutDir)Obj\$(ProjectName)\ + + + + + $(IntDir) + + + + + + false + + + Microsoft.VisualStudio.TestTools.CppUnitTestFramework.dll + Microsoft.VisualStudio.TestTools.CppUnitTestFramework.x64.dll + + + + + + + $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories) + + + $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) + + + + + + %(AdditionalOptions) + + + 4996;%(DisableSpecificWarnings) + + false + + true + false + + + + WIN32;_WINDOWS;WINVER=0x0601;_WIN32_WINNT=0x0601;_WIN32_IE=0x0601;PSAPI_VERSION=1;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions) + MultiThreaded + Level3 + + + Windows + $(IntDir)$(TargetName).lib + $(IntDir)$(TargetName).pdb + false + + + 0x0409 + + + + + + Disabled + _DEBUG;%(PreprocessorDefinitions) + EnableFastChecks + + + DebugFastLink + + + _DEBUG;%(PreprocessorDefinitions) + + + + + + true + MaxSpeed + NDEBUG;%(PreprocessorDefinitions) + true + true + /Gw %(AdditionalOptions) + + + true + UseLinkTimeCodeGeneration + .rdata=.text + true + true + + + NDEBUG;%(PreprocessorDefinitions) + + + + + + StreamingSIMDExtensions + + + MachineX86 + + + + + + _WIN64;%(PreprocessorDefinitions) + + + MachineX64 + + + diff --git a/Source/CPUTemp/Build/VS/RainmeterPlugin.Cpp.props b/Source/CPUTemp/Build/VS/RainmeterPlugin.Cpp.props new file mode 100644 index 0000000..f46967e --- /dev/null +++ b/Source/CPUTemp/Build/VS/RainmeterPlugin.Cpp.props @@ -0,0 +1,18 @@ + + + + false + $(OutDir)Plugins\ + + + + + $(SolutionDir)Plugins\API\x32\Rainmeter.lib;%(AdditionalDependencies) + + + + + $(SolutionDir)Plugins\API\x64\Rainmeter.lib;%(AdditionalDependencies) + + + \ No newline at end of file diff --git a/Source/CPUTemp/CPUTemp.sln b/Source/CPUTemp/CPUTemp.sln new file mode 100644 index 0000000..087cce6 --- /dev/null +++ b/Source/CPUTemp/CPUTemp.sln @@ -0,0 +1,65 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29201.188 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginCPUTemp", "Plugins\PluginCPUTemp\PluginCPUTemp.vcxproj", "{F32FA418-8DF4-4E94-B92B-EBD502F5DC07}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "driver", "driver\driver.vcxproj", "{FB64DFCD-5B93-4679-9BF9-340BC48164DA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Debug|ARM64 = Debug|ARM64 + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|ARM = Release|ARM + Release|ARM64 = Release|ARM64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|ARM.ActiveCfg = Debug|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|ARM64.ActiveCfg = Debug|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Win32.ActiveCfg = Debug|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Win32.Build.0 = Debug|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|x64.ActiveCfg = Debug|x64 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|x64.Build.0 = Debug|x64 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|ARM.ActiveCfg = Release|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|ARM64.ActiveCfg = Release|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Win32.ActiveCfg = Release|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Win32.Build.0 = Release|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|x64.ActiveCfg = Release|x64 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|x64.Build.0 = Release|x64 + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Debug|ARM.ActiveCfg = Debug|ARM + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Debug|ARM.Build.0 = Debug|ARM + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Debug|ARM.Deploy.0 = Debug|ARM + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Debug|ARM64.Build.0 = Debug|ARM64 + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Debug|Win32.ActiveCfg = Debug|Win32 + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Debug|Win32.Build.0 = Debug|Win32 + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Debug|Win32.Deploy.0 = Debug|Win32 + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Debug|x64.ActiveCfg = Debug|x64 + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Debug|x64.Build.0 = Debug|x64 + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Debug|x64.Deploy.0 = Debug|x64 + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Release|ARM.ActiveCfg = Release|ARM + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Release|ARM.Build.0 = Release|ARM + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Release|ARM.Deploy.0 = Release|ARM + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Release|ARM64.ActiveCfg = Release|ARM64 + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Release|ARM64.Build.0 = Release|ARM64 + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Release|ARM64.Deploy.0 = Release|ARM64 + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Release|Win32.ActiveCfg = Release|Win32 + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Release|Win32.Build.0 = Release|Win32 + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Release|Win32.Deploy.0 = Release|Win32 + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Release|x64.ActiveCfg = Release|x64 + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Release|x64.Build.0 = Release|x64 + {FB64DFCD-5B93-4679-9BF9-340BC48164DA}.Release|x64.Deploy.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {1638D66B-1685-4AEB-A57B-B5877B2899F1} + EndGlobalSection +EndGlobal diff --git a/Source/CPUTemp/Driver/OlsIoctl.h b/Source/CPUTemp/Driver/OlsIoctl.h new file mode 100644 index 0000000..de26d5f --- /dev/null +++ b/Source/CPUTemp/Driver/OlsIoctl.h @@ -0,0 +1,169 @@ +//----------------------------------------------------------------------------- +// Author : hiyohiyo +// Mail : hiyohiyo@crystalmark.info +// Web : http://openlibsys.org/ +// License : The modified BSD license +// +// Copyright 2007-2008 OpenLibSys.org. All rights reserved. +//----------------------------------------------------------------------------- + +#pragma once + +//----------------------------------------------------------------------------- +// +// The Device type codes form 32768 to 65535 are for customer use. +// +//----------------------------------------------------------------------------- + +#define OLS_TYPE 40000 + +//----------------------------------------------------------------------------- +// +// Version Information +// +//----------------------------------------------------------------------------- + + +#define OLS_DRIVER_MAJOR_VERSION 1 +#define OLS_DRIVER_MINOR_VERSION 2 +#define OLS_DRIVER_REVISION 0 +#define OLS_DRIVER_RELESE 5 + +#define OLS_DRIVER_VERSION \ + ((OLS_DRIVER_MAJOR_VERSION << 24) | (OLS_DRIVER_MINOR_VERSION << 16) \ + | (OLS_DRIVER_REVISION << 8) | OLS_DRIVER_RELESE) + +//----------------------------------------------------------------------------- +// +// The IOCTL function codes from 0x800 to 0xFFF are for customer use. +// +//----------------------------------------------------------------------------- +#define IOCTL_OLS_GET_DRIVER_VERSION \ + CTL_CODE(OLS_TYPE, 0x800, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_OLS_GET_REFCOUNT \ + CTL_CODE(OLS_TYPE, 0x801, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_OLS_READ_MSR \ + CTL_CODE(OLS_TYPE, 0x821, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_OLS_WRITE_MSR \ + CTL_CODE(OLS_TYPE, 0x822, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_OLS_READ_PMC \ + CTL_CODE(OLS_TYPE, 0x823, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_OLS_HALT \ + CTL_CODE(OLS_TYPE, 0x824, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_OLS_READ_IO_PORT \ + CTL_CODE(OLS_TYPE, 0x831, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_OLS_WRITE_IO_PORT \ + CTL_CODE(OLS_TYPE, 0x832, METHOD_BUFFERED, FILE_WRITE_ACCESS) + +#define IOCTL_OLS_READ_IO_PORT_BYTE \ + CTL_CODE(OLS_TYPE, 0x833, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_OLS_READ_IO_PORT_WORD \ + CTL_CODE(OLS_TYPE, 0x834, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_OLS_READ_IO_PORT_DWORD \ + CTL_CODE(OLS_TYPE, 0x835, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_OLS_WRITE_IO_PORT_BYTE \ + CTL_CODE(OLS_TYPE, 0x836, METHOD_BUFFERED, FILE_WRITE_ACCESS) + +#define IOCTL_OLS_WRITE_IO_PORT_WORD \ + CTL_CODE(OLS_TYPE, 0x837, METHOD_BUFFERED, FILE_WRITE_ACCESS) + +#define IOCTL_OLS_WRITE_IO_PORT_DWORD \ + CTL_CODE(OLS_TYPE, 0x838, METHOD_BUFFERED, FILE_WRITE_ACCESS) + +#define IOCTL_OLS_READ_MEMORY \ + CTL_CODE(OLS_TYPE, 0x841, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_OLS_WRITE_MEMORY \ + CTL_CODE(OLS_TYPE, 0x842, METHOD_BUFFERED, FILE_WRITE_ACCESS) + +#define IOCTL_OLS_READ_PCI_CONFIG \ + CTL_CODE(OLS_TYPE, 0x851, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_OLS_WRITE_PCI_CONFIG \ + CTL_CODE(OLS_TYPE, 0x852, METHOD_BUFFERED, FILE_WRITE_ACCESS) + +//----------------------------------------------------------------------------- +// +// PCI Error Code +// +//----------------------------------------------------------------------------- + +#define OLS_ERROR_PCI_BUS_NOT_EXIST (0xE0000001L) +#define OLS_ERROR_PCI_NO_DEVICE (0xE0000002L) +#define OLS_ERROR_PCI_WRITE_CONFIG (0xE0000003L) +#define OLS_ERROR_PCI_READ_CONFIG (0xE0000004L) + +//----------------------------------------------------------------------------- +// +// Support Macros +// +//----------------------------------------------------------------------------- + +// Bus Number, Device Number and Function Number to PCI Device Address +#define PciBusDevFunc(Bus, Dev, Func) ((Bus&0xFF)<<8) | ((Dev&0x1F)<<3) | (Func&7) +// PCI Device Address to Bus Number +#define PciGetBus(address) ((address>>8) & 0xFF) +// PCI Device Address to Device Number +#define PciGetDev(address) ((address>>3) & 0x1F) +// PCI Device Address to Function Number +#define PciGetFunc(address) (address&7) + +//----------------------------------------------------------------------------- +// +// Typedef Struct +// +//----------------------------------------------------------------------------- + +#pragma pack(push,4) + +typedef struct _OLS_WRITE_MSR_INPUT { + ULONG Register; + ULARGE_INTEGER Value; +} OLS_WRITE_MSR_INPUT; + +typedef struct _OLS_WRITE_IO_PORT_INPUT { + ULONG PortNumber; + union { + ULONG LongData; + USHORT ShortData; + UCHAR CharData; + }; +} OLS_WRITE_IO_PORT_INPUT; + +typedef struct _OLS_READ_PCI_CONFIG_INPUT { + ULONG PciAddress; + ULONG PciOffset; +} OLS_READ_PCI_CONFIG_INPUT; + +typedef struct _OLS_WRITE_PCI_CONFIG_INPUT { + ULONG PciAddress; + ULONG PciOffset; + UCHAR Data[1]; +} OLS_WRITE_PCI_CONFIG_INPUT; + +typedef LARGE_INTEGER PHYSICAL_ADDRESS; + +typedef struct _OLS_READ_MEMORY_INPUT { + PHYSICAL_ADDRESS Address; + ULONG UnitSize; + ULONG Count; +} OLS_READ_MEMORY_INPUT; + +typedef struct _OLS_WRITE_MEMORY_INPUT { + PHYSICAL_ADDRESS Address; + ULONG UnitSize; + ULONG Count; + UCHAR Data[1]; +} OLS_WRITE_MEMORY_INPUT; + +#pragma pack(pop) diff --git a/Source/CPUTemp/Driver/OpenLibSys.c b/Source/CPUTemp/Driver/OpenLibSys.c new file mode 100644 index 0000000..c62d067 --- /dev/null +++ b/Source/CPUTemp/Driver/OpenLibSys.c @@ -0,0 +1,715 @@ +//----------------------------------------------------------------------------- +// Author : hiyohiyo +// Mail : hiyohiyo@crystalmark.info +// Web : http://openlibsys.org/ +// License : The modified BSD license +// +// Copyright 2007-2008 OpenLibSys.org. All rights reserved. +//----------------------------------------------------------------------------- + +#include "OpenLibSys.h" + +//----------------------------------------------------------------------------- +// +// Global +// +//----------------------------------------------------------------------------- + +static ULONG refCount; + +//----------------------------------------------------------------------------- +// +// Classic NT driver +// DriverEntry / OlsDispatch / Unload +// +//----------------------------------------------------------------------------- + + +/* +Return Value: +ֵ + STATUS_SUCCESS if the driver initialized correctly,otherwise an erroror indicating the reason for failure. + ʼȷSTATUS_SUCCESS׳ԭ +*/ +NTSTATUS +DriverEntry( + IN PDRIVER_OBJECT DriverObject, + IN PUNICODE_STRING RegistryPath + ) +{ + NTSTATUS status; + UNICODE_STRING ntDeviceName; + UNICODE_STRING win32DeviceName; + PDEVICE_OBJECT deviceObject = NULL; + + /************************************************************************ + * :RtlInitUnicodeString + * :ʼUNICODE_STRINGַ + * б: + DestinationString:ҪʼUNICODE_STRINGַ + SourceString:ַ + * ֵ:VOID + *************************************************************************/ + RtlInitUnicodeString(&ntDeviceName, NT_DEVICE_NAME); + + status = IoCreateDevice( + DriverObject, // Our Driver Object(һָøú.ÿһDriverEntryһָ) + 0, // We don't use a device extension(ָΪ豸չĽṹĴС) + &ntDeviceName, // Device name((ѡIJ)ָһβİUnicodeַĻ,豸,ַһ豸·.WDM͹ǵ豸û) + OLS_TYPE, // Device type(ָһһϵͳFILE_DEVICE_XXX,豸) + FILE_DEVICE_SECURE_OPEN, // Device characteristics(ָһϵͳij,һ,ṩй豸Ϣ.ڿܵ豸Ϣ) + FALSE, // Not an exclusive device(ָ豸Ƕռ,ǶռĻΪTRUEǶռΪFALSE󲿷ֵΪFALSE) + &deviceObject ); // Returned ptr to Device Object(һָDEVICE_OBJECTṹָָ,һָָ,ָָDEVICE_OBJECTṹָ) + + if(!NT_SUCCESS(status)) + { + refCount = (ULONG)-1; + return status; + } + else + { + refCount = 0; + } + + // Initialize the driver object with this driver's entry points.(ڵʼ) + /* + IOһļĿ¼ʱ,һѴڵļ豸Ŀ¼Volumeʱ,ʹIRP. + ͨӦòCreateFile,ں˲: + IoCreateFile + IoCreateFileSpecifyDeviceObjectHint + ZwCreateFile + ZwOpenFile + IRPķ. + ɹӦòںյһļľ. + */ + DriverObject->MajorFunction[IRP_MJ_CREATE] = OlsDispatch; + DriverObject->MajorFunction[IRP_MJ_CLOSE] = OlsDispatch; + DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = OlsDispatch; + DriverObject->DriverUnload = Unload; + + // Initialize a Unicode String containing the Win32 name for our device.(Ϊǵ豸ʼWin32ƵUnicodeַ) + RtlInitUnicodeString(&win32DeviceName, DOS_DEVICE_NAME); + + // Create a symbolic link between our device name and the Win32 name(豸ƺWin32֮䴴һ) + status = IoCreateSymbolicLink(&win32DeviceName, &ntDeviceName); + + if (!NT_SUCCESS(status)) + { + // Delete everything that this routine has allocated. + IoDeleteDevice( deviceObject ); + } + + return status; +} + +/* +Routine Description(˵): + This routine is the dispatch handler for the driver. It is responsible for processing the IRPs. + ˺ĵȴIRP +Arguments(): + pDO - Pointer to device object. + pDO-ָ豸ָ롣 + pIrp - Pointer to the current IRP. + pIrp-ָǰIRPָ롣 +Return Value(ֵ): + STATUS_SUCCESS if the IRP was processed successfully, otherwise an erroror indicating the reason for failure. + IRPɹSTATUS_SUCCESS򷵻شԭ +*/ +NTSTATUS +OlsDispatch( + IN PDEVICE_OBJECT pDO, + IN PIRP pIrp + ) +{ + PIO_STACK_LOCATION pIrpStack; //IPRջ + NTSTATUS status; + //int index; + + // Initialize the irp info field.(ʼirpϢֶΡ) + // This is used to return the number of bytes transfered.(ڷشֽ) + pIrp->IoStatus.Information = 0; + pIrpStack = IoGetCurrentIrpStackLocation(pIrp); + + // Set default return status(ĬϷ״̬) + status = STATUS_NOT_IMPLEMENTED; + + // Dispatch based on major fcn code.(Ҫfcnĵȡ) + switch(pIrpStack->MajorFunction) + { + case IRP_MJ_CREATE: + if(refCount != (ULONG)-1) refCount++; + status = STATUS_SUCCESS; + break; + case IRP_MJ_CLOSE: + if(refCount != (ULONG)-1) refCount--; + status = STATUS_SUCCESS; + break; + + case IRP_MJ_DEVICE_CONTROL: + // Dispatch on IOCTL + switch(pIrpStack->Parameters.DeviceIoControl.IoControlCode) + { + case IOCTL_OLS_GET_DRIVER_VERSION: + *(PULONG)pIrp->AssociatedIrp.SystemBuffer = OLS_DRIVER_VERSION; + pIrp->IoStatus.Information = 4; + status = STATUS_SUCCESS; + break; + + case IOCTL_OLS_GET_REFCOUNT: + *(PULONG)pIrp->AssociatedIrp.SystemBuffer = refCount; + pIrp->IoStatus.Information = sizeof(refCount); + status = STATUS_SUCCESS; + break; + + case IOCTL_OLS_READ_MSR: + status = ReadMsr( + pIrp->AssociatedIrp.SystemBuffer, + pIrpStack->Parameters.DeviceIoControl.InputBufferLength, + pIrp->AssociatedIrp.SystemBuffer, + pIrpStack->Parameters.DeviceIoControl.OutputBufferLength, + (ULONG*)&pIrp->IoStatus.Information + ); + break; + case IOCTL_OLS_WRITE_MSR: + status = WriteMsr( + pIrp->AssociatedIrp.SystemBuffer, + pIrpStack->Parameters.DeviceIoControl.InputBufferLength, + pIrp->AssociatedIrp.SystemBuffer, + pIrpStack->Parameters.DeviceIoControl.OutputBufferLength, + (ULONG*)&pIrp->IoStatus.Information + ); + break; + case IOCTL_OLS_READ_PMC: + status = ReadPmc( + pIrp->AssociatedIrp.SystemBuffer, + pIrpStack->Parameters.DeviceIoControl.InputBufferLength, + pIrp->AssociatedIrp.SystemBuffer, + pIrpStack->Parameters.DeviceIoControl.OutputBufferLength, + (ULONG*)&pIrp->IoStatus.Information + ); + break; + case IOCTL_OLS_HALT: + __halt(); + status = STATUS_SUCCESS; + break; + + case IOCTL_OLS_READ_IO_PORT: + case IOCTL_OLS_READ_IO_PORT_BYTE: + case IOCTL_OLS_READ_IO_PORT_WORD: + case IOCTL_OLS_READ_IO_PORT_DWORD: + status = ReadIoPort( + pIrpStack->Parameters.DeviceIoControl.IoControlCode, + pIrp->AssociatedIrp.SystemBuffer, + pIrpStack->Parameters.DeviceIoControl.InputBufferLength, + pIrp->AssociatedIrp.SystemBuffer, + pIrpStack->Parameters.DeviceIoControl.OutputBufferLength, + (ULONG*)&pIrp->IoStatus.Information + ); + break; + case IOCTL_OLS_WRITE_IO_PORT: + case IOCTL_OLS_WRITE_IO_PORT_BYTE: + case IOCTL_OLS_WRITE_IO_PORT_WORD: + case IOCTL_OLS_WRITE_IO_PORT_DWORD: + status = WriteIoPort( + pIrpStack->Parameters.DeviceIoControl.IoControlCode, + pIrp->AssociatedIrp.SystemBuffer, + pIrpStack->Parameters.DeviceIoControl.InputBufferLength, + pIrp->AssociatedIrp.SystemBuffer, + pIrpStack->Parameters.DeviceIoControl.OutputBufferLength, + (ULONG*)&pIrp->IoStatus.Information + ); + break; + + case IOCTL_OLS_READ_PCI_CONFIG: + status = ReadPciConfig( + pIrp->AssociatedIrp.SystemBuffer, + pIrpStack->Parameters.DeviceIoControl.InputBufferLength, + pIrp->AssociatedIrp.SystemBuffer, + pIrpStack->Parameters.DeviceIoControl.OutputBufferLength, + (ULONG*)&pIrp->IoStatus.Information + ); + break; + case IOCTL_OLS_WRITE_PCI_CONFIG: + status = WritePciConfig( + pIrp->AssociatedIrp.SystemBuffer, + pIrpStack->Parameters.DeviceIoControl.InputBufferLength, + pIrp->AssociatedIrp.SystemBuffer, + pIrpStack->Parameters.DeviceIoControl.OutputBufferLength, + (ULONG*)&pIrp->IoStatus.Information + ); + break; + + case IOCTL_OLS_READ_MEMORY: + status = ReadMemory( + pIrp->AssociatedIrp.SystemBuffer, + pIrpStack->Parameters.DeviceIoControl.InputBufferLength, + pIrp->AssociatedIrp.SystemBuffer, + pIrpStack->Parameters.DeviceIoControl.OutputBufferLength, + (ULONG*)&pIrp->IoStatus.Information + ); + break; + case IOCTL_OLS_WRITE_MEMORY: + status = WriteMemory( + pIrp->AssociatedIrp.SystemBuffer, + pIrpStack->Parameters.DeviceIoControl.InputBufferLength, + pIrp->AssociatedIrp.SystemBuffer, + pIrpStack->Parameters.DeviceIoControl.OutputBufferLength, + (ULONG*)&pIrp->IoStatus.Information + ); + break; + } + break; + } + + // We're done with I/O request. Record the status of the I/O action. + // I/Oɡ¼I/O״̬ + pIrp->IoStatus.Status = status; + + // Don't boost priority when returning since this took little time. + // ʱҪȼΪֻҪٵʱ䡣 + IoCompleteRequest(pIrp, IO_NO_INCREMENT); + + return status; +} + +VOID +Unload( + IN PDRIVER_OBJECT DriverObject + ) +/*++ + +Routine Description: + + This routine is called by the I/O system to unload the driver. + + Any resources previously allocated must be freed. + +Arguments: + + DriverObject - a pointer to the object that represents our driver. + +Return Value: + + None +--*/ + +{ + PDEVICE_OBJECT deviceObject = DriverObject->DeviceObject; + UNICODE_STRING win32NameString; + + PAGED_CODE(); + + // Create counted string version of our Win32 device name. + RtlInitUnicodeString(&win32NameString, DOS_DEVICE_NAME); + + // Delete the link from our device name to a name in the Win32 namespace. + IoDeleteSymbolicLink(&win32NameString); + + if(deviceObject != NULL) IoDeleteDevice(deviceObject); +} + +//----------------------------------------------------------------------------- +// +// CPU +// +//----------------------------------------------------------------------------- + +NTSTATUS +ReadMsr( void *lpInBuffer, + ULONG nInBufferSize, + void *lpOutBuffer, + ULONG nOutBufferSize, + ULONG *lpBytesReturned) +{ + __try + { + ULONGLONG data = __readmsr(*(ULONG*)lpInBuffer); + memcpy((PULONG)lpOutBuffer, &data, 8); + *lpBytesReturned = 8; + return STATUS_SUCCESS; + } + __except(EXCEPTION_EXECUTE_HANDLER) + { + *lpBytesReturned = 0; + return STATUS_UNSUCCESSFUL; + } +} + +NTSTATUS +WriteMsr( void *lpInBuffer, + ULONG nInBufferSize, + void *lpOutBuffer, + ULONG nOutBufferSize, + ULONG *lpBytesReturned) +{ + __try + { + OLS_WRITE_MSR_INPUT* param; + param = (OLS_WRITE_MSR_INPUT*)lpInBuffer; + + __writemsr(param->Register, param->Value.QuadPart); + *lpBytesReturned = 0; + return STATUS_SUCCESS; + } + __except(EXCEPTION_EXECUTE_HANDLER) + { + *lpBytesReturned = 0; + return STATUS_UNSUCCESSFUL; + } +} + +NTSTATUS +ReadPmc( void *lpInBuffer, + ULONG nInBufferSize, + void *lpOutBuffer, + ULONG nOutBufferSize, + ULONG *lpBytesReturned) +{ + __try + { + ULONGLONG data = __readpmc(*(ULONG*)lpInBuffer); + memcpy((PULONG)lpOutBuffer, &data, 8); + *lpBytesReturned = 8; + return STATUS_SUCCESS; + } + __except(EXCEPTION_EXECUTE_HANDLER) + { + *lpBytesReturned = 0; + return STATUS_UNSUCCESSFUL; + } +} + +//----------------------------------------------------------------------------- +// +// IO Port +// +//----------------------------------------------------------------------------- + +NTSTATUS +ReadIoPort( ULONG ioControlCode, + void *lpInBuffer, + ULONG nInBufferSize, + void *lpOutBuffer, + ULONG nOutBufferSize, + ULONG *lpBytesReturned) +{ + ULONG nPort = *(ULONG*)lpInBuffer; + + switch(ioControlCode) + { + case IOCTL_OLS_READ_IO_PORT_BYTE: + *(PUCHAR)lpOutBuffer = READ_PORT_UCHAR((PUCHAR)(ULONG_PTR)nPort); + break; + case IOCTL_OLS_READ_IO_PORT_WORD: + *(PUSHORT)lpOutBuffer = READ_PORT_USHORT((PUSHORT)(ULONG_PTR)nPort); + break; + case IOCTL_OLS_READ_IO_PORT_DWORD: + *(PULONG)lpOutBuffer = READ_PORT_ULONG((PULONG)(ULONG_PTR)nPort); + break; + default: + *lpBytesReturned = 0; + return STATUS_INVALID_PARAMETER; + break; + } + + *lpBytesReturned = nInBufferSize; + return STATUS_SUCCESS; +} + +NTSTATUS +WriteIoPort(ULONG ioControlCode, + void *lpInBuffer, + ULONG nInBufferSize, + void *lpOutBuffer, + ULONG nOutBufferSize, + ULONG *lpBytesReturned) +{ + ULONG nPort; + OLS_WRITE_IO_PORT_INPUT* param; + + param = (OLS_WRITE_IO_PORT_INPUT*)lpInBuffer; + nPort = param->PortNumber; + + switch(ioControlCode) + { + + case IOCTL_OLS_WRITE_IO_PORT_BYTE: + WRITE_PORT_UCHAR((PUCHAR)(ULONG_PTR)nPort, param->CharData); + break; + case IOCTL_OLS_WRITE_IO_PORT_WORD: + WRITE_PORT_USHORT((PUSHORT)(ULONG_PTR)nPort, param->ShortData); + break; + case IOCTL_OLS_WRITE_IO_PORT_DWORD: + WRITE_PORT_ULONG((PULONG)(ULONG_PTR)nPort, param->LongData); + break; + default: + return STATUS_INVALID_PARAMETER; + break; + } + + return STATUS_SUCCESS; +} + +//----------------------------------------------------------------------------- +// +// PCI +// +//----------------------------------------------------------------------------- + +NTSTATUS +ReadPciConfig( void *lpInBuffer, + ULONG nInBufferSize, + void *lpOutBuffer, + ULONG nOutBufferSize, + ULONG *lpBytesReturned) +{ + OLS_READ_PCI_CONFIG_INPUT *param; + NTSTATUS status; + + if(nInBufferSize != sizeof(OLS_READ_PCI_CONFIG_INPUT)) + { + return STATUS_INVALID_PARAMETER; + } + param = (OLS_READ_PCI_CONFIG_INPUT *)lpInBuffer; + + status = pciConfigRead(param->PciAddress, param->PciOffset, lpOutBuffer, nOutBufferSize); + + if(status == STATUS_SUCCESS) + { + *lpBytesReturned = nOutBufferSize; + } + else + { + *lpBytesReturned = 0; + } + + return status; +} + +NTSTATUS +WritePciConfig( void *lpInBuffer, + ULONG nInBufferSize, + void *lpOutBuffer, + ULONG nOutBufferSize, + ULONG *lpBytesReturned) +{ + OLS_WRITE_PCI_CONFIG_INPUT *param; + ULONG writeSize; + //NTSTATUS status; + + if(nInBufferSize < offsetof(OLS_WRITE_PCI_CONFIG_INPUT, Data)) + { + return STATUS_INVALID_PARAMETER; + } + + param = (OLS_WRITE_PCI_CONFIG_INPUT *)lpInBuffer; + writeSize = nInBufferSize - offsetof(OLS_WRITE_PCI_CONFIG_INPUT, Data); + + *lpBytesReturned = 0; + + return pciConfigWrite(param->PciAddress, param->PciOffset, + ¶m->Data, writeSize); + +} + +//----------------------------------------------------------------------------- +// +// Support Function +// +//----------------------------------------------------------------------------- + +NTSTATUS pciConfigRead(ULONG pciAddress, ULONG offset, void *data, int length) +{ + PCI_SLOT_NUMBER slot; + int error; + ULONG busNumber; + + busNumber = PciGetBus(pciAddress); + slot.u.AsULONG = 0; + slot.u.bits.DeviceNumber = PciGetDev(pciAddress); + slot.u.bits.FunctionNumber = PciGetFunc(pciAddress); + error = HalGetBusDataByOffset(PCIConfiguration, busNumber, slot.u.AsULONG, data, offset, length); + + if(error == 0) + { + return OLS_ERROR_PCI_BUS_NOT_EXIST; + } + else if(length != 2 && error == 2) + { + return OLS_ERROR_PCI_NO_DEVICE; + } + else if(length != error) + { + return OLS_ERROR_PCI_READ_CONFIG; + } + + return STATUS_SUCCESS; +} + +NTSTATUS pciConfigWrite(ULONG pciAddress, ULONG offset, void *data, int length) +{ + PCI_SLOT_NUMBER slot; + int error; + ULONG busNumber; + + busNumber = PciGetBus(pciAddress); + + slot.u.AsULONG = 0; + slot.u.bits.DeviceNumber = PciGetDev(pciAddress); + slot.u.bits.FunctionNumber = PciGetFunc(pciAddress); + error = HalSetBusDataByOffset(PCIConfiguration, busNumber, slot.u.AsULONG, + data, offset, length); + + if(error != length) + { + return OLS_ERROR_PCI_WRITE_CONFIG; + } + + return STATUS_SUCCESS; +} + + +//----------------------------------------------------------------------------- +// +// Physical Memory +// +//----------------------------------------------------------------------------- + +NTSTATUS +ReadMemory( void *lpInBuffer, + ULONG nInBufferSize, + void *lpOutBuffer, + ULONG nOutBufferSize, + ULONG *lpBytesReturned) +{ + OLS_READ_MEMORY_INPUT *param; + ULONG size; + PHYSICAL_ADDRESS address; + PVOID maped; + BOOLEAN error; + + if(nInBufferSize != sizeof(OLS_READ_MEMORY_INPUT)) + { + return STATUS_INVALID_PARAMETER; + } + + param = (OLS_READ_MEMORY_INPUT *)lpInBuffer; + size = param->UnitSize * param->Count; + + if(nOutBufferSize < size) + { + return STATUS_INVALID_PARAMETER; + } + + address.QuadPart = param->Address.QuadPart; + +#ifndef _PHYSICAL_MEMORY_SUPPORT + + if(0x000C0000 > address.QuadPart + || (address.QuadPart + size - 1) > 0x000FFFFF) + { + return STATUS_INVALID_PARAMETER; + } + +#endif + + maped = MmMapIoSpace(address, size, FALSE); + + error = FALSE; + switch(param->UnitSize){ + case 1: + READ_REGISTER_BUFFER_UCHAR(maped, lpOutBuffer, param->Count); + break; + case 2: + READ_REGISTER_BUFFER_USHORT(maped, lpOutBuffer, param->Count); + break; + case 4: + READ_REGISTER_BUFFER_ULONG(maped, lpOutBuffer, param->Count); + break; + default: + error = TRUE; + break; + } + + MmUnmapIoSpace(maped, size); + + if(error) + { + return STATUS_INVALID_PARAMETER; + } + + *lpBytesReturned = nOutBufferSize; + + return STATUS_SUCCESS; +} + +NTSTATUS +WriteMemory(void *lpInBuffer, + ULONG nInBufferSize, + void *lpOutBuffer, + ULONG nOutBufferSize, + ULONG *lpBytesReturned) +{ +#ifdef _PHYSICAL_MEMORY_SUPPORT + + OLS_WRITE_MEMORY_INPUT *param; + ULONG size; + PHYSICAL_ADDRESS address; + PVOID maped; + BOOLEAN error; + + if(nInBufferSize < offsetof(OLS_WRITE_MEMORY_INPUT, Data)) + { + return STATUS_INVALID_PARAMETER; + } + + param = (OLS_WRITE_MEMORY_INPUT *)lpInBuffer; + + size = param->UnitSize * param->Count; + if (nInBufferSize < size + offsetof(OLS_WRITE_MEMORY_INPUT, Data)) + { + return STATUS_INVALID_PARAMETER; + } + + address.QuadPart = param->Address.QuadPart; + + maped = MmMapIoSpace(address, size, FALSE); + + error = FALSE; + switch(param->UnitSize){ + case 1: + WRITE_REGISTER_BUFFER_UCHAR(maped, + (UCHAR*)¶m->Data, param->Count); + break; + case 2: + WRITE_REGISTER_BUFFER_USHORT(maped, + (USHORT*)¶m->Data, param->Count); + break; + case 4: + WRITE_REGISTER_BUFFER_ULONG(maped, + (ULONG*)¶m->Data, param->Count); + break; + default: + error = TRUE; + break; + } + + MmUnmapIoSpace(maped, size); + + if(error) + { + return STATUS_INVALID_PARAMETER; + } + + *lpBytesReturned = 0; + + return STATUS_SUCCESS; + +#else + + *lpBytesReturned = 0; + + return STATUS_INVALID_PARAMETER; + +#endif +} diff --git a/Source/CPUTemp/Driver/OpenLibSys.h b/Source/CPUTemp/Driver/OpenLibSys.h new file mode 100644 index 0000000..3d5fd57 --- /dev/null +++ b/Source/CPUTemp/Driver/OpenLibSys.h @@ -0,0 +1,132 @@ +//----------------------------------------------------------------------------- +// Author : hiyohiyo +// Mail : hiyohiyo@crystalmark.info +// Web : http://openlibsys.org/ +// License : The modified BSD license +// +// Copyright 2007-2008 OpenLibSys.org. All rights reserved. +//----------------------------------------------------------------------------- + +#include +#include +#include +#include "OlsIoctl.h" + +//----------------------------------------------------------------------------- +// +// Device Name +// +//----------------------------------------------------------------------------- + +#define NT_DEVICE_NAME L"\\Device\\WinRing0_1_2_0" +#define DOS_DEVICE_NAME L"\\DosDevices\\WinRing0_1_2_0" + +//----------------------------------------------------------------------------- +// +// Function Prototypes +// +//----------------------------------------------------------------------------- + +NTSTATUS DriverEntry( + IN PDRIVER_OBJECT DriverObject, + IN PUNICODE_STRING RegistryPath + ); + +NTSTATUS OlsDispatch( + IN PDEVICE_OBJECT pDO, + IN PIRP pIrp + ); + +VOID Unload( + IN PDRIVER_OBJECT DriverObject + ); + +//----------------------------------------------------------------------------- +// +// Function Prototypes for Control Code +// +//----------------------------------------------------------------------------- + +NTSTATUS ReadMsr( + void *lpInBuffer, + ULONG nInBufferSize, + void *lpOutBuffer, + ULONG nOutBufferSize, + ULONG *lpBytesReturned + ); + +NTSTATUS WriteMsr( + void *lpInBuffer, + ULONG nInBufferSize, + void *lpOutBuffer, + ULONG nOutBufferSize, + ULONG *lpBytesReturned + ); + +NTSTATUS ReadPmc( + void *lpInBuffer, + ULONG nInBufferSize, + void *lpOutBuffer, + ULONG nOutBufferSize, + ULONG *lpBytesReturned + ); + +NTSTATUS ReadIoPort( + ULONG ioControlCode, + void *lpInBuffer, + ULONG nInBufferSize, + void *lpOutBuffer, + ULONG nOutBufferSize, + ULONG *lpBytesReturned + ); + +NTSTATUS WriteIoPort( + ULONG ioControlCode, + void *lpInBuffer, + ULONG nInBufferSize, + void *lpOutBuffer, + ULONG nOutBufferSize, + ULONG *lpBytesReturned + ); + +NTSTATUS ReadPciConfig( + void *lpInBuffer, + ULONG nInBufferSize, + void *lpOutBuffer, + ULONG nOutBufferSize, + ULONG *lpBytesReturned + ); + +NTSTATUS WritePciConfig( + void *lpInBuffer, + ULONG nInBufferSize, + void *lpOutBuffer, + ULONG nOutBufferSize, + ULONG *lpBytesReturned + ); + +NTSTATUS ReadMemory( + void *lpInBuffer, + ULONG nInBufferSize, + void *lpOutBuffer, + ULONG nOutBufferSize, + ULONG *lpBytesReturned + ); + +NTSTATUS WriteMemory( + void *lpInBuffer, + ULONG nInBufferSize, + void *lpOutBuffer, + ULONG nOutBufferSize, + ULONG *lpBytesReturned + ); + + +//----------------------------------------------------------------------------- +// +// Support Function Prototypes +// +//----------------------------------------------------------------------------- + +NTSTATUS pciConfigRead(ULONG pciAddress, ULONG offset, void *data, int length); +NTSTATUS pciConfigWrite(ULONG pciAddress, ULONG offset, void *data, int length); diff --git a/Source/CPUTemp/Driver/driver.vcxproj b/Source/CPUTemp/Driver/driver.vcxproj new file mode 100644 index 0000000..4dea313 --- /dev/null +++ b/Source/CPUTemp/Driver/driver.vcxproj @@ -0,0 +1,269 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + Debug + ARM + + + Release + ARM + + + Debug + ARM64 + + + Release + ARM64 + + + + {FB64DFCD-5B93-4679-9BF9-340BC48164DA} + {497e31cb-056b-4f31-abb8-447fd55ee5a5} + v4.5 + 12.0 + Debug + Win32 + driver + $(LatestTargetPlatformVersion) + + + + Windows7 + true + WindowsKernelModeDriver10.0 + Driver + KMDF + Desktop + + + Windows7 + false + WindowsKernelModeDriver10.0 + Driver + KMDF + Desktop + + + Windows7 + true + WindowsKernelModeDriver10.0 + Driver + KMDF + Desktop + + + Windows7 + false + WindowsKernelModeDriver10.0 + Driver + KMDF + Desktop + + + Windows7 + true + WindowsKernelModeDriver10.0 + Driver + KMDF + Desktop + + + Windows7 + false + WindowsKernelModeDriver10.0 + Driver + KMDF + Desktop + + + Windows7 + true + WindowsKernelModeDriver10.0 + Driver + KMDF + Desktop + + + Windows7 + false + WindowsKernelModeDriver10.0 + Driver + KMDF + Desktop + + + + + + + + + + + DbgengKernelDebugger + false + WinRing0 + $(MSBuildProjectDirectory)\$(DDKPlatform)\$(ConfigurationName)\ + $(Platform)\$(ConfigurationName)\ + + + DbgengKernelDebugger + false + WinRing0 + $(MSBuildProjectDirectory)\$(DDKPlatform)\$(ConfigurationName)\ + $(Platform)\$(ConfigurationName)\ + + + DbgengKernelDebugger + false + WinRing0x64 + $(MSBuildProjectDirectory)\$(DDKPlatform)\$(ConfigurationName)\ + + + DbgengKernelDebugger + false + WinRing0x64 + $(MSBuildProjectDirectory)\$(DDKPlatform)\$(ConfigurationName)\ + + + DbgengKernelDebugger + WinRing0 + $(MSBuildProjectDirectory)\$(DDKPlatform)\$(ConfigurationName)\ + + + DbgengKernelDebugger + WinRing0 + $(MSBuildProjectDirectory)\$(DDKPlatform)\$(ConfigurationName)\ + + + DbgengKernelDebugger + false + WinRing0 + $(MSBuildProjectDirectory)\$(DDKPlatform)\$(ConfigurationName)\ + + + DbgengKernelDebugger + false + WinRing0 + $(MSBuildProjectDirectory)\$(DDKPlatform)\$(ConfigurationName)\ + + + + false + true + trace.h + true + Level3 + false + true + + + + + false + true + trace.h + true + Level3 + false + true + + + + + false + true + trace.h + true + Level3 + false + true + + + + + false + true + trace.h + true + Level3 + false + true + + + + + false + true + trace.h + true + Level3 + false + true + + + + + false + true + trace.h + true + Level3 + false + true + + + + + false + true + trace.h + true + Level3 + false + true + + + + + false + true + trace.h + true + Level3 + false + true + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/CPUTemp/Driver/driver.vcxproj.filters b/Source/CPUTemp/Driver/driver.vcxproj.filters new file mode 100644 index 0000000..1318e7c --- /dev/null +++ b/Source/CPUTemp/Driver/driver.vcxproj.filters @@ -0,0 +1,34 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {8E41214B-6785-4CFE-B992-037D68949A14} + inf;inv;inx;mof;mc; + + + + + Resource Files + + + + + Header Files + + + Header Files + + + \ No newline at end of file diff --git a/Source/CPUTemp/Library/Export.h b/Source/CPUTemp/Library/Export.h new file mode 100644 index 0000000..1917ceb --- /dev/null +++ b/Source/CPUTemp/Library/Export.h @@ -0,0 +1,17 @@ +/* Copyright (C) 2011 Rainmeter Project Developers + * + * This Source Code Form is subject to the terms of the GNU General Public + * License; either version 2 of the License, or (at your option) any later + * version. If a copy of the GPL was not distributed with this file, You can + * obtain one at . */ + +#ifndef __EXPORT_H__ +#define __EXPORT_H__ + +#include "../Plugins/API/RainmeterAPI.h" + +/* DEPRECATED */ LIBRARY_EXPORT __declspec(deprecated) LPCWSTR ReadConfigString(LPCWSTR section, LPCWSTR option, LPCWSTR defValue); + +/* DEPRECATED */ LIBRARY_EXPORT __declspec(deprecated) LPCWSTR PluginBridge(LPCWSTR command, LPCWSTR data); + +#endif diff --git a/Source/CPUTemp/Plugins/API/RainmeterAPI.cs b/Source/CPUTemp/Plugins/API/RainmeterAPI.cs new file mode 100644 index 0000000..76c4b5f --- /dev/null +++ b/Source/CPUTemp/Plugins/API/RainmeterAPI.cs @@ -0,0 +1,446 @@ +/* Copyright (C) 2011 Rainmeter Project Developers + * + * This Source Code Form is subject to the terms of the GNU General Public + * License; either version 2 of the License, or (at your option) any later + * version. If a copy of the GPL was not distributed with this file, You can + * obtain one at . */ + +using System; +using System.Runtime.InteropServices; + +namespace Rainmeter +{ + /// + /// Wrapper around the Rainmeter C API. + /// + public class API + { + private IntPtr m_Rm; + + public API(IntPtr rm) + { + m_Rm = rm; + } + + static public implicit operator API(IntPtr rm) + { + return new Rainmeter.API(rm); + } + + [DllImport("Rainmeter.dll", CharSet = CharSet.Unicode)] + private extern static IntPtr RmReadString(IntPtr rm, string option, string defValue, bool replaceMeasures); + + [DllImport("Rainmeter.dll", CharSet = CharSet.Unicode)] + private extern static double RmReadFormula(IntPtr rm, string option, double defValue); + + [DllImport("Rainmeter.dll", CharSet = CharSet.Unicode)] + private extern static IntPtr RmReplaceVariables(IntPtr rm, string str); + + [DllImport("Rainmeter.dll", CharSet = CharSet.Unicode)] + private extern static IntPtr RmPathToAbsolute(IntPtr rm, string relativePath); + + /// + /// Executes a command + /// + /// Pointer to current skin (See API.GetSkin) + /// Bang to execute + /// No return type + /// + /// + /// [DllExport] + /// internal double Update(IntPtr data) + /// { + /// Measure measure = (Measure)data; + /// Rainmeter.API.Execute(measure->skin, "!SetVariable SomeVar 10"); // 'measure->skin' stored previously in the Initialize function + /// return 0.0; + /// } + /// + /// + [DllImport("Rainmeter.dll", EntryPoint = "RmExecute", CharSet = CharSet.Unicode)] + public extern static void Execute(IntPtr skin, string command); + + [DllImport("Rainmeter.dll")] + private extern static IntPtr RmGet(IntPtr rm, RmGetType type); + + [DllImport("Rainmeter.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] + private extern static int LSLog(int type, string unused, string message); + + [DllImport("Rainmeter.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)] + private extern static int RmLog(IntPtr rm, LogType type, string message); + + private enum RmGetType + { + MeasureName = 0, + Skin = 1, + SettingsFile = 2, + SkinName = 3, + SkinWindowHandle = 4 + } + + public enum LogType + { + Error = 1, + Warning = 2, + Notice = 3, + Debug = 4 + } + + /// + /// Retrieves the option defined in the skin file + /// + /// Option name to be read from skin + /// Default value for the option if it is not found or invalid + /// If true, replaces section variables in the returned string + /// Returns the option value as a string + /// + /// + /// [DllExport] + /// public static void Reload(IntPtr data, IntPtr rm, ref double maxValue) + /// { + /// Measure measure = (Measure)data; + /// Rainmeter.API api = (Rainmeter.API)rm; + /// string value = api.ReadString("Value", "DefaultValue"); + /// string action = api.ReadString("Action", "", false); // [MeasureNames] will be parsed/replaced when the action is executed with RmExecute + /// } + /// + /// + public string ReadString(string option, string defValue, bool replaceMeasures = true) + { + return Marshal.PtrToStringUni(RmReadString(m_Rm, option, defValue, replaceMeasures)); + } + + /// + /// Retrieves the option defined in the skin file and converts a relative path to a absolute path + /// + /// Option name to be read from skin + /// Default value for the option if it is not found or invalid + /// Returns the absolute path of the option value as a string + /// + /// + /// [DllExport] + /// public static void Reload(IntPtr data, IntPtr rm, ref double maxValue) + /// { + /// Measure measure = (Measure)data; + /// Rainmeter.API api = (Rainmeter.API)rm; + /// string path = api.ReadPath("MyPath", "C:\\"); + /// } + /// + /// + public string ReadPath(string option, string defValue) + { + return Marshal.PtrToStringUni(RmPathToAbsolute(m_Rm, ReadString(option, defValue))); + } + + /// + /// Retrieves the option defined in the skin file and converts it to a double + /// + /// If the option is a formula, the returned value will be the result of the parsed formula + /// Option name to read from skin + /// Default value for the option if it is not found, invalid, or a formula could not be parsed + /// Returns the option value as a double + /// + /// + /// [DllExport] + /// public static void Reload(IntPtr data, IntPtr rm, ref double maxValue) + /// { + /// Measure measure = (Measure)data; + /// Rainmeter.API api = (Rainmeter.API)rm; + /// double value = api.ReadDouble("Value", 20.0); + /// } + /// + /// + public double ReadDouble(string option, double defValue) + { + return RmReadFormula(m_Rm, option, defValue); + } + + /// + /// Retrieves the option defined in the skin file and converts it to an integer + /// + /// If the option is a formula, the returned value will be the result of the parsed formula + /// Option name to be read from skin + /// Default value for the option if it is not found, invalid, or a formula could not be parsed + /// Returns the option value as an integer + /// + /// + /// [DllExport] + /// public static void Reload(IntPtr data, IntPtr rm, ref double maxValue) + /// { + /// Measure measure = (Measure)data; + /// Rainmeter.API api = (Rainmeter.API)rm; + /// int value = api.ReadInt("Value", 20); + /// } + /// + /// + public int ReadInt(string option, int defValue) + { + return (int)RmReadFormula(m_Rm, option, defValue); + } + + /// + /// Returns a string, replacing any variables (or section variables) within the inputted string + /// + /// String with unresolved variables + /// Returns a string replacing any variables in the 'str' + /// + /// + /// [DllExport] + /// public static double Update(IntPtr data) + /// { + /// Measure measure = (Measure)data; + /// string myVar = measure.api.ReplaceVariables("#MyVar#").ToUpperInvariant(); // 'measure.api' stored previously in the Initialize function + /// if (myVar == "SOMETHING") { return 1.0; } + /// return 0.0; + /// } + /// + /// + public string ReplaceVariables(string str) + { + return Marshal.PtrToStringUni(RmReplaceVariables(m_Rm, str)); + } + + /// + /// Retrieves the name of the measure + /// + /// Call GetMeasureName() in the Initialize function and store the results for later use + /// Returns the current measure name as a string + /// + /// + /// [DllExport] + /// public static void Initialize(ref IntPtr data, IntPtr rm) + /// { + /// Measure measure = new Measure(); + /// Rainmeter.API api = (Rainmeter.API)rm; + /// measure.myName = api.GetMeasureName(); // declare 'myName' as a string in measure class + /// data = GCHandle.ToIntPtr(GCHandle.Alloc(measure)); + /// } + /// + /// + public string GetMeasureName() + { + return Marshal.PtrToStringUni(RmGet(m_Rm, RmGetType.MeasureName)); + } + + /// + /// Retrieves an internal pointer to the current skin + /// + /// Call GetSkin() in the Initialize function and store the results for later use + /// Returns an IntPtr to the current skin + /// + /// + /// [DllExport] + /// public static void Initialize(ref IntPtr data, IntPtr rm) + /// { + /// Measure measure = new Measure(); + /// Rainmeter.API api = (Rainmeter.API)rm; + /// measure.mySkin = api.GetSkin(); // declare 'mySkin' as a IntPtr in measure class + /// data = GCHandle.ToIntPtr(GCHandle.Alloc(measure)); + /// } + /// + /// + public IntPtr GetSkin() + { + return RmGet(m_Rm, RmGetType.Skin); + } + + /// + /// Retrieves a path to the Rainmeter data file (Rainmeter.data) + /// + /// Call GetSettingsFile() in the Initialize function and store the results for later use + /// Returns the path and filename of the Rainmeter data file as a string + /// + /// + /// public static void Initialize(ref IntPtr data, IntPtr rm) + /// { + /// data = GCHandle.ToIntPtr(GCHandle.Alloc(new Measure())); + /// Rainmeter.API api = (Rainmeter.API)rm; + /// if (rmDataFile == null) { rmDataFile = API.GetSettingsFile(); } // declare 'rmDataFile' as a string in global scope + /// } + /// + /// + public static string GetSettingsFile() + { + return Marshal.PtrToStringUni(RmGet(IntPtr.Zero, RmGetType.SettingsFile)); + } + + /// + /// Retrieves full path and name of the skin + /// + /// Call GetSkinName() in the Initialize function and store the results for later use + /// Returns the path and filename of the skin as a string + /// + /// + /// [DllExport] + /// public static void Initialize(ref IntPtr data, IntPtr rm) + /// { + /// Measure measure = new Measure(); + /// Rainmeter.API api = (Rainmeter.API)rm; + /// measure.skinName = api.GetSkinName(); } // declare 'skinName' as a string in measure class + /// data = GCHandle.ToIntPtr(GCHandle.Alloc(measure)); + /// } + /// + /// + public string GetSkinName() + { + return Marshal.PtrToStringUni(RmGet(m_Rm, RmGetType.SkinName)); + } + + /// + /// Executes a command auto getting the skin reference + /// + /// Bang to execute + /// No return type + /// + /// + /// [DllExport] + /// public static double Update(IntPtr data) + /// { + /// Measure measure = (Measure)data; + /// measure.api.Execute("!SetVariable SomeVar 10"); // 'measure.api' stored previously in the Initialize function + /// return 0.0; + /// } + /// + /// + public void Execute(string command) + { + Execute(this.GetSkin(), command); + } + + /// + /// Returns a pointer to the handle of the skin window (HWND) + /// + /// Call GetSkinWindow() in the Initialize function and store the results for later use + /// Returns a handle to the skin window as a IntPtr + /// + /// + /// [DllExport] + /// internal void Initialize(Rainmeter.API rm) + /// { + /// Measure measure = new Measure(); + /// Rainmeter.API api = (Rainmeter.API)rm; + /// measure.skinWindow = api.GetSkinWindow(); } // declare 'skinWindow' as a IntPtr in measure class + /// data = GCHandle.ToIntPtr(GCHandle.Alloc(measure)); + /// } + /// + /// + public IntPtr GetSkinWindow() + { + return RmGet(m_Rm, RmGetType.SkinWindowHandle); + } + + /// + /// DEPRECATED: Save your rm or api reference and use Log(rm, type, message). Sends a message to the Rainmeter log with no source. + /// + public static void Log(int type, string message) + { + LSLog(type, null, message); + } + + /// + /// Sends a message to the Rainmeter log with source + /// + /// LOG_DEBUG messages are logged only when Rainmeter is in debug mode + /// Pointer to the plugin measure + /// Log type, use API.LogType enum (Error, Warning, Notice, or Debug) + /// Message to be logged + /// No return type + /// + /// + /// Rainmeter.API.Log(rm, API.LogType.Notice, "I am a 'notice' log message with a source"); + /// + /// + public static void Log(IntPtr rm, LogType type, string message) + { + RmLog(rm, type, message); + } + + /// + /// + /// Sends a formatted message to the Rainmeter log + /// + /// LOG_DEBUG messages are logged only when Rainmeter is in debug mode + /// Pointer to the plugin measure + /// Log type, use API.LogType enum (Error, Warning, Notice, or Debug) + /// Formatted message to be logged, follows string.Format syntax + /// Comma separated list of args referenced in the formatted message + /// No return type + /// + /// + /// [DllExport] + /// public static double Update(IntPtr data) + /// { + /// Measure measure = (Measure)data; + /// string notice = "notice"; + /// measure.api.LogF(measure.rm, API.LogType.Notice, "I am a '{0}' log message with a source", notice); // 'measure.rm' stored previously in the Initialize function + /// + /// return 0.0; + /// } + /// + /// + public static void LogF(IntPtr rm, LogType type, string format, params Object[] args) + { + RmLog(rm, type, string.Format(format, args)); + } + + /// + /// Sends a message to the Rainmeter log with source + /// + /// LOG_DEBUG messages are logged only when Rainmeter is in debug mode + /// Log type, use API.LogType enum (Error, Warning, Notice, or Debug) + /// Message to be logged + /// No return type + /// + /// + /// [DllExport] + /// public static double Update(IntPtr data) + /// { + /// Measure measure = (Measure)data; + /// measure.api.Log(api, API.LogType.Notice, "I am a 'notice' log message with a source"); // 'measure.api' stored previously in the Initialize function + /// + /// return 0.0; + /// } + /// + /// + public void Log(LogType type, string message) + { + RmLog(this.m_Rm, type, message); + } + + /// + /// Sends a formatted message to the Rainmeter log + /// + /// LOG_DEBUG messages are logged only when Rainmeter is in debug mode + /// Log type, use API.LogType enum (Error, Warning, Notice, or Debug) + /// Formatted message to be logged, follows string.Format syntax + /// Comma separated list of args referenced in the formatted message + /// No return type + /// + /// + /// [DllExport] + /// public static double Update(IntPtr data) + /// { + /// Measure measure = (Measure)data; + /// string notice = "notice"; + /// measure.api.LogF(API.LogType.Notice, "I am a '{0}' log message with a source", notice); // 'measure.api' stored previously in the Initialize function + /// + /// return 0.0; + /// } + /// + /// + public void LogF(LogType type, string format, params Object[] args) + { + RmLog(this.m_Rm, type, string.Format(format, args)); + } + } + /// + /// Dummy attribute to mark method as exported for DllExporter.exe. + /// + [AttributeUsage(AttributeTargets.Method)] + public class DllExport : Attribute + { + public DllExport() + { + + } + } +} diff --git a/Source/CPUTemp/Plugins/API/RainmeterAPI.h b/Source/CPUTemp/Plugins/API/RainmeterAPI.h new file mode 100644 index 0000000..6477775 --- /dev/null +++ b/Source/CPUTemp/Plugins/API/RainmeterAPI.h @@ -0,0 +1,371 @@ +/* Copyright (C) 2011 Rainmeter Project Developers + * + * This Source Code Form is subject to the terms of the GNU General Public + * License; either version 2 of the License, or (at your option) any later + * version. If a copy of the GPL was not distributed with this file, You can + * obtain one at . */ + +#ifndef __RAINMETERAPI_H__ +#define __RAINMETERAPI_H__ + +#ifdef LIBRARY_EXPORTS +#define LIBRARY_EXPORT EXTERN_C +#else +#define LIBRARY_EXPORT EXTERN_C __declspec(dllimport) +#endif // LIBRARY_EXPORTS + +#define PLUGIN_EXPORT EXTERN_C __declspec(dllexport) + +// +// Exported functions +// + +/// +/// Retrieves the option defined in the skin file +/// +/// Pointer to the plugin measure +/// Option name to be read from skin +/// Default value for the option if it is not found or invalid +/// If true, replaces section variables in the returned string +/// Returns the option value as a string (LPCWSTR) +/// +/// +/// PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) +/// { +/// LPCWSTR value = RmReadString(rm, L"Value", L"DefaultValue"); +/// LPCWSTR action = RmReadString(rm, L"Action", L"", FALSE); // [MeasureNames] will be parsed/replaced when the action is executed with RmExecute +/// } +/// +/// +#ifdef __cplusplus +LIBRARY_EXPORT LPCWSTR __stdcall RmReadString(void* rm, LPCWSTR option, LPCWSTR defValue, BOOL replaceMeasures = TRUE); +#else +LIBRARY_EXPORT LPCWSTR __stdcall RmReadString(void* rm, LPCWSTR option, LPCWSTR defValue, BOOL replaceMeasures); +#endif // __cplusplus + +/// +/// Parses any formulas in the option (use RmReadDouble/RmReadInt instead) +/// +/// Pointer to the plugin measure +/// Option name to be read from skin +/// Default value for the option if it is not found, invalid, or a formula could not be parsed +/// Returns the option value as an double +/// +/// +/// PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) +/// { +/// double value = RmReadFormula(rm, L"Value", 20); +/// } +/// +/// +LIBRARY_EXPORT double __stdcall RmReadFormula(void* rm, LPCWSTR option, double defValue); + +/// +/// Returns a string, replacing any variables (or section variables) within the inputted string +/// +/// Pointer to the plugin measure +/// String with unresolved variables +/// Returns a string replacing any variables in the 'str' +/// +/// +/// PLUGIN_EXPORT double Update(void* data) +/// { +/// Measure* measure = (Measure*)data; +/// LPCWSTR myVar = RmReplaceVariables(measure->rm, L"#MyVar#"); // 'measure->rm' stored previously in the Initialize function +/// if (_wcsicmp(myVar, L"SOMETHING") == 0) { return 1.0; } +/// return 0.0; +/// } +/// +/// +LIBRARY_EXPORT LPCWSTR __stdcall RmReplaceVariables(void* rm, LPCWSTR str); + +/// +/// Converts a relative path to a absolute path (use RmReadPath where appropriate) +/// +/// Pointer to the plugin measure +/// String of path to be converted +/// Returns the absolute path of the relativePath value as a string (LPCWSTR) +/// +/// +/// PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) +/// { +/// std::wstring somePath = L"..\\SomeFolder"; +/// LPCWSTR path = RmPathToAbsolute(rm, somePath.c_str()); +/// } +/// +/// +LIBRARY_EXPORT LPCWSTR __stdcall RmPathToAbsolute(void* rm, LPCWSTR relativePath); + +/// +/// Executes a command +/// +/// Pointer to current skin (See RmGetSkin) +/// Bang to execute +/// No return type +/// +/// +/// PLUGIN_EXPORT double Update(void* data) +/// { +/// Measure* measure = (Measure*)data; +/// RmExecute(measure->skin, L"!SetVariable SomeVar 10"); // 'measure->skin' stored previously in the Initialize function +/// return 0.0; +/// } +/// +/// +LIBRARY_EXPORT void __stdcall RmExecute(void* skin, LPCWSTR command); + +/// +/// Retrieves data from the measure or skin (use the helper functions instead) +/// +/// Call RmGet() in the Initialize function and store the results for later use +/// Pointer to the plugin measure +/// Type of information to retrieve (see RmGetType) +/// Returns a pointer to an object which is determined by the 'type' +/// +/// +/// PLUGIN_EXPORT void Initialize(void** data, void* rm) +/// { +/// Measure* measure = new Measure; +/// *data = measure; +/// measure->hwnd = RmGet(rm, RMG_SKINWINDOWHANDLE); // 'measure->hwnd' defined as HWND in class scope +/// } +/// +/// +LIBRARY_EXPORT void* __stdcall RmGet(void* rm, int type); + +enum RmGetType +{ + RMG_MEASURENAME = 0, + RMG_SKIN = 1, + RMG_SETTINGSFILE = 2, + RMG_SKINNAME = 3, + RMG_SKINWINDOWHANDLE = 4 +}; + +/// +/// Sends a message to the Rainmeter log with source +/// +/// LOG_DEBUG messages are logged only when Rainmeter is in debug mode +/// Pointer to the plugin measure +/// Log type (LOG_ERROR, LOG_WARNING, LOG_NOTICE, or LOG_DEBUG) +/// Message to be logged +/// No return type +/// +/// +/// RmLog(rm, LOG_NOTICE, L"I am a 'notice' log message with a source"); +/// +/// +LIBRARY_EXPORT void __stdcall RmLog(void* rm, int level, LPCWSTR message); + +/// +/// Sends a formatted message to the Rainmeter log +/// +/// LOG_DEBUG messages are logged only when Rainmeter is in debug mode +/// Pointer to the plugin measure +/// Log level (LOG_ERROR, LOG_WARNING, LOG_NOTICE, or LOG_DEBUG) +/// Formatted message to be logged, follows printf syntax +/// Comma separated list of args referenced in the formatted message +/// No return type +/// +/// +/// std::wstring notice = L"notice"; +/// RmLogF(rm, LOG_NOTICE, L"I am a '%s' log message with a source", notice.c_str()); +/// +/// +LIBRARY_EXPORT void __cdecl RmLogF(void* rm, int level, LPCWSTR format, ...); + +/// +/// DEPRECATED: Use RmLog. Sends a message to the Rainmeter log. +/// +LIBRARY_EXPORT BOOL __cdecl LSLog(int level, LPCWSTR unused, LPCWSTR message); + +// +// Wrapper functions +// + +#ifndef LIBRARY_EXPORTS +/// +/// Retrieves the option defined in the skin file and converts a relative path to a absolute path +/// +/// Pointer to the plugin measure +/// Option name to be read from skin +/// Default value for the option if it is not found or invalid +/// Returns the absolute path of the option value as a string (LPCWSTR) +/// +/// +/// PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) +/// { +/// LPCWSTR path = RmReadPath(rm, L"MyPath", L"C:\\"); +/// } +/// +/// +__inline LPCWSTR RmReadPath(void* rm, LPCWSTR option, LPCWSTR defValue) +{ + LPCWSTR relativePath = RmReadString(rm, option, defValue, TRUE); + return RmPathToAbsolute(rm, relativePath); +} + +/// +/// Retrieves the option defined in the skin file and converts it to an integer +/// +/// If the option is a formula, the returned value will be the result of the parsed formula +/// Pointer to the plugin measure +/// Option name to be read from skin +/// Default value for the option if it is not found, invalid, or a formula could not be parsed +/// Returns the option value as an integer +/// +/// +/// PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) +/// { +/// int value = RmReadInt(rm, L"Value", 20); +/// } +/// +/// +__inline int RmReadInt(void* rm, LPCWSTR option, int defValue) +{ + return (int)RmReadFormula(rm, option, defValue); +} + +/// +/// Retrieves the option defined in the skin file and converts it to a double +/// +/// If the option is a formula, the returned value will be the result of the parsed formula +/// Pointer to the plugin measure +/// Option name to read from skin +/// Default value for the option if it is not found, invalid, or a formula could not be parsed +/// Returns the option value as a double +/// +/// +/// PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) +/// { +/// double value = RmReadDouble(rm, L"Value", 20.0); +/// } +/// +/// +__inline double RmReadDouble(void* rm, LPCWSTR option, double defValue) +{ + return RmReadFormula(rm, option, defValue); +} + +/// +/// Retrieves the name of the measure +/// +/// Call RmGetMeasureName() in the Initialize function and store the results for later use +/// Pointer to the plugin measure +/// Returns the current measure name as a string (LPCWSTR) +/// +/// +/// PLUGIN_EXPORT void Initialize(void** data, void* rm) +/// { +/// Measure* measure = new Measure; +/// *data = measure; +/// measure->myName = RmGetMeasureName(rm); // 'measure->myName' defined as a string (LPCWSTR) in class scope +/// } +/// +/// +__inline LPCWSTR RmGetMeasureName(void* rm) +{ + return (LPCWSTR)RmGet(rm, RMG_MEASURENAME); +} + +/// +/// Retrieves a path to the Rainmeter data file (Rainmeter.data). +/// +/// Call GetSettingsFile() in the Initialize function and store the results for later use +/// Returns the path and filename of the Rainmeter data file as a string (LPCWSTR) +/// +/// +/// PLUGIN_EXPORT void Initialize(void** data, void* rm) +/// { +/// Measure* measure = new Measure; +/// *data = measure; +/// if (rmDataFile == nullptr) { rmDataFile = RmGetSettingsFile(); } // 'rmDataFile' defined as a string (LPCWSTR) in global scope +/// } +/// +/// +__inline LPCWSTR RmGetSettingsFile() +{ + return (LPCWSTR)RmGet(NULL, RMG_SETTINGSFILE); +} + +/// +/// Retrieves an internal pointer to the current skin +/// +/// Call GetSkin() in the Initialize function and store the results for later use +/// Pointer to the plugin measure +/// Returns a pointer to the current skin +/// +/// +/// PLUGIN_EXPORT void Initialize(void** data, void* rm) +/// { +/// Measure* measure = new Measure; +/// *data = measure; +/// measure->mySkin = RmGetSkin(rm); // 'measure->mySkin' defined as a 'void*' in class scope +/// } +/// +/// +__inline void* RmGetSkin(void* rm) +{ + return (void*)RmGet(rm, RMG_SKIN); +} + +/// +/// Retrieves full path and name of the skin +/// +/// Call GetSkinName() in the Initialize function and store the results for later use +/// Pointer to the plugin measure +/// Returns the path and filename of the skin as a string (LPCWSTR) +/// +/// +/// PLUGIN_EXPORT void Initialize(void** data, void* rm) +/// { +/// Measure* measure = new Measure; +/// *data = measure; +/// skinName = RmGetSkinName(rm); } // 'measure->skinName' defined as a string (LPCWSTR) in class scope +/// } +/// +/// +__inline LPCWSTR RmGetSkinName(void* rm) +{ + return (LPCWSTR)RmGet(rm, RMG_SKINNAME); +} + +/// +/// Returns a pointer to the handle of the skin window (HWND) +/// +/// Call GetSkinWindow() in the Initialize function and store the results for later use +/// Pointer to the plugin measure +/// Returns a handle to the skin window as a HWND +/// +/// +/// PLUGIN_EXPORT void Initialize(void** data, void* rm) +/// { +/// Measure* measure = new Measure; +/// *data = measure; +/// measure->skinWindow = RmGetSkinWindow(rm); } // 'measure->skinWindow' defined as HWND in class scope +/// } +/// +/// +__inline HWND RmGetSkinWindow(void* rm) +{ + return (HWND)RmGet(rm, RMG_SKINWINDOWHANDLE); +} + +/// +/// DEPRECATED: Use RmLog(rm, type, message). Sends a message to the Rainmeter log. +/// +__inline void RmLog(int level, LPCWSTR message) +{ + LSLog(level, NULL, message); +} + +enum LOGLEVEL +{ + LOG_ERROR = 1, + LOG_WARNING = 2, + LOG_NOTICE = 3, + LOG_DEBUG = 4 +}; +#endif // LIBRARY_EXPORTS + +#endif diff --git a/Source/CPUTemp/Plugins/API/x32/Rainmeter.lib b/Source/CPUTemp/Plugins/API/x32/Rainmeter.lib new file mode 100644 index 0000000..4aa3af9 Binary files /dev/null and b/Source/CPUTemp/Plugins/API/x32/Rainmeter.lib differ diff --git a/Source/CPUTemp/Plugins/API/x64/Rainmeter.lib b/Source/CPUTemp/Plugins/API/x64/Rainmeter.lib new file mode 100644 index 0000000..6d9a41c Binary files /dev/null and b/Source/CPUTemp/Plugins/API/x64/Rainmeter.lib differ diff --git a/Source/CPUTemp/Plugins/PluginCPUTemp/CPUTempFunc.cpp b/Source/CPUTemp/Plugins/PluginCPUTemp/CPUTempFunc.cpp new file mode 100644 index 0000000..d0220fd --- /dev/null +++ b/Source/CPUTemp/Plugins/PluginCPUTemp/CPUTempFunc.cpp @@ -0,0 +1,31 @@ +#include "CPUTempFunc.h" + +DWORD GetCoreCount() +{ + SYSTEM_INFO info; + GetSystemInfo(&info); + return info.dwNumberOfProcessors; +} + +UINT GetTjMax() +{ + return _GetTjMax(); +} + +UINT GetTemp(BYTE index) +{ + return _GetTemp(index); +} + +UINT GetHighestTemp() +{ + int MaxTemp = -255; + DWORD coreCount = GetCoreCount(); + + for (UINT i = 1; i <= coreCount; ++i) + { + const int Temp = GetTemp(i); + if (MaxTemp < Temp) MaxTemp = Temp; + } + return MaxTemp; +} \ No newline at end of file diff --git a/Source/CPUTemp/Plugins/PluginCPUTemp/CPUTempFunc.h b/Source/CPUTemp/Plugins/PluginCPUTemp/CPUTempFunc.h new file mode 100644 index 0000000..81b3c66 --- /dev/null +++ b/Source/CPUTemp/Plugins/PluginCPUTemp/CPUTempFunc.h @@ -0,0 +1,7 @@ +#pragma once +#include "GetTemp.h" + +DWORD GetCoreCount(); +UINT GetTjMax(); +UINT GetTemp(BYTE index); +UINT GetHighestTemp(); \ No newline at end of file diff --git a/Plugin/CPUTemp/Source/CPUTempProxy.cpp b/Source/CPUTemp/Plugins/PluginCPUTemp/CPUTempProxy.cpp similarity index 85% rename from Plugin/CPUTemp/Source/CPUTempProxy.cpp rename to Source/CPUTemp/Plugins/PluginCPUTemp/CPUTempProxy.cpp index 9aa4b3e..d2b73ff 100644 --- a/Plugin/CPUTemp/Source/CPUTempProxy.cpp +++ b/Source/CPUTemp/Plugins/PluginCPUTemp/CPUTempProxy.cpp @@ -3,15 +3,18 @@ CoreTempProxy::CoreTempProxy(void) { - memset(&this->m_pCoreTempData, 0, sizeof(CoreTempSharedDataEx)); - + gIsAMD = (IsCpuid()) ? IsAMD() : FALSE; + RuningEn(gDriverPath); pdriver = new driver(OLS_DRIVER_ID, gDriverPath); _GetCoreCount(); - _GetTjMax(); + if (!gIsAMD) + { + _GetTjMax(); + } } CoreTempProxy::~CoreTempProxy(void) @@ -24,21 +27,25 @@ UINT CoreTempProxy::GetCoreLoad(int _index) const return this->m_pCoreTempData.uiLoad[_index]; } +//õCPU¶ȣʵ֣ UINT CoreTempProxy::GetTjMax() const { return this->m_pCoreTempData.uiTjMax; } +//õCPUʵ֣ UINT CoreTempProxy::GetCoreCount() const { return this->m_pCoreTempData.uiCoreCnt; } +//õCPU UINT CoreTempProxy::GetCPUCount() const { return this->m_pCoreTempData.uiCPUCnt; } +//õCPU¶ȣʵ֣ UINT CoreTempProxy::GetTemp(int _index) const { return this->m_pCoreTempData.uiTemp[_index]; @@ -64,6 +71,7 @@ float CoreTempProxy::GetMultiplier() const return this->m_pCoreTempData.fMultiplier; } +//õCPU LPCSTR CoreTempProxy::GetCPUName() const { return this->m_pCoreTempData.sCPUName; @@ -109,15 +117,7 @@ float CoreTempProxy::GetMultiplier(int _index) const return this->m_pCoreTempData.fMultipliers[_index]; } -const CoreTempSharedDataEx &CoreTempProxy::GetDataStruct() const -{ - return this->m_pCoreTempData; -} -bool CoreTempProxy::GetData() -{ - return this->m_SharedMem.ReadSharedMem(&this->m_pCoreTempData); -} void CoreTempProxy::_GetCoreCount() { @@ -135,9 +135,17 @@ void CoreTempProxy::_GetTjMax() void CoreTempProxy::_GetTemp(int _index) { - DWORD eax = 0, edx = 0; - pdriver->RdmsrTx(0x19C, &eax, &edx, _index); - m_pCoreTempData.uiTemp[_index] = m_pCoreTempData.uiTjMax - ((eax & 0x7f0000) >> 16); + if (gIsAMD) + { + m_pCoreTempData.uiTemp[_index] = pdriver->GetTemp(_index); + } + else + { + DWORD eax = 0, edx = 0; + pdriver->RdmsrTx(0x19C, &eax, &edx, _index); + m_pCoreTempData.uiTemp[_index] = m_pCoreTempData.uiTjMax - ((eax & 0x7f0000) >> 16); + } + } LPCWSTR CoreTempProxy::GetErrorMessage() diff --git a/Plugin/CPUTemp/Source/CPUTempProxy.h b/Source/CPUTemp/Plugins/PluginCPUTemp/CPUTempProxy.h similarity index 60% rename from Plugin/CPUTemp/Source/CPUTempProxy.h rename to Source/CPUTemp/Plugins/PluginCPUTemp/CPUTempProxy.h index 36c6729..7a75bf6 100644 --- a/Plugin/CPUTemp/Source/CPUTempProxy.h +++ b/Source/CPUTemp/Plugins/PluginCPUTemp/CPUTempProxy.h @@ -1,6 +1,6 @@ #pragma once -#include "SharedMem.h" #include "driver.h" +#include "running_environment.h" #include "../../Library/Export.h" #define UNKNOWN_EXCEPTION 0x20000000 @@ -30,9 +30,7 @@ class CoreTempProxy float GetPower(int Index) const; float GetMultiplier(int Index) const; - const CoreTempSharedDataEx &GetDataStruct() const; - bool GetData(); DWORD GetDllError() const { return GetLastError(); } LPCWSTR GetErrorMessage(); @@ -40,10 +38,32 @@ class CoreTempProxy void _GetTjMax(); void _GetTemp(int _index); private: - CSharedMemClient m_SharedMem; - CoreTempSharedDataEx m_pCoreTempData; - WCHAR m_ErrorMessage[100]; + struct core_temp_data + { + // Original structure (CoreTempSharedData) + unsigned int uiLoad[256]; + unsigned int uiTjMax; + unsigned int uiCoreCnt; + unsigned int uiCPUCnt; + unsigned int uiTemp[256]; + float fVID; + float fCPUSpeed; + float fFSBSpeed; + float fMultiplier; + char sCPUName[100]; + unsigned char ucFahrenheit; + unsigned char ucDeltaToTjMax; + // uiStructVersion = 2 + unsigned char ucTdpSupported; + unsigned char ucPowerSupported; + unsigned int uiStructVersion; + unsigned int uiTdp[128]; + float fPower[128]; + float fMultipliers[256]; + } m_pCoreTempData; + WCHAR m_ErrorMessage[100]; + INT gIsAMD = FALSE; TCHAR gDriverPath[MAX_PATH]; driver* pdriver; }; diff --git a/Source/CPUTemp/Plugins/PluginCPUTemp/DriverFunc.cpp b/Source/CPUTemp/Plugins/PluginCPUTemp/DriverFunc.cpp new file mode 100644 index 0000000..ede2017 --- /dev/null +++ b/Source/CPUTemp/Plugins/PluginCPUTemp/DriverFunc.cpp @@ -0,0 +1,176 @@ +#include "DriverFunc.h" + +BOOL WINAPI Rdmsr(DWORD index, PDWORD eax, PDWORD edx) +{ + TCHAR gDriverPath[MAX_PATH]; + RuningEn(gDriverPath); + Driver* pDriver = new Driver(OLS_DRIVER_ID, gDriverPath); + HANDLE gHandle = pDriver->GetHandle(); + if (gHandle == INVALID_HANDLE_VALUE) return FALSE; + + if (eax == NULL || edx == NULL) return FALSE; + + DWORD returnedLength = 0; + BOOL result = FALSE; + BYTE outBuf[8] = { 0 }; + + result = DeviceIoControl( + gHandle, // Ҫִв豸豸ͨǾĿ¼ļʹ CreateFile 򿪻ȡ豸ļע + IOCTL_OLS_READ_MSR, // Ŀƴ룬ֵʶҪִеضԼִиò豸ͣйؿƴбοע + &index, // ѡָ뻺ָ롣 + sizeof(index), // 뻺ֽΪλĴСλΪֽڡ + &outBuf, // ѡָָ롣 + sizeof(outBuf), // ֽΪλĴСλΪֽڡ + &returnedLength, // ѡָһָ룬ñմ洢еݵĴС + NULL // ѡָOVERLAPPEDṹָ롣 + ); + + delete pDriver; + + if (result) + { + memcpy(eax, outBuf, 4); + memcpy(edx, outBuf + 4, 4); + return TRUE; + } + else return FALSE; +} + +BOOL WINAPI RdmsrTx(DWORD index, PDWORD eax, PDWORD edx, DWORD_PTR threadAffinityMask) +{ + BOOL result = FALSE; + DWORD_PTR mask = 0; + HANDLE hThread = NULL; + + hThread = GetCurrentThread(); + mask = SetThreadAffinityMask(hThread, threadAffinityMask); + if (mask == 0) return FALSE; + + result = Rdmsr(index, eax, edx); + + if (hThread) SetThreadAffinityMask(hThread, mask); + + return result; +} + +BOOL pciConfigRead(DWORD pciAddress, DWORD regAddress, PBYTE value, DWORD size, PDWORD error) +{ + TCHAR gDriverPath[MAX_PATH]; + RuningEn(gDriverPath); + Driver* pDriver = new Driver(OLS_DRIVER_ID, gDriverPath); + HANDLE gHandle = pDriver->GetHandle(); + + if (gHandle == INVALID_HANDLE_VALUE || value == NULL || (size == 2 && (regAddress & 1) != 0) || (size == 4 && (regAddress & 3) != 0)) + { + return FALSE; + } + + DWORD returnedLength = 0; + BOOL result = FALSE; + OLS_READ_PCI_CONFIG_INPUT inBuf; + + inBuf.PciAddress = pciAddress; + inBuf.PciOffset = regAddress; + + result = DeviceIoControl( + gHandle, + IOCTL_OLS_READ_PCI_CONFIG, + &inBuf, + sizeof(inBuf), + value, + size, + &returnedLength, + NULL + ); + + delete pDriver; + + if (error != NULL) + { + *error = GetLastError(); + } + + if (result) return TRUE; + else return FALSE; +} + +DWORD WINAPI ReadPciConfigDword(DWORD pciAddress, BYTE regAddress) +{ + DWORD ret; + if (pciConfigRead(pciAddress, regAddress, (PBYTE)&ret, sizeof(ret), NULL)) + { + return ret; + } + else + { + return 0xFFFFFFFF; + } +} + +DWORD WINAPI ReadIoPortDword(WORD port) +{ + TCHAR gDriverPath[MAX_PATH]; + RuningEn(gDriverPath); + Driver* pDriver = new Driver(OLS_DRIVER_ID, gDriverPath); + HANDLE gHandle = pDriver->GetHandle(); + + if (gHandle == INVALID_HANDLE_VALUE) + { + return 0; + } + + DWORD returnedLength = 0; + BOOL result = FALSE; + DWORD port4 = port; + DWORD value = 0; + + result = DeviceIoControl( + gHandle, + IOCTL_OLS_READ_IO_PORT_DWORD, + &port4, + sizeof(port4), // required 4 bytes + &value, + sizeof(value), + &returnedLength, + NULL + ); + + delete pDriver; + + return value; +} + +BOOL WINAPI WriteIoPortDword(WORD port, DWORD value) +{ + TCHAR gDriverPath[MAX_PATH]; + RuningEn(gDriverPath); + Driver* pDriver = new Driver(OLS_DRIVER_ID, gDriverPath); + HANDLE gHandle = pDriver->GetHandle(); + + if (gHandle == INVALID_HANDLE_VALUE) return FALSE; + + DWORD returnedLength = 0; + BOOL result = FALSE; + DWORD length = 0; + OLS_WRITE_IO_PORT_INPUT inBuf; + + inBuf.LongData = value; + inBuf.PortNumber = port; + length = offsetof(OLS_WRITE_IO_PORT_INPUT, CharData) + sizeof(inBuf.LongData); + + result = DeviceIoControl( + gHandle, + IOCTL_OLS_WRITE_IO_PORT_DWORD, + &inBuf, + length, + NULL, + 0, + &returnedLength, + NULL + ); + + delete pDriver; + + if (result) return TRUE; + else return FALSE; +} \ No newline at end of file diff --git a/Source/CPUTemp/Plugins/PluginCPUTemp/DriverFunc.h b/Source/CPUTemp/Plugins/PluginCPUTemp/DriverFunc.h new file mode 100644 index 0000000..8655c84 --- /dev/null +++ b/Source/CPUTemp/Plugins/PluginCPUTemp/DriverFunc.h @@ -0,0 +1,29 @@ +#pragma once + +#include "Driver.h" +#include "running_environment.h" + +#define IOCTL_OLS_READ_MSR CTL_CODE(OLS_TYPE, 0x821, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_OLS_READ_PCI_CONFIG CTL_CODE(OLS_TYPE, 0x851, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_OLS_READ_IO_PORT_DWORD CTL_CODE(OLS_TYPE, 0x835, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_OLS_WRITE_IO_PORT_DWORD CTL_CODE(OLS_TYPE, 0x838, METHOD_BUFFERED, FILE_WRITE_ACCESS) + +typedef struct _OLS_READ_PCI_CONFIG_INPUT { + ULONG PciAddress; + ULONG PciOffset; +}OLS_READ_PCI_CONFIG_INPUT; +typedef struct _OLS_WRITE_IO_PORT_INPUT { + ULONG PortNumber; + union { + ULONG LongData; + USHORT ShortData; + UCHAR CharData; + }; +}OLS_WRITE_IO_PORT_INPUT; + +BOOL WINAPI Rdmsr(DWORD index, PDWORD eax, PDWORD edx); +BOOL WINAPI RdmsrTx(DWORD index, PDWORD eax, PDWORD edx, DWORD_PTR threadAffinityMask); +BOOL pciConfigRead(DWORD pciAddress, DWORD regAddress, PBYTE value, DWORD size, PDWORD error); +DWORD WINAPI ReadPciConfigDword(DWORD pciAddress, BYTE regAddress); +DWORD WINAPI ReadIoPortDword(WORD port); +BOOL WINAPI WriteIoPortDword(WORD port, DWORD value); \ No newline at end of file diff --git a/Source/CPUTemp/Plugins/PluginCPUTemp/GetTemp.cpp b/Source/CPUTemp/Plugins/PluginCPUTemp/GetTemp.cpp new file mode 100644 index 0000000..30c5430 --- /dev/null +++ b/Source/CPUTemp/Plugins/PluginCPUTemp/GetTemp.cpp @@ -0,0 +1,109 @@ +#include "GetTemp.h" + +BOOL get_bus_dev(UINT devieid, INT* BUS, INT* DEV) +{ + UINT address, value; + for (UINT bus = 0; bus < 128; bus++) + { + for (UINT dev = 0; dev < 32; dev++) + { + for (UINT func = 0; func < 8; func++) + { + address = PciBusDevFunc(bus, dev, func); + value = ReadPciConfigDword(address, 0x00); + if (value == devieid) + { + *BUS = bus; + *DEV = dev; + return TRUE; + } + } + } + } + return FALSE; +} + +DWORD get_temp() +{ + INT bus, dev; + if (!get_bus_dev(0x1103, &bus, &dev)) + { + return FALSE; + } + + UINT slot = DeviceSlot(dev, 0x3); + UINT IO_ADDRE = GetDevice(bus, slot, 0xE4); + + DWORD CPUTemp = 0; + + if (WriteIoPortDword(0xCF8, IO_ADDRE)) CPUTemp = ReadIoPortDword(0xCFC); + + INT CPUInfo[4], g_Offset, K = 0; + + __cpuid(CPUInfo, 1); + INT t = CPUInfo[0]; + INT family = ((t >> 20) & 0xFF) + ((t >> 8) & 0xF), model = ((t >> 12) & 0xF0) + ((t >> 4) & 0xF), stepping = t & 0xF; + + if (family == 0xF && !(((model == 4) && (stepping == 0)) || ((model == 5) && (stepping <= 1)))) K = 8; + if (family > 0xF) K = 10; + + if (model >= 0x69 && model != 0xc1 && model != 0x6c && model != 0x7c) g_Offset = 49 - 21; + else g_Offset = 49; + + CPUTemp = (CPUTemp >> 16) & 0xFF; + + if (K == 8) CPUTemp -= g_Offset; + if (K == 10) CPUTemp /= 8; + + return CPUTemp; +} + +DWORD GetAMDTemp(DWORD_PTR threadAffinityMask) +{ + DWORD result = FALSE; + DWORD_PTR mask = 0; + HANDLE hThread = NULL; + + if (IsNT()) + { + hThread = GetCurrentThread(); + mask = SetThreadAffinityMask(hThread, threadAffinityMask); + if (mask == 0) + { + return FALSE; + } + } + + result = get_temp(); + + if (IsNT() && hThread != NULL) + { + SetThreadAffinityMask(hThread, mask); + } + + return result; +} + +int _GetTjMax() +{ + DWORD eax = 0, edx = 0; + Rdmsr(0x1A2, &eax, &edx); + return (eax & 0xff0000) >> 16; +} + +int _GetTemp(int _index) +{ + if (!IsNT()) return 0; + + if (IsAMD()) + { + return GetAMDTemp(_index); + } + else + { + if (!IsMsr()) return 0; + DWORD eax = 0, edx = 0; + RdmsrTx(0x19C, &eax, &edx, _index); + return _GetTjMax() - ((eax & 0x7f0000) >> 16); + } +} \ No newline at end of file diff --git a/Source/CPUTemp/Plugins/PluginCPUTemp/GetTemp.h b/Source/CPUTemp/Plugins/PluginCPUTemp/GetTemp.h new file mode 100644 index 0000000..ccac0c8 --- /dev/null +++ b/Source/CPUTemp/Plugins/PluginCPUTemp/GetTemp.h @@ -0,0 +1,19 @@ +#pragma once + +#include "DriverFunc.h" + + + +#define PciBusDevFunc(bus,dev,func) (((bus&0xFF)<<8) | ((dev&0x1F)<<3) | (func&7)) +#define PciGetBus(address) ((address>>8) & 0xFF) +#define PciGetDev(address) ((address>>3) & 0x1F) +#define PciGetFunc(address) (address&7) + +#define DeviceSlot(uDevice, uFunction) ((((uDevice)&0x1f)<<3)|((uFunction)&0x07)) +#define GetDevice(uBus,uSlot,uAddress) (0x80000000L |((uBus&0xff)<<16)|(uSlot<<8)|(uAddress&~3)) + +BOOL get_bus_dev(UINT devieid, INT* BUS, INT* DEV); +DWORD get_temp(); +DWORD GetAMDTemp(DWORD_PTR threadAffinityMask); +int _GetTjMax(); +int _GetTemp(int _index); diff --git a/Plugin/CPUTemp/Source/PluginCPUTemp.aps b/Source/CPUTemp/Plugins/PluginCPUTemp/PluginCPUTemp.aps similarity index 91% rename from Plugin/CPUTemp/Source/PluginCPUTemp.aps rename to Source/CPUTemp/Plugins/PluginCPUTemp/PluginCPUTemp.aps index 04fc2fd..51bcb40 100644 Binary files a/Plugin/CPUTemp/Source/PluginCPUTemp.aps and b/Source/CPUTemp/Plugins/PluginCPUTemp/PluginCPUTemp.aps differ diff --git a/Plugin/CPUTemp/Source/PluginCPUTemp.cpp b/Source/CPUTemp/Plugins/PluginCPUTemp/PluginCPUTemp.cpp similarity index 61% rename from Plugin/CPUTemp/Source/PluginCPUTemp.cpp rename to Source/CPUTemp/Plugins/PluginCPUTemp/PluginCPUTemp.cpp index 45f043c..79f5d00 100644 --- a/Plugin/CPUTemp/Source/PluginCPUTemp.cpp +++ b/Source/CPUTemp/Plugins/PluginCPUTemp/PluginCPUTemp.cpp @@ -7,7 +7,7 @@ #include #include -#include "CPUTempProxy.h" +#include "CPUTempFunc.h" #include "../../Library/Export.h" // Rainmeter's exported functions enum eMeasureType @@ -40,13 +40,8 @@ struct MeasureData rm(nullptr) {} }; - - eMeasureType convertStringToMeasureType(LPCWSTR i_String, void* rm); bool areStringsEqual(LPCWSTR i_String1, LPCWSTR i_Strting2); -int getHighestTemp(void* rm); - -CoreTempProxy proxy; PLUGIN_EXPORT void Initialize(void** data, void* rm) { @@ -61,12 +56,9 @@ PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) UNREFERENCED_PARAMETER(maxValue); MeasureData* measure = (MeasureData*)data; - LPCWSTR value = RmReadString(rm, L"CoreTempType", L"Temperature"); + LPCWSTR value = RmReadString(rm, L"CPUTempType", L"Temperature"); measure->type = convertStringToMeasureType(value, rm); - - measure->index = RmReadInt(rm, L"CoreTempIndex", 1); - - //RmLogF(rm, LOG_DEBUG, L"Reload:%i", measure->type); + measure->index = RmReadInt(rm, L"CPUTempIndex", 1); } PLUGIN_EXPORT double Update(void* data) @@ -75,64 +67,46 @@ PLUGIN_EXPORT double Update(void* data) MeasureData* measure = (MeasureData*)data; double result = 0; - //RmLogF(measure->rm, LOG_DEBUG, L"Update"); - - //if (proxy.GetData()) + switch (measure->type) { - //RmLogF(measure->rm, LOG_DEBUG, L"GetData"); - - switch (measure->type) - { - case MeasureTemperature: - proxy._GetTemp(measure->index); - result = proxy.GetTemp(measure->index); - break; - - case MeasureMaxTemperature: - result = getHighestTemp(measure->rm); - //RmLogF(measure->rm, LOG_DEBUG, L"MeasureMaxTemperature:%i", result); - break; - - case MeasureTjMax: - result = proxy.GetTjMax(); - break; - - case MeasureLoad: - result = proxy.GetCoreLoad(measure->index); - break; - - case MeasureVid: - result = proxy.GetVID(); - break; - - case MeasureCpuSpeed: - result = proxy.GetCPUSpeed(); - break; - - case MeasureBusSpeed: - result = proxy.GetFSBSpeed(); - break; - - case MeasureBusMultiplier: - result = proxy.GetMultiplier(); - break; - - case MeasureCoreSpeed: - result = (double)proxy.GetMultiplier(measure->index) * proxy.GetFSBSpeed(); - break; - - case MeasureCoreBusMultiplier: - result = proxy.GetMultiplier(measure->index); - break; - - case MeasureTdp: - result = proxy.GetTdp(measure->index); - break; - - case MeasurePower: - result = proxy.GetPower(measure->index); - break; - } + case MeasureTemperature: + result = GetTemp(measure->index); + break; + + case MeasureMaxTemperature: + result = GetHighestTemp(); + break; + + case MeasureTjMax: + result = GetTjMax(); + break; + + case MeasureLoad: + break; + + case MeasureVid: + break; + + case MeasureCpuSpeed: + break; + + case MeasureBusSpeed: + break; + + case MeasureBusMultiplier: + break; + + case MeasureCoreSpeed: + break; + + case MeasureCoreBusMultiplier: + break; + + case MeasureTdp: + break; + + case MeasurePower: + break; } return result; @@ -146,11 +120,11 @@ PLUGIN_EXPORT LPCWSTR GetString(void* data) switch (measure->type) { case MeasureVid: - _snwprintf_s(buffer, _TRUNCATE, L"%.4f", proxy.GetVID()); + _snwprintf_s(buffer, _TRUNCATE, L"%.4f", 0.0); break; case MeasureCpuName: - _snwprintf_s(buffer, _TRUNCATE, L"%S", proxy.GetCPUName()); + _snwprintf_s(buffer, _TRUNCATE, L"%S", "0"); break; default: @@ -230,33 +204,8 @@ eMeasureType convertStringToMeasureType(LPCWSTR i_String, void* rm) else { result = MeasureTemperature; - RmLogF(rm, LOG_WARNING, L"Invalid CoreTempType: %s", i_String); + RmLogF(rm, LOG_WARNING, L"ЧCPUTempType: %s", i_String); } return result; -} - - - -int getHighestTemp(void* rm) -{ - //RmLogF(rm, LOG_DEBUG, L"getHighestTemp"); - - int temp = -255; - UINT coreCount = proxy.GetCoreCount(); - - //RmLogF(rm, LOG_DEBUG, L"%i", coreCount); - - for (UINT i = 1; i <= coreCount; ++i) - { - //RmLogF(rm, LOG_DEBUG, L"#%i", i); - proxy._GetTemp(i); - const int getTemp = proxy.GetTemp(i); - if (temp < getTemp) - { - temp = getTemp; - } - } - - return temp; -} +} \ No newline at end of file diff --git a/Plugin/CPUTemp/Source/PluginCPUTemp.rc b/Source/CPUTemp/Plugins/PluginCPUTemp/PluginCPUTemp.rc similarity index 84% rename from Plugin/CPUTemp/Source/PluginCPUTemp.rc rename to Source/CPUTemp/Plugins/PluginCPUTemp/PluginCPUTemp.rc index 3acf998..86ed266 100644 --- a/Plugin/CPUTemp/Source/PluginCPUTemp.rc +++ b/Source/CPUTemp/Plugins/PluginCPUTemp/PluginCPUTemp.rc @@ -7,7 +7,7 @@ // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,3,0 + FILEVERSION 1,0,5,0 PRODUCTVERSION PRODUCTVER FILEFLAGSMASK 0x17L #ifdef _DEBUG @@ -23,8 +23,8 @@ VS_VERSION_INFO VERSIONINFO { BLOCK "040904E4" { - VALUE "FileVersion", "1.0.3.0" - VALUE "LegalCopyright", "Copyright (C) 2020 - jmdyz" + VALUE "FileVersion", "1.0.5.0" + VALUE "LegalCopyright", " 2020 - jmdyz" VALUE "ProductName", "Rainmeter" #ifdef _WIN64 VALUE "ProductVersion", STRPRODUCTVER " (64-bit)" diff --git a/Plugin/CPUTemp/Source/PluginCPUTemp.vcxproj b/Source/CPUTemp/Plugins/PluginCPUTemp/PluginCPUTemp.vcxproj similarity index 85% rename from Plugin/CPUTemp/Source/PluginCPUTemp.vcxproj rename to Source/CPUTemp/Plugins/PluginCPUTemp/PluginCPUTemp.vcxproj index 5c0972f..ec3e86a 100644 --- a/Plugin/CPUTemp/Source/PluginCPUTemp.vcxproj +++ b/Source/CPUTemp/Plugins/PluginCPUTemp/PluginCPUTemp.vcxproj @@ -18,19 +18,21 @@ - - + + + + - - - + + + + - diff --git a/Source/CPUTemp/Plugins/PluginCPUTemp/PluginCPUTemp.vcxproj.user b/Source/CPUTemp/Plugins/PluginCPUTemp/PluginCPUTemp.vcxproj.user new file mode 100644 index 0000000..88a5509 --- /dev/null +++ b/Source/CPUTemp/Plugins/PluginCPUTemp/PluginCPUTemp.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/CPUTemp/Plugins/PluginCPUTemp/driver.cpp b/Source/CPUTemp/Plugins/PluginCPUTemp/driver.cpp new file mode 100644 index 0000000..6bf9080 --- /dev/null +++ b/Source/CPUTemp/Plugins/PluginCPUTemp/driver.cpp @@ -0,0 +1,390 @@ +#pragma warning(disable:4996) +#include "Driver.h" + + +Driver::Driver(LPCTSTR gDriverId, LPCTSTR gDriverPath) : + DriverId(gDriverId), + DriverPath(gDriverPath) +{ + NewDriver(); +} + +Driver::~Driver() +{ + DeleteDriver(); + if (hSCManager != NULL) CloseServiceHandle(hSCManager); +} + +HANDLE Driver::GetHandle() +{ + return gHandle; +} + +#ifdef _DEBUG +VOID Driver::GetFormatTime() +{ + SYSTEMTIME wtm; + GetLocalTime(&wtm); + sprintf(tmp, "[%02d:%02d:%02d.%03d]", wtm.wHour, wtm.wMinute, wtm.wSecond, wtm.wMilliseconds); + fputs(tmp, fp); +} +#endif // _DEBUG + +BOOL Driver::NewDriver() +{ + hSCManager = OpenSCManager( + NULL, //ĿNULLʾؼ + NULL, //ϵͳݿ⣬ΪSERVICES_ACTIVE_DATABASEΪNULLʾĬϴSERVICES_ACTIVE_DATABASEϵͳݿ⣩ + SC_MANAGER_ALL_ACCESS //SCMȨޣȨޣ + ); +#ifdef _DEBUG + DWORD error = GetLastError(); + GetFormatTime(); + fputs("򿪷ϵͳݿ⣨NewDriver->", fp); + if (hSCManager == NULL) + { + snprintf(tmp, sizeof(tmp), "ʧ(룺%d)\n", error); + fputs(tmp, fp); + return FALSE; + } + else fputs("ɹ\n", fp); +#else + if (hSCManager == NULL) return FALSE; +#endif + + if (!OpenDriver()) + { + DeleteDriver(); + if (InstallDriver()) + { + if (StartDriver()) + { + OpenDriver(); + } + } + else return FALSE; + } + + return TRUE; +} + +BOOL Driver::OpenDriver() +{ + BOOL rCode = FALSE; + //ж󣬲һЩľ + gHandle = CreateFile( + _T("\\\\.\\") OLS_DRIVER_ID, //Ҫ򿪵ļ + GENERIC_READ | GENERIC_WRITE, //Ϊ GENERIC_READ ʾ豸жʣΪ GENERIC_WRITE ʾ豸дʣʹã + 0, //FILE_SHARE_READ / FILE_SHARE_WRITE ʾļй + NULL, //SECURITY_ATTRIBUTES ָһ SECURITY_ATTRIBUTES ṹָ룬ļİȫԣϵͳֵ֧Ļ + OPEN_EXISTING, //ļѾڡ豸Ҫ + FILE_ATTRIBUTE_NORMAL, //Ĭ + NULL //Ϊ㣬ָһļļļиչ + ); + if (gHandle == INVALID_HANDLE_VALUE) rCode = FALSE; + else rCode = TRUE; + +#ifdef _DEBUG + DWORD error = GetLastError(); + GetFormatTime(); + fputs("OpenDriver->", fp); + if (!rCode) + { + snprintf(tmp, sizeof(tmp), "ʧܣ룺%d\n", error); + fputs(tmp, fp); + } + else fputs("ɹ\n",fp); +#endif + return rCode; +} + +BOOL Driver::InstallDriver() +{ + SC_HANDLE hService = NULL; + BOOL rCode = FALSE; + DWORD error = NO_ERROR; + + EnableSeLoadDriverPrivilege(); + //һ󣬲ӽSCMݿ + hService = CreateService( + hSCManager, //SCMݿͬʱþҪSC_MANAGER_CREATE_SERVICEȨ + DriverId, //Ҫװ֣ɳ256ַܺ/\ַͬʱСд + DriverId, //ʾ + SERVICE_ALL_ACCESS, //ԷȨ + SERVICE_KERNEL_DRIVER, //ͣ + SERVICE_DEMAND_START, //ѡһStartServiceʱSCM + SERVICE_ERROR_NORMAL, //ʽ¼־м¼󣬵в + DriverPath, //· + NULL, //ڼ˳˷ƣ÷飬ָ NULL ַ + NULL, //ָ lpLoadOrderGroup ָΨһıֵı еıǩָ NULL + NULL, //շָƵķ˳ϵͳʼ֮ǰ˫ָֹ롣 ûκϵָΪ NULL ַ + NULL, //÷ӦеʻƣʹLocalSystemʻ + NULL //lpServiceStartNameָʻ롣 ʻû룬LocalServiceNetworkServiceLocalSystemʻи÷ָһַNULL + ); + + if (hService == NULL) + { + error = GetLastError(); + if (error == ERROR_SERVICE_EXISTS) + { + rCode = TRUE; + } + } + else + { + rCode = TRUE; + CloseServiceHandle(hService); + } +#ifdef _DEBUG + GetFormatTime(); + fputs("InstallDriver->", fp); + if (!rCode) + { + snprintf(tmp, sizeof(tmp), "ʧܣ룺%d\n", error); + fputs(tmp, fp); + } + else fputs("ɹ\n", fp); +#endif + return rCode; +} + +BOOL Driver::StartDriver() +{ + SC_HANDLE hService = NULL; + BOOL rCode = FALSE; + DWORD error = NO_ERROR; + + hService = OpenService(hSCManager, DriverId, SERVICE_ALL_ACCESS); +#ifdef _DEBUG + GetFormatTime(); + fputs("򿪷StartDriver->", fp); + if (hService != NULL) + { + fputs("ɹ\n", fp); + GetFormatTime(); + fputs("зStartDriver->", fp); + if (!StartService(hService, 0, NULL)) + { + error = GetLastError(); + if (error == ERROR_SERVICE_ALREADY_RUNNING) + { + fputs("ɹ\n", fp); + rCode = TRUE; + } + else + { + fputs("ʧ", fp); + snprintf(tmp, sizeof(tmp), "(룺%d)\n", error); + fputs(tmp, fp); + } + } + else + { + fputs("ɹ\n", fp); + rCode = TRUE; + } + CloseServiceHandle(hService); + } + else + { + error = GetLastError(); + fputs("ʧ", fp); + snprintf(tmp, sizeof(tmp), "(룺%d)\n", error); + fputs(tmp, fp); + } + return rCode; +#else + if (hService != NULL) + { + if (!StartService(hService, 0, NULL)) + { + error = GetLastError(); + if (error == ERROR_SERVICE_ALREADY_RUNNING) + { + rCode = TRUE; + } + } + else + { + rCode = TRUE; + } + CloseServiceHandle(hService); + } + return rCode; +#endif // DEBUG +} + +BOOL Driver::RemoveDriver() +{ + SC_HANDLE hService = NULL; + BOOL rCode = FALSE; + DWORD error = NO_ERROR; + hService = OpenService(hSCManager, DriverId, SERVICE_ALL_ACCESS); + + if (hService == NULL) + { + rCode = TRUE; + } + else + { + rCode = DeleteService(hService); + error = GetLastError(); + CloseServiceHandle(hService); + } +#ifdef _DEBUG + GetFormatTime(); + fputs("ɾRemoveDriver->", fp); + if (rCode) fputs("ɹ\n", fp); + else + { + fputs("ʧ", fp); + snprintf(tmp, sizeof(tmp), "(룺%d)\n", error); + fputs(tmp, fp); + } +#endif // _DEBUG + return rCode; +} + +BOOL Driver::StopDriver() +{ + SC_HANDLE hService = NULL; + BOOL rCode = FALSE; + SERVICE_STATUS serviceStatus; + DWORD error = NO_ERROR; + + hService = OpenService(hSCManager, DriverId, SERVICE_ALL_ACCESS); + + if (hService != NULL) + { + EnableSeLoadDriverPrivilege(); + rCode = ControlService(hService, SERVICE_CONTROL_STOP, &serviceStatus); + error = GetLastError(); + CloseServiceHandle(hService); + } +#ifdef _DEBUG + GetFormatTime(); + fputs("ֹͣStopDriver->", fp); + if (rCode) fputs("ɹ\n", fp); + else + { + fputs("ʧ", fp); + snprintf(tmp, sizeof(tmp), "룺%d\n", error); + fputs(tmp, fp); + } +#endif // _DEBUG + return rCode; +} + +BOOL Driver::SystemInstallDriver() +{ + SC_HANDLE hService = NULL; + BOOL rCode = FALSE; + DWORD error = NO_ERROR; + + hService = OpenService(hSCManager, DriverId, SERVICE_ALL_ACCESS); + + if (hService != NULL) + { + rCode = ChangeServiceConfig(hService, + SERVICE_KERNEL_DRIVER, + SERVICE_BOOT_START, + SERVICE_ERROR_NORMAL, + DriverPath, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + ); + error = GetLastError(); + CloseServiceHandle(hService); + } + + return rCode; +} + +BOOL Driver::IsSystemInstallDriver() +{ + SC_HANDLE hService = NULL; + BOOL rCode = FALSE; + DWORD dwSize; + LPQUERY_SERVICE_CONFIG lpServiceConfig = NULL; + + hService = OpenService(hSCManager, DriverId, SERVICE_ALL_ACCESS); + + if (hService != NULL) + { + if (QueryServiceConfig(hService, NULL, 0, &dwSize) == 0 && GetLastError() == ERROR_INSUFFICIENT_BUFFER) + { + lpServiceConfig = (LPQUERY_SERVICE_CONFIG)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwSize); + } + + if (QueryServiceConfig(hService, lpServiceConfig, dwSize, &dwSize) && lpServiceConfig) + { + if (lpServiceConfig->dwStartType == SERVICE_AUTO_START) + { + rCode = TRUE; + } + } + + CloseServiceHandle(hService); + + HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, lpServiceConfig); + } + + return rCode; +} + +VOID Driver::DeleteDriver() +{ + if (gHandle != INVALID_HANDLE_VALUE) + { + CloseHandle(gHandle); + gHandle = INVALID_HANDLE_VALUE; + } + StopDriver(); + RemoveDriver(); +} + +BOOL Driver::EnableSeLoadDriverPrivilege() +{ + HANDLE hToken; + LUID sedebugnameValue; + TOKEN_PRIVILEGES tkp; + + if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) { + return false; + } + + if (!LookupPrivilegeValue(NULL, SE_LOAD_DRIVER_NAME, &sedebugnameValue)) + { + __try + { + if (hToken) + { + CloseHandle(hToken); + } + } + __except (EXCEPTION_EXECUTE_HANDLER) {}; + return false; + } + + tkp.PrivilegeCount = 1; + tkp.Privileges[0].Luid = sedebugnameValue; + tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; + if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL)) + { + __try + { + if (hToken) + { + CloseHandle(hToken); + } + } + __except (EXCEPTION_EXECUTE_HANDLER) {}; + return false; + } + + return true; +} \ No newline at end of file diff --git a/Source/CPUTemp/Plugins/PluginCPUTemp/driver.h b/Source/CPUTemp/Plugins/PluginCPUTemp/driver.h new file mode 100644 index 0000000..9bd7cfa --- /dev/null +++ b/Source/CPUTemp/Plugins/PluginCPUTemp/driver.h @@ -0,0 +1,46 @@ +#pragma once + +#include +#include +#include + +#ifdef _DEBUG +#include +#include +#endif + +#define OLS_TYPE 40000 + +#define OLS_DRIVER_ID _T("WinRing0_1_2_0") + + +class Driver +{ +public: + Driver(LPCTSTR gDriverId, LPCTSTR gDriverPath); + HANDLE GetHandle(); + ~Driver(); +private: + HANDLE gHandle = INVALID_HANDLE_VALUE; // + SC_HANDLE hSCManager = NULL; //ϵͳݿ + LPCTSTR DriverId = NULL; // + LPCTSTR DriverPath = NULL; //· + + BOOL NewDriver(); + BOOL OpenDriver(); + BOOL InstallDriver(); + BOOL StartDriver(); + BOOL StopDriver(); + BOOL RemoveDriver(); + BOOL SystemInstallDriver(); + BOOL IsSystemInstallDriver(); + VOID DeleteDriver(); + + BOOL EnableSeLoadDriverPrivilege(); +#ifdef _DEBUG + VOID GetFormatTime(); + FILE* fp = fopen("log.txt", "a"); + char tmp[64]; +#endif +}; + diff --git a/Plugin/CPUTemp/Source/running_environment.cpp b/Source/CPUTemp/Plugins/PluginCPUTemp/running_environment.cpp similarity index 84% rename from Plugin/CPUTemp/Source/running_environment.cpp rename to Source/CPUTemp/Plugins/PluginCPUTemp/running_environment.cpp index f71d3bb..af15689 100644 --- a/Plugin/CPUTemp/Source/running_environment.cpp +++ b/Source/CPUTemp/Plugins/PluginCPUTemp/running_environment.cpp @@ -1,5 +1,7 @@ +#pragma warning(disable:4996) #include "running_environment.h" + BOOL IsNT() { OSVERSIONINFO osvi; @@ -44,6 +46,14 @@ BOOL IsCpuid() return TRUE; } +BOOL IsAMD() +{ + int info[4]; + __cpuid(info, 0x80000005); + int ans = info[0] | info[1] | info[2] | info[3]; + return ans; +} + /* жǷ֧ RDMSR WRMSR */ @@ -63,7 +73,12 @@ BOOL IsMsr() BOOL IsWow64() { BOOL isWow64 = FALSE; - LPFN_ISWOW64PROCESS fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle(_T("kernel32")), "IsWow64Process"); + LPFN_ISWOW64PROCESS fnIsWow64Process = NULL; + HMODULE hModule = GetModuleHandle(_T("kernel32")); + if (hModule != NULL) + { + fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(hModule, "IsWow64Process"); + } if (fnIsWow64Process != NULL) { @@ -80,7 +95,12 @@ BOOL IsX64() { SYSTEM_INFO systemInfo; BOOL isX64 = FALSE; - LPFN_GETNATIVESYSTEMINFO fnGetNativeSystemInfo = (LPFN_GETNATIVESYSTEMINFO)GetProcAddress(GetModuleHandle(_T("kernel32")), "GetNativeSystemInfo"); + LPFN_GETNATIVESYSTEMINFO fnGetNativeSystemInfo = NULL; + HMODULE hModule = GetModuleHandle(_T("kernel32")); + if (hModule != NULL) + { + fnGetNativeSystemInfo = (LPFN_GETNATIVESYSTEMINFO)GetProcAddress(hModule, "GetNativeSystemInfo"); + } if (fnGetNativeSystemInfo != NULL) { diff --git a/Plugin/CPUTemp/Source/running_environment.h b/Source/CPUTemp/Plugins/PluginCPUTemp/running_environment.h similarity index 97% rename from Plugin/CPUTemp/Source/running_environment.h rename to Source/CPUTemp/Plugins/PluginCPUTemp/running_environment.h index e595045..7e0a79a 100644 --- a/Plugin/CPUTemp/Source/running_environment.h +++ b/Source/CPUTemp/Plugins/PluginCPUTemp/running_environment.h @@ -1,4 +1,5 @@ #pragma once + #include #include #include @@ -13,6 +14,7 @@ BOOL IsNT(); BOOL IsMsr(); +BOOL IsAMD(); BOOL IsCpuid(); BOOL IsWow64(); BOOL IsX64(); diff --git a/Plugin/CPUTemp/Source/sys.cpp b/Source/CPUTemp/Plugins/PluginCPUTemp/sys.cpp similarity index 100% rename from Plugin/CPUTemp/Source/sys.cpp rename to Source/CPUTemp/Plugins/PluginCPUTemp/sys.cpp diff --git a/Plugin/CPUTemp/Source/sys.h b/Source/CPUTemp/Plugins/PluginCPUTemp/sys.h similarity index 100% rename from Plugin/CPUTemp/Source/sys.h rename to Source/CPUTemp/Plugins/PluginCPUTemp/sys.h diff --git a/Plugin/CPUTemp/Source/sys_func.cpp b/Source/CPUTemp/Plugins/PluginCPUTemp/sys_func.cpp similarity index 100% rename from Plugin/CPUTemp/Source/sys_func.cpp rename to Source/CPUTemp/Plugins/PluginCPUTemp/sys_func.cpp diff --git a/Plugin/CPUTemp/Source/sys_func.h b/Source/CPUTemp/Plugins/PluginCPUTemp/sys_func.h similarity index 100% rename from Plugin/CPUTemp/Source/sys_func.h rename to Source/CPUTemp/Plugins/PluginCPUTemp/sys_func.h diff --git a/Plugin/CPUTemp/README.md b/Source/CPUTemp/README.md similarity index 100% rename from Plugin/CPUTemp/README.md rename to Source/CPUTemp/README.md diff --git a/Source/CPUTemp/Version.h b/Source/CPUTemp/Version.h new file mode 100644 index 0000000..7bb0fad --- /dev/null +++ b/Source/CPUTemp/Version.h @@ -0,0 +1,9 @@ +#pragma once +#define FILEVER 4,4,0,3321 +#define PRODUCTVER FILEVER +#define STRFILEVER "4.4.0.3321" +#define STRPRODUCTVER STRFILEVER +#define APPVERSION L"4.4.0" +#define RAINMETER_VERSION ((4 * 1000000) + (4 * 1000) + 0) +const int revision_number = 3321; +const bool revision_beta = true; diff --git a/Source/CPUTemp/WinRing0/WinIo_3_0.zip b/Source/CPUTemp/WinRing0/WinIo_3_0.zip new file mode 100644 index 0000000..7f8887e Binary files /dev/null and b/Source/CPUTemp/WinRing0/WinIo_3_0.zip differ diff --git a/Source/CPUTemp/WinRing0/WinRing0_1_3_0.zip b/Source/CPUTemp/WinRing0/WinRing0_1_3_0.zip new file mode 100644 index 0000000..8b475f2 Binary files /dev/null and b/Source/CPUTemp/WinRing0/WinRing0_1_3_0.zip differ diff --git a/Source/CPUTemp/WinRing0/WinRing0_1_3_1a.rar b/Source/CPUTemp/WinRing0/WinRing0_1_3_1a.rar new file mode 100644 index 0000000..8052a6a Binary files /dev/null and b/Source/CPUTemp/WinRing0/WinRing0_1_3_1a.rar differ diff --git "a/Source/CPUTemp/WinRing0/\350\257\264\346\230\216.txt" "b/Source/CPUTemp/WinRing0/\350\257\264\346\230\216.txt" new file mode 100644 index 0000000..0412db0 --- /dev/null +++ "b/Source/CPUTemp/WinRing0/\350\257\264\346\230\216.txt" @@ -0,0 +1,11 @@ +C++ Ring0ϵͳӲڴ +Ӳ˿ģⰴʲôסģⰴֻǴС +WinIO Winring0 dzǿ +ǩ.WinIOWin7 x64 ĿǰвܣҲûҶԷ +ת Winring0(ע: Winring0 ǰǿԴĿ,ر.ҵİ汾1.3.1a) +Winring0ǩ64λWIN7¹ + +WinIO °汾3.0 +Winring0 °汾 1.3.1a (ֻжļ) +Winring0 1.3.0 Դ+ļ+Դʾ +Ŀchmĵܼ򵥵Ӣ \ No newline at end of file diff --git a/Source/NvidiaGPU/API/RainmeterAPI.cs b/Source/NvidiaGPU/API/RainmeterAPI.cs new file mode 100644 index 0000000..76c4b5f --- /dev/null +++ b/Source/NvidiaGPU/API/RainmeterAPI.cs @@ -0,0 +1,446 @@ +/* Copyright (C) 2011 Rainmeter Project Developers + * + * This Source Code Form is subject to the terms of the GNU General Public + * License; either version 2 of the License, or (at your option) any later + * version. If a copy of the GPL was not distributed with this file, You can + * obtain one at . */ + +using System; +using System.Runtime.InteropServices; + +namespace Rainmeter +{ + /// + /// Wrapper around the Rainmeter C API. + /// + public class API + { + private IntPtr m_Rm; + + public API(IntPtr rm) + { + m_Rm = rm; + } + + static public implicit operator API(IntPtr rm) + { + return new Rainmeter.API(rm); + } + + [DllImport("Rainmeter.dll", CharSet = CharSet.Unicode)] + private extern static IntPtr RmReadString(IntPtr rm, string option, string defValue, bool replaceMeasures); + + [DllImport("Rainmeter.dll", CharSet = CharSet.Unicode)] + private extern static double RmReadFormula(IntPtr rm, string option, double defValue); + + [DllImport("Rainmeter.dll", CharSet = CharSet.Unicode)] + private extern static IntPtr RmReplaceVariables(IntPtr rm, string str); + + [DllImport("Rainmeter.dll", CharSet = CharSet.Unicode)] + private extern static IntPtr RmPathToAbsolute(IntPtr rm, string relativePath); + + /// + /// Executes a command + /// + /// Pointer to current skin (See API.GetSkin) + /// Bang to execute + /// No return type + /// + /// + /// [DllExport] + /// internal double Update(IntPtr data) + /// { + /// Measure measure = (Measure)data; + /// Rainmeter.API.Execute(measure->skin, "!SetVariable SomeVar 10"); // 'measure->skin' stored previously in the Initialize function + /// return 0.0; + /// } + /// + /// + [DllImport("Rainmeter.dll", EntryPoint = "RmExecute", CharSet = CharSet.Unicode)] + public extern static void Execute(IntPtr skin, string command); + + [DllImport("Rainmeter.dll")] + private extern static IntPtr RmGet(IntPtr rm, RmGetType type); + + [DllImport("Rainmeter.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] + private extern static int LSLog(int type, string unused, string message); + + [DllImport("Rainmeter.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)] + private extern static int RmLog(IntPtr rm, LogType type, string message); + + private enum RmGetType + { + MeasureName = 0, + Skin = 1, + SettingsFile = 2, + SkinName = 3, + SkinWindowHandle = 4 + } + + public enum LogType + { + Error = 1, + Warning = 2, + Notice = 3, + Debug = 4 + } + + /// + /// Retrieves the option defined in the skin file + /// + /// Option name to be read from skin + /// Default value for the option if it is not found or invalid + /// If true, replaces section variables in the returned string + /// Returns the option value as a string + /// + /// + /// [DllExport] + /// public static void Reload(IntPtr data, IntPtr rm, ref double maxValue) + /// { + /// Measure measure = (Measure)data; + /// Rainmeter.API api = (Rainmeter.API)rm; + /// string value = api.ReadString("Value", "DefaultValue"); + /// string action = api.ReadString("Action", "", false); // [MeasureNames] will be parsed/replaced when the action is executed with RmExecute + /// } + /// + /// + public string ReadString(string option, string defValue, bool replaceMeasures = true) + { + return Marshal.PtrToStringUni(RmReadString(m_Rm, option, defValue, replaceMeasures)); + } + + /// + /// Retrieves the option defined in the skin file and converts a relative path to a absolute path + /// + /// Option name to be read from skin + /// Default value for the option if it is not found or invalid + /// Returns the absolute path of the option value as a string + /// + /// + /// [DllExport] + /// public static void Reload(IntPtr data, IntPtr rm, ref double maxValue) + /// { + /// Measure measure = (Measure)data; + /// Rainmeter.API api = (Rainmeter.API)rm; + /// string path = api.ReadPath("MyPath", "C:\\"); + /// } + /// + /// + public string ReadPath(string option, string defValue) + { + return Marshal.PtrToStringUni(RmPathToAbsolute(m_Rm, ReadString(option, defValue))); + } + + /// + /// Retrieves the option defined in the skin file and converts it to a double + /// + /// If the option is a formula, the returned value will be the result of the parsed formula + /// Option name to read from skin + /// Default value for the option if it is not found, invalid, or a formula could not be parsed + /// Returns the option value as a double + /// + /// + /// [DllExport] + /// public static void Reload(IntPtr data, IntPtr rm, ref double maxValue) + /// { + /// Measure measure = (Measure)data; + /// Rainmeter.API api = (Rainmeter.API)rm; + /// double value = api.ReadDouble("Value", 20.0); + /// } + /// + /// + public double ReadDouble(string option, double defValue) + { + return RmReadFormula(m_Rm, option, defValue); + } + + /// + /// Retrieves the option defined in the skin file and converts it to an integer + /// + /// If the option is a formula, the returned value will be the result of the parsed formula + /// Option name to be read from skin + /// Default value for the option if it is not found, invalid, or a formula could not be parsed + /// Returns the option value as an integer + /// + /// + /// [DllExport] + /// public static void Reload(IntPtr data, IntPtr rm, ref double maxValue) + /// { + /// Measure measure = (Measure)data; + /// Rainmeter.API api = (Rainmeter.API)rm; + /// int value = api.ReadInt("Value", 20); + /// } + /// + /// + public int ReadInt(string option, int defValue) + { + return (int)RmReadFormula(m_Rm, option, defValue); + } + + /// + /// Returns a string, replacing any variables (or section variables) within the inputted string + /// + /// String with unresolved variables + /// Returns a string replacing any variables in the 'str' + /// + /// + /// [DllExport] + /// public static double Update(IntPtr data) + /// { + /// Measure measure = (Measure)data; + /// string myVar = measure.api.ReplaceVariables("#MyVar#").ToUpperInvariant(); // 'measure.api' stored previously in the Initialize function + /// if (myVar == "SOMETHING") { return 1.0; } + /// return 0.0; + /// } + /// + /// + public string ReplaceVariables(string str) + { + return Marshal.PtrToStringUni(RmReplaceVariables(m_Rm, str)); + } + + /// + /// Retrieves the name of the measure + /// + /// Call GetMeasureName() in the Initialize function and store the results for later use + /// Returns the current measure name as a string + /// + /// + /// [DllExport] + /// public static void Initialize(ref IntPtr data, IntPtr rm) + /// { + /// Measure measure = new Measure(); + /// Rainmeter.API api = (Rainmeter.API)rm; + /// measure.myName = api.GetMeasureName(); // declare 'myName' as a string in measure class + /// data = GCHandle.ToIntPtr(GCHandle.Alloc(measure)); + /// } + /// + /// + public string GetMeasureName() + { + return Marshal.PtrToStringUni(RmGet(m_Rm, RmGetType.MeasureName)); + } + + /// + /// Retrieves an internal pointer to the current skin + /// + /// Call GetSkin() in the Initialize function and store the results for later use + /// Returns an IntPtr to the current skin + /// + /// + /// [DllExport] + /// public static void Initialize(ref IntPtr data, IntPtr rm) + /// { + /// Measure measure = new Measure(); + /// Rainmeter.API api = (Rainmeter.API)rm; + /// measure.mySkin = api.GetSkin(); // declare 'mySkin' as a IntPtr in measure class + /// data = GCHandle.ToIntPtr(GCHandle.Alloc(measure)); + /// } + /// + /// + public IntPtr GetSkin() + { + return RmGet(m_Rm, RmGetType.Skin); + } + + /// + /// Retrieves a path to the Rainmeter data file (Rainmeter.data) + /// + /// Call GetSettingsFile() in the Initialize function and store the results for later use + /// Returns the path and filename of the Rainmeter data file as a string + /// + /// + /// public static void Initialize(ref IntPtr data, IntPtr rm) + /// { + /// data = GCHandle.ToIntPtr(GCHandle.Alloc(new Measure())); + /// Rainmeter.API api = (Rainmeter.API)rm; + /// if (rmDataFile == null) { rmDataFile = API.GetSettingsFile(); } // declare 'rmDataFile' as a string in global scope + /// } + /// + /// + public static string GetSettingsFile() + { + return Marshal.PtrToStringUni(RmGet(IntPtr.Zero, RmGetType.SettingsFile)); + } + + /// + /// Retrieves full path and name of the skin + /// + /// Call GetSkinName() in the Initialize function and store the results for later use + /// Returns the path and filename of the skin as a string + /// + /// + /// [DllExport] + /// public static void Initialize(ref IntPtr data, IntPtr rm) + /// { + /// Measure measure = new Measure(); + /// Rainmeter.API api = (Rainmeter.API)rm; + /// measure.skinName = api.GetSkinName(); } // declare 'skinName' as a string in measure class + /// data = GCHandle.ToIntPtr(GCHandle.Alloc(measure)); + /// } + /// + /// + public string GetSkinName() + { + return Marshal.PtrToStringUni(RmGet(m_Rm, RmGetType.SkinName)); + } + + /// + /// Executes a command auto getting the skin reference + /// + /// Bang to execute + /// No return type + /// + /// + /// [DllExport] + /// public static double Update(IntPtr data) + /// { + /// Measure measure = (Measure)data; + /// measure.api.Execute("!SetVariable SomeVar 10"); // 'measure.api' stored previously in the Initialize function + /// return 0.0; + /// } + /// + /// + public void Execute(string command) + { + Execute(this.GetSkin(), command); + } + + /// + /// Returns a pointer to the handle of the skin window (HWND) + /// + /// Call GetSkinWindow() in the Initialize function and store the results for later use + /// Returns a handle to the skin window as a IntPtr + /// + /// + /// [DllExport] + /// internal void Initialize(Rainmeter.API rm) + /// { + /// Measure measure = new Measure(); + /// Rainmeter.API api = (Rainmeter.API)rm; + /// measure.skinWindow = api.GetSkinWindow(); } // declare 'skinWindow' as a IntPtr in measure class + /// data = GCHandle.ToIntPtr(GCHandle.Alloc(measure)); + /// } + /// + /// + public IntPtr GetSkinWindow() + { + return RmGet(m_Rm, RmGetType.SkinWindowHandle); + } + + /// + /// DEPRECATED: Save your rm or api reference and use Log(rm, type, message). Sends a message to the Rainmeter log with no source. + /// + public static void Log(int type, string message) + { + LSLog(type, null, message); + } + + /// + /// Sends a message to the Rainmeter log with source + /// + /// LOG_DEBUG messages are logged only when Rainmeter is in debug mode + /// Pointer to the plugin measure + /// Log type, use API.LogType enum (Error, Warning, Notice, or Debug) + /// Message to be logged + /// No return type + /// + /// + /// Rainmeter.API.Log(rm, API.LogType.Notice, "I am a 'notice' log message with a source"); + /// + /// + public static void Log(IntPtr rm, LogType type, string message) + { + RmLog(rm, type, message); + } + + /// + /// + /// Sends a formatted message to the Rainmeter log + /// + /// LOG_DEBUG messages are logged only when Rainmeter is in debug mode + /// Pointer to the plugin measure + /// Log type, use API.LogType enum (Error, Warning, Notice, or Debug) + /// Formatted message to be logged, follows string.Format syntax + /// Comma separated list of args referenced in the formatted message + /// No return type + /// + /// + /// [DllExport] + /// public static double Update(IntPtr data) + /// { + /// Measure measure = (Measure)data; + /// string notice = "notice"; + /// measure.api.LogF(measure.rm, API.LogType.Notice, "I am a '{0}' log message with a source", notice); // 'measure.rm' stored previously in the Initialize function + /// + /// return 0.0; + /// } + /// + /// + public static void LogF(IntPtr rm, LogType type, string format, params Object[] args) + { + RmLog(rm, type, string.Format(format, args)); + } + + /// + /// Sends a message to the Rainmeter log with source + /// + /// LOG_DEBUG messages are logged only when Rainmeter is in debug mode + /// Log type, use API.LogType enum (Error, Warning, Notice, or Debug) + /// Message to be logged + /// No return type + /// + /// + /// [DllExport] + /// public static double Update(IntPtr data) + /// { + /// Measure measure = (Measure)data; + /// measure.api.Log(api, API.LogType.Notice, "I am a 'notice' log message with a source"); // 'measure.api' stored previously in the Initialize function + /// + /// return 0.0; + /// } + /// + /// + public void Log(LogType type, string message) + { + RmLog(this.m_Rm, type, message); + } + + /// + /// Sends a formatted message to the Rainmeter log + /// + /// LOG_DEBUG messages are logged only when Rainmeter is in debug mode + /// Log type, use API.LogType enum (Error, Warning, Notice, or Debug) + /// Formatted message to be logged, follows string.Format syntax + /// Comma separated list of args referenced in the formatted message + /// No return type + /// + /// + /// [DllExport] + /// public static double Update(IntPtr data) + /// { + /// Measure measure = (Measure)data; + /// string notice = "notice"; + /// measure.api.LogF(API.LogType.Notice, "I am a '{0}' log message with a source", notice); // 'measure.api' stored previously in the Initialize function + /// + /// return 0.0; + /// } + /// + /// + public void LogF(LogType type, string format, params Object[] args) + { + RmLog(this.m_Rm, type, string.Format(format, args)); + } + } + /// + /// Dummy attribute to mark method as exported for DllExporter.exe. + /// + [AttributeUsage(AttributeTargets.Method)] + public class DllExport : Attribute + { + public DllExport() + { + + } + } +} diff --git a/Source/NvidiaGPU/API/RainmeterAPI.h b/Source/NvidiaGPU/API/RainmeterAPI.h new file mode 100644 index 0000000..6477775 --- /dev/null +++ b/Source/NvidiaGPU/API/RainmeterAPI.h @@ -0,0 +1,371 @@ +/* Copyright (C) 2011 Rainmeter Project Developers + * + * This Source Code Form is subject to the terms of the GNU General Public + * License; either version 2 of the License, or (at your option) any later + * version. If a copy of the GPL was not distributed with this file, You can + * obtain one at . */ + +#ifndef __RAINMETERAPI_H__ +#define __RAINMETERAPI_H__ + +#ifdef LIBRARY_EXPORTS +#define LIBRARY_EXPORT EXTERN_C +#else +#define LIBRARY_EXPORT EXTERN_C __declspec(dllimport) +#endif // LIBRARY_EXPORTS + +#define PLUGIN_EXPORT EXTERN_C __declspec(dllexport) + +// +// Exported functions +// + +/// +/// Retrieves the option defined in the skin file +/// +/// Pointer to the plugin measure +/// Option name to be read from skin +/// Default value for the option if it is not found or invalid +/// If true, replaces section variables in the returned string +/// Returns the option value as a string (LPCWSTR) +/// +/// +/// PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) +/// { +/// LPCWSTR value = RmReadString(rm, L"Value", L"DefaultValue"); +/// LPCWSTR action = RmReadString(rm, L"Action", L"", FALSE); // [MeasureNames] will be parsed/replaced when the action is executed with RmExecute +/// } +/// +/// +#ifdef __cplusplus +LIBRARY_EXPORT LPCWSTR __stdcall RmReadString(void* rm, LPCWSTR option, LPCWSTR defValue, BOOL replaceMeasures = TRUE); +#else +LIBRARY_EXPORT LPCWSTR __stdcall RmReadString(void* rm, LPCWSTR option, LPCWSTR defValue, BOOL replaceMeasures); +#endif // __cplusplus + +/// +/// Parses any formulas in the option (use RmReadDouble/RmReadInt instead) +/// +/// Pointer to the plugin measure +/// Option name to be read from skin +/// Default value for the option if it is not found, invalid, or a formula could not be parsed +/// Returns the option value as an double +/// +/// +/// PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) +/// { +/// double value = RmReadFormula(rm, L"Value", 20); +/// } +/// +/// +LIBRARY_EXPORT double __stdcall RmReadFormula(void* rm, LPCWSTR option, double defValue); + +/// +/// Returns a string, replacing any variables (or section variables) within the inputted string +/// +/// Pointer to the plugin measure +/// String with unresolved variables +/// Returns a string replacing any variables in the 'str' +/// +/// +/// PLUGIN_EXPORT double Update(void* data) +/// { +/// Measure* measure = (Measure*)data; +/// LPCWSTR myVar = RmReplaceVariables(measure->rm, L"#MyVar#"); // 'measure->rm' stored previously in the Initialize function +/// if (_wcsicmp(myVar, L"SOMETHING") == 0) { return 1.0; } +/// return 0.0; +/// } +/// +/// +LIBRARY_EXPORT LPCWSTR __stdcall RmReplaceVariables(void* rm, LPCWSTR str); + +/// +/// Converts a relative path to a absolute path (use RmReadPath where appropriate) +/// +/// Pointer to the plugin measure +/// String of path to be converted +/// Returns the absolute path of the relativePath value as a string (LPCWSTR) +/// +/// +/// PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) +/// { +/// std::wstring somePath = L"..\\SomeFolder"; +/// LPCWSTR path = RmPathToAbsolute(rm, somePath.c_str()); +/// } +/// +/// +LIBRARY_EXPORT LPCWSTR __stdcall RmPathToAbsolute(void* rm, LPCWSTR relativePath); + +/// +/// Executes a command +/// +/// Pointer to current skin (See RmGetSkin) +/// Bang to execute +/// No return type +/// +/// +/// PLUGIN_EXPORT double Update(void* data) +/// { +/// Measure* measure = (Measure*)data; +/// RmExecute(measure->skin, L"!SetVariable SomeVar 10"); // 'measure->skin' stored previously in the Initialize function +/// return 0.0; +/// } +/// +/// +LIBRARY_EXPORT void __stdcall RmExecute(void* skin, LPCWSTR command); + +/// +/// Retrieves data from the measure or skin (use the helper functions instead) +/// +/// Call RmGet() in the Initialize function and store the results for later use +/// Pointer to the plugin measure +/// Type of information to retrieve (see RmGetType) +/// Returns a pointer to an object which is determined by the 'type' +/// +/// +/// PLUGIN_EXPORT void Initialize(void** data, void* rm) +/// { +/// Measure* measure = new Measure; +/// *data = measure; +/// measure->hwnd = RmGet(rm, RMG_SKINWINDOWHANDLE); // 'measure->hwnd' defined as HWND in class scope +/// } +/// +/// +LIBRARY_EXPORT void* __stdcall RmGet(void* rm, int type); + +enum RmGetType +{ + RMG_MEASURENAME = 0, + RMG_SKIN = 1, + RMG_SETTINGSFILE = 2, + RMG_SKINNAME = 3, + RMG_SKINWINDOWHANDLE = 4 +}; + +/// +/// Sends a message to the Rainmeter log with source +/// +/// LOG_DEBUG messages are logged only when Rainmeter is in debug mode +/// Pointer to the plugin measure +/// Log type (LOG_ERROR, LOG_WARNING, LOG_NOTICE, or LOG_DEBUG) +/// Message to be logged +/// No return type +/// +/// +/// RmLog(rm, LOG_NOTICE, L"I am a 'notice' log message with a source"); +/// +/// +LIBRARY_EXPORT void __stdcall RmLog(void* rm, int level, LPCWSTR message); + +/// +/// Sends a formatted message to the Rainmeter log +/// +/// LOG_DEBUG messages are logged only when Rainmeter is in debug mode +/// Pointer to the plugin measure +/// Log level (LOG_ERROR, LOG_WARNING, LOG_NOTICE, or LOG_DEBUG) +/// Formatted message to be logged, follows printf syntax +/// Comma separated list of args referenced in the formatted message +/// No return type +/// +/// +/// std::wstring notice = L"notice"; +/// RmLogF(rm, LOG_NOTICE, L"I am a '%s' log message with a source", notice.c_str()); +/// +/// +LIBRARY_EXPORT void __cdecl RmLogF(void* rm, int level, LPCWSTR format, ...); + +/// +/// DEPRECATED: Use RmLog. Sends a message to the Rainmeter log. +/// +LIBRARY_EXPORT BOOL __cdecl LSLog(int level, LPCWSTR unused, LPCWSTR message); + +// +// Wrapper functions +// + +#ifndef LIBRARY_EXPORTS +/// +/// Retrieves the option defined in the skin file and converts a relative path to a absolute path +/// +/// Pointer to the plugin measure +/// Option name to be read from skin +/// Default value for the option if it is not found or invalid +/// Returns the absolute path of the option value as a string (LPCWSTR) +/// +/// +/// PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) +/// { +/// LPCWSTR path = RmReadPath(rm, L"MyPath", L"C:\\"); +/// } +/// +/// +__inline LPCWSTR RmReadPath(void* rm, LPCWSTR option, LPCWSTR defValue) +{ + LPCWSTR relativePath = RmReadString(rm, option, defValue, TRUE); + return RmPathToAbsolute(rm, relativePath); +} + +/// +/// Retrieves the option defined in the skin file and converts it to an integer +/// +/// If the option is a formula, the returned value will be the result of the parsed formula +/// Pointer to the plugin measure +/// Option name to be read from skin +/// Default value for the option if it is not found, invalid, or a formula could not be parsed +/// Returns the option value as an integer +/// +/// +/// PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) +/// { +/// int value = RmReadInt(rm, L"Value", 20); +/// } +/// +/// +__inline int RmReadInt(void* rm, LPCWSTR option, int defValue) +{ + return (int)RmReadFormula(rm, option, defValue); +} + +/// +/// Retrieves the option defined in the skin file and converts it to a double +/// +/// If the option is a formula, the returned value will be the result of the parsed formula +/// Pointer to the plugin measure +/// Option name to read from skin +/// Default value for the option if it is not found, invalid, or a formula could not be parsed +/// Returns the option value as a double +/// +/// +/// PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) +/// { +/// double value = RmReadDouble(rm, L"Value", 20.0); +/// } +/// +/// +__inline double RmReadDouble(void* rm, LPCWSTR option, double defValue) +{ + return RmReadFormula(rm, option, defValue); +} + +/// +/// Retrieves the name of the measure +/// +/// Call RmGetMeasureName() in the Initialize function and store the results for later use +/// Pointer to the plugin measure +/// Returns the current measure name as a string (LPCWSTR) +/// +/// +/// PLUGIN_EXPORT void Initialize(void** data, void* rm) +/// { +/// Measure* measure = new Measure; +/// *data = measure; +/// measure->myName = RmGetMeasureName(rm); // 'measure->myName' defined as a string (LPCWSTR) in class scope +/// } +/// +/// +__inline LPCWSTR RmGetMeasureName(void* rm) +{ + return (LPCWSTR)RmGet(rm, RMG_MEASURENAME); +} + +/// +/// Retrieves a path to the Rainmeter data file (Rainmeter.data). +/// +/// Call GetSettingsFile() in the Initialize function and store the results for later use +/// Returns the path and filename of the Rainmeter data file as a string (LPCWSTR) +/// +/// +/// PLUGIN_EXPORT void Initialize(void** data, void* rm) +/// { +/// Measure* measure = new Measure; +/// *data = measure; +/// if (rmDataFile == nullptr) { rmDataFile = RmGetSettingsFile(); } // 'rmDataFile' defined as a string (LPCWSTR) in global scope +/// } +/// +/// +__inline LPCWSTR RmGetSettingsFile() +{ + return (LPCWSTR)RmGet(NULL, RMG_SETTINGSFILE); +} + +/// +/// Retrieves an internal pointer to the current skin +/// +/// Call GetSkin() in the Initialize function and store the results for later use +/// Pointer to the plugin measure +/// Returns a pointer to the current skin +/// +/// +/// PLUGIN_EXPORT void Initialize(void** data, void* rm) +/// { +/// Measure* measure = new Measure; +/// *data = measure; +/// measure->mySkin = RmGetSkin(rm); // 'measure->mySkin' defined as a 'void*' in class scope +/// } +/// +/// +__inline void* RmGetSkin(void* rm) +{ + return (void*)RmGet(rm, RMG_SKIN); +} + +/// +/// Retrieves full path and name of the skin +/// +/// Call GetSkinName() in the Initialize function and store the results for later use +/// Pointer to the plugin measure +/// Returns the path and filename of the skin as a string (LPCWSTR) +/// +/// +/// PLUGIN_EXPORT void Initialize(void** data, void* rm) +/// { +/// Measure* measure = new Measure; +/// *data = measure; +/// skinName = RmGetSkinName(rm); } // 'measure->skinName' defined as a string (LPCWSTR) in class scope +/// } +/// +/// +__inline LPCWSTR RmGetSkinName(void* rm) +{ + return (LPCWSTR)RmGet(rm, RMG_SKINNAME); +} + +/// +/// Returns a pointer to the handle of the skin window (HWND) +/// +/// Call GetSkinWindow() in the Initialize function and store the results for later use +/// Pointer to the plugin measure +/// Returns a handle to the skin window as a HWND +/// +/// +/// PLUGIN_EXPORT void Initialize(void** data, void* rm) +/// { +/// Measure* measure = new Measure; +/// *data = measure; +/// measure->skinWindow = RmGetSkinWindow(rm); } // 'measure->skinWindow' defined as HWND in class scope +/// } +/// +/// +__inline HWND RmGetSkinWindow(void* rm) +{ + return (HWND)RmGet(rm, RMG_SKINWINDOWHANDLE); +} + +/// +/// DEPRECATED: Use RmLog(rm, type, message). Sends a message to the Rainmeter log. +/// +__inline void RmLog(int level, LPCWSTR message) +{ + LSLog(level, NULL, message); +} + +enum LOGLEVEL +{ + LOG_ERROR = 1, + LOG_WARNING = 2, + LOG_NOTICE = 3, + LOG_DEBUG = 4 +}; +#endif // LIBRARY_EXPORTS + +#endif diff --git a/Source/NvidiaGPU/API/x32/Rainmeter.lib b/Source/NvidiaGPU/API/x32/Rainmeter.lib new file mode 100644 index 0000000..4aa3af9 Binary files /dev/null and b/Source/NvidiaGPU/API/x32/Rainmeter.lib differ diff --git a/Source/NvidiaGPU/API/x64/Rainmeter.lib b/Source/NvidiaGPU/API/x64/Rainmeter.lib new file mode 100644 index 0000000..6d9a41c Binary files /dev/null and b/Source/NvidiaGPU/API/x64/Rainmeter.lib differ diff --git a/Plugin/CPUTemp/SDK-CPP.sln b/Source/NvidiaGPU/NvidiaGPU.sln similarity index 100% rename from Plugin/CPUTemp/SDK-CPP.sln rename to Source/NvidiaGPU/NvidiaGPU.sln diff --git a/Source/NvidiaGPU/PluginNvidiaGPU/PluginNvidiaGPU.aps b/Source/NvidiaGPU/PluginNvidiaGPU/PluginNvidiaGPU.aps new file mode 100644 index 0000000..a612715 Binary files /dev/null and b/Source/NvidiaGPU/PluginNvidiaGPU/PluginNvidiaGPU.aps differ diff --git a/Plugin/NvidiaGPU/Source/PluginNvidiaGPU.cpp b/Source/NvidiaGPU/PluginNvidiaGPU/PluginNvidiaGPU.cpp similarity index 99% rename from Plugin/NvidiaGPU/Source/PluginNvidiaGPU.cpp rename to Source/NvidiaGPU/PluginNvidiaGPU/PluginNvidiaGPU.cpp index 1373ec4..04dd25b 100644 --- a/Plugin/NvidiaGPU/Source/PluginNvidiaGPU.cpp +++ b/Source/NvidiaGPU/PluginNvidiaGPU/PluginNvidiaGPU.cpp @@ -1,5 +1,5 @@ #include -#include "../../API/RainmeterAPI.h" +#include "../API/RainmeterAPI.h" #include "../nvapi-337/nvapi.h" #ifdef _WIN64 #pragma comment(lib,"../nvapi-337/amd64/nvapi64.lib") diff --git a/Plugin/NvidiaGPU/Source/PluginNvidiaGPU.rc b/Source/NvidiaGPU/PluginNvidiaGPU/PluginNvidiaGPU.rc similarity index 100% rename from Plugin/NvidiaGPU/Source/PluginNvidiaGPU.rc rename to Source/NvidiaGPU/PluginNvidiaGPU/PluginNvidiaGPU.rc diff --git a/Plugin/NvidiaGPU/Source/PluginNvidiaGPU.vcxproj b/Source/NvidiaGPU/PluginNvidiaGPU/PluginNvidiaGPU.vcxproj similarity index 100% rename from Plugin/NvidiaGPU/Source/PluginNvidiaGPU.vcxproj rename to Source/NvidiaGPU/PluginNvidiaGPU/PluginNvidiaGPU.vcxproj diff --git a/Plugin/NvidiaGPU/Source/PluginNvidiaGPU.vcxproj.filters b/Source/NvidiaGPU/PluginNvidiaGPU/PluginNvidiaGPU.vcxproj.filters similarity index 100% rename from Plugin/NvidiaGPU/Source/PluginNvidiaGPU.vcxproj.filters rename to Source/NvidiaGPU/PluginNvidiaGPU/PluginNvidiaGPU.vcxproj.filters diff --git a/Source/NvidiaGPU/PluginNvidiaGPU/PluginNvidiaGPU.vcxproj.user b/Source/NvidiaGPU/PluginNvidiaGPU/PluginNvidiaGPU.vcxproj.user new file mode 100644 index 0000000..88a5509 --- /dev/null +++ b/Source/NvidiaGPU/PluginNvidiaGPU/PluginNvidiaGPU.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Plugin/NvidiaGPU/API/nvapi-337/NvApiDriverSettings.c b/Source/NvidiaGPU/nvapi-337/NvApiDriverSettings.c similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/NvApiDriverSettings.c rename to Source/NvidiaGPU/nvapi-337/NvApiDriverSettings.c diff --git a/Plugin/NvidiaGPU/API/nvapi-337/NvApiDriverSettings.h b/Source/NvidiaGPU/nvapi-337/NvApiDriverSettings.h similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/NvApiDriverSettings.h rename to Source/NvidiaGPU/nvapi-337/NvApiDriverSettings.h diff --git a/Plugin/NvidiaGPU/API/nvapi-337/Sample_Code/CustomTiming/CustomTiming.cpp b/Source/NvidiaGPU/nvapi-337/Sample_Code/CustomTiming/CustomTiming.cpp similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/Sample_Code/CustomTiming/CustomTiming.cpp rename to Source/NvidiaGPU/nvapi-337/Sample_Code/CustomTiming/CustomTiming.cpp diff --git a/Plugin/NvidiaGPU/API/nvapi-337/Sample_Code/CustomTiming/targetver.h b/Source/NvidiaGPU/nvapi-337/Sample_Code/CustomTiming/targetver.h similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/Sample_Code/CustomTiming/targetver.h rename to Source/NvidiaGPU/nvapi-337/Sample_Code/CustomTiming/targetver.h diff --git a/Plugin/NvidiaGPU/API/nvapi-337/Sample_Code/DisplayConfiguration/DisplayConfiguration.cpp b/Source/NvidiaGPU/nvapi-337/Sample_Code/DisplayConfiguration/DisplayConfiguration.cpp similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/Sample_Code/DisplayConfiguration/DisplayConfiguration.cpp rename to Source/NvidiaGPU/nvapi-337/Sample_Code/DisplayConfiguration/DisplayConfiguration.cpp diff --git a/Plugin/NvidiaGPU/API/nvapi-337/Sample_Code/DisplayConfiguration/targetver.h b/Source/NvidiaGPU/nvapi-337/Sample_Code/DisplayConfiguration/targetver.h similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/Sample_Code/DisplayConfiguration/targetver.h rename to Source/NvidiaGPU/nvapi-337/Sample_Code/DisplayConfiguration/targetver.h diff --git a/Plugin/NvidiaGPU/API/nvapi-337/Sample_Code/Sync_Configuration/Sync_Configuration.cpp b/Source/NvidiaGPU/nvapi-337/Sample_Code/Sync_Configuration/Sync_Configuration.cpp similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/Sample_Code/Sync_Configuration/Sync_Configuration.cpp rename to Source/NvidiaGPU/nvapi-337/Sample_Code/Sync_Configuration/Sync_Configuration.cpp diff --git a/Plugin/NvidiaGPU/API/nvapi-337/Sample_Code/Sync_Configuration/targetver.h b/Source/NvidiaGPU/nvapi-337/Sample_Code/Sync_Configuration/targetver.h similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/Sample_Code/Sync_Configuration/targetver.h rename to Source/NvidiaGPU/nvapi-337/Sample_Code/Sync_Configuration/targetver.h diff --git a/Plugin/NvidiaGPU/API/nvapi-337/Sample_Code/i2c/i2c.cpp b/Source/NvidiaGPU/nvapi-337/Sample_Code/i2c/i2c.cpp similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/Sample_Code/i2c/i2c.cpp rename to Source/NvidiaGPU/nvapi-337/Sample_Code/i2c/i2c.cpp diff --git a/Plugin/NvidiaGPU/API/nvapi-337/Sample_Code/i2c/targetver.h b/Source/NvidiaGPU/nvapi-337/Sample_Code/i2c/targetver.h similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/Sample_Code/i2c/targetver.h rename to Source/NvidiaGPU/nvapi-337/Sample_Code/i2c/targetver.h diff --git a/Plugin/NvidiaGPU/API/nvapi-337/amd64/nvapi64.lib b/Source/NvidiaGPU/nvapi-337/amd64/nvapi64.lib similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/amd64/nvapi64.lib rename to Source/NvidiaGPU/nvapi-337/amd64/nvapi64.lib diff --git a/Plugin/NvidiaGPU/API/nvapi-337/docs/NVAPI_R337_Public_SDK_RelNotes_v01.pdf b/Source/NvidiaGPU/nvapi-337/docs/NVAPI_R337_Public_SDK_RelNotes_v01.pdf similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/docs/NVAPI_R337_Public_SDK_RelNotes_v01.pdf rename to Source/NvidiaGPU/nvapi-337/docs/NVAPI_R337_Public_SDK_RelNotes_v01.pdf diff --git a/Plugin/NvidiaGPU/API/nvapi-337/docs/NVAPI_Reference_Developer.chm b/Source/NvidiaGPU/nvapi-337/docs/NVAPI_Reference_Developer.chm similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/docs/NVAPI_Reference_Developer.chm rename to Source/NvidiaGPU/nvapi-337/docs/NVAPI_Reference_Developer.chm diff --git a/Plugin/NvidiaGPU/API/nvapi-337/docs/NVAPI_SDK_License_Agreement.pdf b/Source/NvidiaGPU/nvapi-337/docs/NVAPI_SDK_License_Agreement.pdf similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/docs/NVAPI_SDK_License_Agreement.pdf rename to Source/NvidiaGPU/nvapi-337/docs/NVAPI_SDK_License_Agreement.pdf diff --git a/Plugin/NvidiaGPU/API/nvapi-337/nvHLSLExtns.h b/Source/NvidiaGPU/nvapi-337/nvHLSLExtns.h similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/nvHLSLExtns.h rename to Source/NvidiaGPU/nvapi-337/nvHLSLExtns.h diff --git a/Plugin/NvidiaGPU/API/nvapi-337/nvHLSLExtnsInternal.h b/Source/NvidiaGPU/nvapi-337/nvHLSLExtnsInternal.h similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/nvHLSLExtnsInternal.h rename to Source/NvidiaGPU/nvapi-337/nvHLSLExtnsInternal.h diff --git a/Plugin/NvidiaGPU/API/nvapi-337/nvShaderExtnEnums.h b/Source/NvidiaGPU/nvapi-337/nvShaderExtnEnums.h similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/nvShaderExtnEnums.h rename to Source/NvidiaGPU/nvapi-337/nvShaderExtnEnums.h diff --git a/Plugin/NvidiaGPU/API/nvapi-337/nvapi.h b/Source/NvidiaGPU/nvapi-337/nvapi.h similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/nvapi.h rename to Source/NvidiaGPU/nvapi-337/nvapi.h diff --git a/Plugin/NvidiaGPU/API/nvapi-337/nvapi_lite_common.h b/Source/NvidiaGPU/nvapi-337/nvapi_lite_common.h similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/nvapi_lite_common.h rename to Source/NvidiaGPU/nvapi-337/nvapi_lite_common.h diff --git a/Plugin/NvidiaGPU/API/nvapi-337/nvapi_lite_d3dext.h b/Source/NvidiaGPU/nvapi-337/nvapi_lite_d3dext.h similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/nvapi_lite_d3dext.h rename to Source/NvidiaGPU/nvapi-337/nvapi_lite_d3dext.h diff --git a/Plugin/NvidiaGPU/API/nvapi-337/nvapi_lite_salend.h b/Source/NvidiaGPU/nvapi-337/nvapi_lite_salend.h similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/nvapi_lite_salend.h rename to Source/NvidiaGPU/nvapi-337/nvapi_lite_salend.h diff --git a/Plugin/NvidiaGPU/API/nvapi-337/nvapi_lite_salstart.h b/Source/NvidiaGPU/nvapi-337/nvapi_lite_salstart.h similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/nvapi_lite_salstart.h rename to Source/NvidiaGPU/nvapi-337/nvapi_lite_salstart.h diff --git a/Plugin/NvidiaGPU/API/nvapi-337/nvapi_lite_sli.h b/Source/NvidiaGPU/nvapi-337/nvapi_lite_sli.h similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/nvapi_lite_sli.h rename to Source/NvidiaGPU/nvapi-337/nvapi_lite_sli.h diff --git a/Plugin/NvidiaGPU/API/nvapi-337/nvapi_lite_stereo.h b/Source/NvidiaGPU/nvapi-337/nvapi_lite_stereo.h similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/nvapi_lite_stereo.h rename to Source/NvidiaGPU/nvapi-337/nvapi_lite_stereo.h diff --git a/Plugin/NvidiaGPU/API/nvapi-337/nvapi_lite_surround.h b/Source/NvidiaGPU/nvapi-337/nvapi_lite_surround.h similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/nvapi_lite_surround.h rename to Source/NvidiaGPU/nvapi-337/nvapi_lite_surround.h diff --git a/Plugin/NvidiaGPU/API/nvapi-337/x86/nvapi.lib b/Source/NvidiaGPU/nvapi-337/x86/nvapi.lib similarity index 100% rename from Plugin/NvidiaGPU/API/nvapi-337/x86/nvapi.lib rename to Source/NvidiaGPU/nvapi-337/x86/nvapi.lib diff --git a/Version b/Version index 840a153..e28e752 100644 --- a/Version +++ b/Version @@ -1 +1 @@ -v 3.2 (200802) (Final) +v 3.3 (210216) (Final)