Showing preview only (1,311K chars total). Download the full file or copy to clipboard to get everything.
Repository: peng-zhihui/TrafficMonitor
Branch: master
Commit: 5ac1625134bf
Files: 205
Total size: 1.1 MB
Directory structure:
gitextract_vr76zmf_/
├── .github/
│ └── workflows/
│ └── main.yml
├── .gitignore
├── Help.md
├── Help_en-us.md
├── LICENSE
├── LICENSE_CN
├── OpenHardwareMonitorApi/
│ ├── LibreHardwareMonitorLib.xml
│ ├── OpenHardwareMonitorApi.vcxproj
│ ├── OpenHardwareMonitorApi.vcxproj.filters
│ ├── OpenHardwareMonitorImp.cpp
│ ├── OpenHardwareMonitorImp.h
│ ├── ReadMe.txt
│ ├── Stdafx.cpp
│ ├── Stdafx.h
│ ├── UpdateVisitor.cpp
│ ├── UpdateVisitor.h
│ ├── app.rc
│ └── resource.h
├── PluginDemo/
│ ├── CustomDrawItem.cpp
│ ├── CustomDrawItem.h
│ ├── DataManager.cpp
│ ├── DataManager.h
│ ├── OptionsDlg.cpp
│ ├── OptionsDlg.h
│ ├── PluginDemo.cpp
│ ├── PluginDemo.h
│ ├── PluginDemo.rc
│ ├── PluginDemo.vcxproj
│ ├── PluginDemo.vcxproj.filters
│ ├── PluginSystemDate.cpp
│ ├── PluginSystemDate.h
│ ├── PluginSystemTime.cpp
│ ├── PluginSystemTime.h
│ ├── framework.h
│ ├── pch.cpp
│ ├── pch.h
│ └── resource.h
├── README.md
├── README_en-us.md
├── TrafficMonitor/
│ ├── AboutDlg.cpp
│ ├── AboutDlg.h
│ ├── AdapterCommon.cpp
│ ├── AdapterCommon.h
│ ├── AppAlreadyRuningDlg.cpp
│ ├── AppAlreadyRuningDlg.h
│ ├── BaseDialog.cpp
│ ├── BaseDialog.h
│ ├── CAutoAdaptSettingsDlg.cpp
│ ├── CAutoAdaptSettingsDlg.h
│ ├── CMFCColorDialogEx.cpp
│ ├── CMFCColorDialogEx.h
│ ├── CPUUsage.cpp
│ ├── CPUUsage.h
│ ├── CSkinPreviewView.cpp
│ ├── CSkinPreviewView.h
│ ├── CTabCtrlEx.cpp
│ ├── CTabCtrlEx.h
│ ├── CVariant.cpp
│ ├── CVariant.h
│ ├── CalendarHelper.cpp
│ ├── CalendarHelper.h
│ ├── ColorSettingListCtrl.cpp
│ ├── ColorSettingListCtrl.h
│ ├── ColorStatic.cpp
│ ├── ColorStatic.h
│ ├── ComboBox2.cpp
│ ├── ComboBox2.h
│ ├── Common.cpp
│ ├── Common.h
│ ├── CommonData.cpp
│ ├── CommonData.h
│ ├── DisplayTextSettingDlg.cpp
│ ├── DisplayTextSettingDlg.h
│ ├── DonateDlg.cpp
│ ├── DonateDlg.h
│ ├── DrawCommon.cpp
│ ├── DrawCommon.h
│ ├── DrawCommonEx.cpp
│ ├── DrawCommonEx.h
│ ├── FilePathHelper.cpp
│ ├── FilePathHelper.h
│ ├── GeneralSettingsDlg.cpp
│ ├── GeneralSettingsDlg.h
│ ├── HighResolutionTimer.h
│ ├── HistoryTrafficCalendarDlg.cpp
│ ├── HistoryTrafficCalendarDlg.h
│ ├── HistoryTrafficDlg.cpp
│ ├── HistoryTrafficDlg.h
│ ├── HistoryTrafficFile.cpp
│ ├── HistoryTrafficFile.h
│ ├── HistoryTrafficListCtrl.cpp
│ ├── HistoryTrafficListCtrl.h
│ ├── HistoryTrafficListDlg.cpp
│ ├── HistoryTrafficListDlg.h
│ ├── IconSelectDlg.cpp
│ ├── IconSelectDlg.h
│ ├── IniHelper.cpp
│ ├── IniHelper.h
│ ├── LinkStatic.cpp
│ ├── LinkStatic.h
│ ├── ListCtrlEx.cpp
│ ├── ListCtrlEx.h
│ ├── MainWndColorDlg.cpp
│ ├── MainWndColorDlg.h
│ ├── MainWndSettingsDlg.cpp
│ ├── MainWndSettingsDlg.h
│ ├── MessageDlg.cpp
│ ├── MessageDlg.h
│ ├── NetworkInfoDlg.cpp
│ ├── NetworkInfoDlg.h
│ ├── OptionsDlg.cpp
│ ├── OptionsDlg.h
│ ├── PictureStatic.cpp
│ ├── PictureStatic.h
│ ├── PluginInfoDlg.cpp
│ ├── PluginInfoDlg.h
│ ├── PluginManager.cpp
│ ├── PluginManager.h
│ ├── PluginManagerDlg.cpp
│ ├── PluginManagerDlg.h
│ ├── ReadMe.txt
│ ├── SelectConnectionsDlg.cpp
│ ├── SelectConnectionsDlg.h
│ ├── SetItemOrderDlg.cpp
│ ├── SetItemOrderDlg.h
│ ├── SimpleXML.cpp
│ ├── SimpleXML.h
│ ├── SkinDlg.cpp
│ ├── SkinDlg.h
│ ├── SkinFile.cpp
│ ├── SkinFile.h
│ ├── SpinEdit.cpp
│ ├── SpinEdit.h
│ ├── StaticEx.cpp
│ ├── StaticEx.h
│ ├── TabDlg.cpp
│ ├── TabDlg.h
│ ├── TaskBarDlg.cpp
│ ├── TaskBarDlg.h
│ ├── TaskBarSettingsDlg.cpp
│ ├── TaskBarSettingsDlg.h
│ ├── TaskbarColorDlg.cpp
│ ├── TaskbarColorDlg.h
│ ├── TaskbarDefaultStyle.cpp
│ ├── TaskbarDefaultStyle.h
│ ├── TaskbarItemOrderHelper.cpp
│ ├── TaskbarItemOrderHelper.h
│ ├── Test.cpp
│ ├── Test.h
│ ├── TinyXml2Helper.cpp
│ ├── TinyXml2Helper.h
│ ├── TrafficMonitor.cpp
│ ├── TrafficMonitor.h
│ ├── TrafficMonitor.rc
│ ├── TrafficMonitor.vcxproj
│ ├── TrafficMonitor.vcxproj.filters
│ ├── TrafficMonitorDlg.cpp
│ ├── TrafficMonitorDlg.h
│ ├── UpdateHelper.cpp
│ ├── UpdateHelper.h
│ ├── WIC.cpp
│ ├── WIC.h
│ ├── WinVersionHelper.cpp
│ ├── WinVersionHelper.h
│ ├── WindowsSettingHelper.cpp
│ ├── WindowsSettingHelper.h
│ ├── auto_start_helper.cpp
│ ├── auto_start_helper.h
│ ├── crashtool.cpp
│ ├── crashtool.h
│ ├── print_compile_time.bat
│ ├── res/
│ │ ├── Acknowledgement.txt
│ │ ├── Acknowledgement_en.txt
│ │ └── TrafficMonitor.rc2
│ ├── resource.h
│ ├── skins/
│ │ ├── 0默认皮肤/
│ │ │ └── skin.ini
│ │ ├── xml_test/
│ │ │ └── skin.xml
│ │ ├── 皮肤01/
│ │ │ └── skin.ini
│ │ ├── 皮肤02/
│ │ │ └── skin.ini
│ │ ├── 皮肤03/
│ │ │ └── skin.ini
│ │ ├── 皮肤04/
│ │ │ └── skin.ini
│ │ ├── 皮肤05/
│ │ │ └── skin.ini
│ │ ├── 皮肤06/
│ │ │ └── skin.ini
│ │ ├── 皮肤07/
│ │ │ └── skin.ini
│ │ ├── 皮肤08/
│ │ │ └── skin.ini
│ │ ├── 皮肤09/
│ │ │ └── skin.ini
│ │ ├── 皮肤10/
│ │ │ └── skin.ini
│ │ ├── 皮肤10(竖排)/
│ │ │ └── skin.ini
│ │ ├── 皮肤11/
│ │ │ └── skin.ini
│ │ └── 默认皮肤2/
│ │ └── skin.ini
│ ├── stdafx.cpp
│ ├── stdafx.h
│ ├── targetver.h
│ └── tinyxml2/
│ ├── tinyxml2.cpp
│ └── tinyxml2.h
├── TrafficMonitor.sln
├── UpdateLog/
│ ├── update_log.md
│ ├── update_log_en-us.md
│ └── update_log_zh-tw.md
├── include/
│ ├── OpenHardwareMonitor/
│ │ ├── OpenHardwareMonitorApi.h
│ │ └── OpenHardwareMonitorGlobal.h
│ └── PluginInterface.h
├── version.info
├── version_utf8.info
└── 皮肤制作教程.md
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/workflows/main.yml
================================================
name: Release CI
on: push
jobs:
x64_build:
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1
- name: Run msbuild
run: msbuild -p:configuration=release -p:platform=x64 -p:platformToolset=v142
- name: Get current time
uses: 1466587594/current-time@v1
id: current-time
with:
format: YYYYMMDD_HHmmss
utcOffset: "+08:00"
- name : Upload artifact
uses: actions/upload-artifact@v2
with:
name: x64_${{ steps.current-time.outputs.formattedTime }}_TrafficMonitor
path: |
Bin/x64/Release/TrafficMonitor.exe
Bin/x64/Release/*.dll
- name : Upload pdb files
uses: actions/upload-artifact@v2
with:
name: x64_${{ steps.current-time.outputs.formattedTime }}_pdb
path: Bin/x64/Release/*.pdb
x86_build:
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1
- name: Run msbuild
run: msbuild -p:configuration=release -p:platform=x86 -p:platformToolset=v142
- name: Get current time
uses: 1466587594/current-time@v1
id: current-time
with:
format: YYYYMMDD_HHmmss
utcOffset: "+08:00"
- name : Upload artifact
uses: actions/upload-artifact@v2
with:
name: x86_${{ steps.current-time.outputs.formattedTime }}_TrafficMonitor
path: |
Bin/Release/TrafficMonitor.exe
Bin/Release/*.dll
- name : Upload pdb files
uses: actions/upload-artifact@v2
with:
name: x86_${{ steps.current-time.outputs.formattedTime }}_pdb
path: Bin/Release/*.pdb
# winXP_build:
# runs-on: windows-latest
# steps:
# - uses: actions/checkout@v2
# - name: Add msbuild to PATH
# uses: microsoft/setup-msbuild@v1
# - name: Run msbuild
# run: |
# set ExternalCompilerOptions=/DCOMPILE_FOR_WINXP
# msbuild -p:configuration=release -p:platform=x86 -p:platformToolset=v140_xp
# shell: cmd
# - name: Get current time
# uses: 1466587594/current-time@v1
# id: current-time
# with:
# format: YYYYMMDD_HHmmss
# utcOffset: "+08:00"
# - name : Upload artifact
# uses: actions/upload-artifact@v1
# with:
# name: winXP_${{ steps.current-time.outputs.formattedTime }}_TrafficMonitor
# path: Bin/Release/TrafficMonitor.exe
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Typescript v1 declaration files
typings/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
*.ini
!skin.ini
*.dat
*.bak
/TrafficMonitor/skins/test*
[Dd]ebug (without temperature)/
[Rr]elease (without temperature)/
[Dd]ebug (lite)/
[Rr]elease (lite)/
/TrafficMonitor/compile_time.txt
================================================
FILE: Help.md
================================================
**简体中文 | [English](./Help_en-us.md)**<br>
# TrafficMonitor 常见问题
这里是关于TrafficMonitor常见问题的页面,如果你想查看关于TrafficMonitor的各项功能和使用方法的详细介绍,请[点击这里](https://github.com/zhongyang219/TrafficMonitor/wiki)转到TraffinMonitor Wiki页面。
### 1. 如何显示CPU和内存利用率?
在主窗口点击右弹出键菜单,勾选“显示更多信息”。如果需要在任务栏窗口中也显示CPU和内存利用率,则在任务栏窗口中点击右键弹出菜单,在“显示设置<img src="./Screenshots/images/item.png" style="zoom: 80%;" />”子菜单下勾选“CPU和内存利用率”即可。
### 2. 如何单独设置任务栏窗口中每个项目的颜色?
在右键菜单中选择“选项”,切换到“任务栏窗口设置”,勾选“指定每个项目的颜色”,此时再点击“文本颜色”右边的颜色块,就会弹出“任务栏窗口颜色设置”的对话框了。<br>
如果不勾选“指定每个项目的颜色”,则只能为文本设置统一的颜色。
### 3. 设置了开机自动运行仍然无法开机自启。
从1.80版本开始,包含温度监控的版本和不含温度监控的版本采用了不同的方式来实现开机自启动。
* 不含温度监控的版本和1.80以前的版本:
不含温度监控的版本和1.80以前的版本的开机启动功能是通过在注册表“计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run”中创建“TrafficMonitor”的注册表项来实现的,如果你遇到无法开机启动的问题,请先检查该注册表项是否存在,再检查程序的路径是否正确。如果你移动了程序的位置,则会因为路径无效导致开机自启动失效,此时只需要在选项设置中取消“开机自动运行”的勾选,再将其勾选上就可以了。<br>
注意,某些第三方安全软件可能会阻止TrafficMonitor的开机自启动,请尝试在安全软件中允许TrafficMonitor开机自启动。
如果设置了以管理员身份运行也会出现开机无法自启动的问题,请尝试去掉以管理员身份运行。<br>
* 包含温度监控的版本:
包含温度监控的版本是通过创建任务计划来实现开机自启动的。可以通过`控制面板\系统和安全\管理工具`来打开任务计划程序。
如下图所示:
<img src="./Screenshots/images/image3.jpg"/>
如果你遇到无法开机自启动的情况,请到“任务计划程序”中检查TrafficMonitor的计划任务是否正常创建,exe文件的路径是否正确。
开机无法自启动的一个常见原因是你可能移动了TrafficMonitor主程序的位置。如果你为TrafficMonitor设置好了开机自动运行,但是你将TrafficMonitor移动到了其他位置,那么开机自启动肯定就失效了。你需要打开TrafficMonitor的“选项设置”——“常规设置”,如果“开机时自动运行”处于勾选状态,先去掉勾选,然后再次打开“选项设置”——“常规设置”,重新勾选“开机时自动运行”即可。
需要注意的是,如果你使用不含温度监控的版本在注册表中创建了开机自启动项,然后再使用包含温度监控的版本开启开机自启动功能,它会自动将注册表中的开机自启动项删除,再在任务计划中创建开机自启动项。反之亦然。
### 4. 程序弹出“无法保存设置”的对话框。
如果遇到这种情况,说明程序没有向其所在目录下写入数据的权限,导致设置数据无法保存。尝试将程序移动到其他有写入权限的文件夹中可以解决这个问题。<br>
你也可以通过以下步骤将配置文件的保存路径改为C:\Users\\<用户名\>\AppData\Roaming\TrafficMonitor目录。<br>
* 退出TrafficMonitor,以管理员身份重新启动TrafficMonitor。
* 在右键菜单中选择“选项”,切换到“常规设置”选项卡,在“数据和配置文件”中选择“保存到Appdata目录”。<br>
如果此时仍然提示“无法保存设置”,请打开应用程序所在目录,打开`global_cfg.ini`文件,如果不存在请新建一个,在里面添加如下内容:
```
[config]
portable_mode = true
```
如果无法新建,可以在其他位置(比如桌面)新建该文件,然后移动到程序所在目录。
如果`global_cfg.ini`文件已存在,就把`portable_mode `的值改成`true`,保存后重新启动TrafficMonitor。
如果`global_cfg.ini`没有写入权限,可以尝试把该文件复制到桌面,改好后复制回原来的路径将原文件覆盖。
执行以上步骤后理论上应该不会出现这种问题了。如果这个问题仍然出现,请尝试把C:\Users\\<用户名\>\AppData\Roaming\TrafficMonitor\config.ini删除,该文件会在删除后重新生成。
在1.79以后的版本中,如果程序所在目录无法写入数据,会自动将配置和数据文件保存到C:\Users\\<用户名\>\AppData\Roaming\TrafficMonitor目录,此时,“选项”——“常规设置”——“数据和配置文件”中“保存到程序所在目录”将不可用。
### 5. 多显示器时悬浮窗只能在主显示器中显示。
默认情况下做了让悬浮窗无法超出屏幕边界的处理,如果需要将悬浮窗移动到其他显示器,请在悬浮窗中点击右键弹出菜单,选择“其他功能”,勾选“允许超出屏幕边界”,此时悬浮窗不再限制在屏幕内,也能移动到任意显示器中了。<br>
如果移除额外的显示器,那么悬浮窗可能会出现在屏幕区域外导致不可见,此时只需要在通知区域图标上点击鼠标右键,选择“其他功能”,去掉“允许超出屏幕边界”的勾选,悬浮窗就会重新出现屏幕范围内了。
### 6. 网速数值显示不全。
由于不同字体每个字符的宽度并不一样,在某些情况下,确实会出现网速数值显示不全的问题。如果出现了这样的问题,请打开“选项”——“任务栏窗口设置”,在“数据位数”下拉列表中选择一个更大的值。
### 7. 设置了鼠标穿透后如何取消?
在通知区的TrafficMonitor的图标上点击鼠标右键,去掉“鼠标穿透”的勾选即可。<br>
设置了鼠标穿透后,悬浮窗将无法响应任何鼠标消息,也无法弹出右键菜单,但是可以通过通知区图标来弹出右键菜单。主窗口的右键菜单和通知区图标的右键是完全一样的。<br>
另外,即使你之前设置了隐藏通知区图标,开启鼠标穿透后,通知区图标也会自动显示出来,防止无法弹出右键菜单。<br>
说明:以下几种情况下通知区图标会自动显示出来:<br>
* 开启鼠标穿透后;
* 不显示任务栏窗口的情况下隐藏主窗口后;
* 隐藏主窗口的情况下关闭任务栏窗口后;
* 开启鼠标穿透的情况下关闭任务栏窗口后。
### 8. Windows 10 白色任务栏主题时任务栏窗口颜色的问题
在使用白色任务栏主题时,你可以在在“任务栏窗口设置”点击“预设方案”按钮,选择“浅色模式”,可以一键设置浅色模式任务栏颜色。如图所示:
<img src="./Screenshots/images/image2.jpg" style="zoom:80%;" />
同时,你还可能勾选“自动适应Windows10深色/浅色主题”,程序会在Windows10深色/浅色主题更换时自动切换颜色方案。你可以点击“自动适应设置”按钮来配置在深色和浅色主题时分别使用哪个颜色预设。
### 9. 在Windows7/Windows8/8.1下任务栏窗口有个背景色,无法完全透明
这个问题确实存在,但是在Win10下是正常的。这个问题暂时无法解决。
在1.79以后的版本中,Windows8/8.1下可以在“选项”——“任务栏窗口设置”中勾选“背景色透明”,再勾选“根据任务栏颜色自动设置背景色”即可获得较好的显示效果。
### 10. 任务栏窗口有时会显示不全,比如单位被覆盖了
这确实是一个BUG,但是我目前还没有找到一个好的解决方法,这个问题通常出现在任务栏右侧通知区域宽度变化的时候,主要在在切换输入法的时候,如果出现了这个问题,可以将通知区任意一个图标向上拖动将其隐藏,再将其拖下来即可恢复正常。<br>
出现这个问题原因在于,由于系统任务栏通知区的图标数量可能会发生变化,导致通知区的宽度也会时常变化,当通知区的宽度发生变化时,TrafficMonitor的任务栏窗口需要实时调整其位置。但是由于我无法知道通知区的宽度在什么时候变化,因此只能每隔一段时间判断是否需要调整位置,如果任务栏通知区域的宽度变化得太快,就会导致TrafficMonitor的任务栏无法及时调整其位置,从而导致了这个BUG。<br>
#### 以下步骤或许可以解决这个问题:<br>
* 打开“设置”
* 点击“时间和语言”——“区域和语言”
* 点击右侧“高级键盘设置”
* 勾选“使用桌面语言栏”
* 右键点击任务栏,选择“任务栏设置”
* 点击“打开或关闭系统图标”,关闭“输入指示”<br>
方法来自知乎 [win10的任务栏为何一点击就乱动?](https://www.zhihu.com/question/312032145/answer/627965084)<br>
### 11. Windows10中开启HDR后任务栏窗口无法显示
部分用户反馈,在Windows10中开始HDR功能会导致任务栏窗口无法显示。如果遇到这个问题,可以尝试在[“选项设置”——“任务栏窗口设置”](https://github.com/zhongyang219/TrafficMonitor/wiki/选项设置#任务栏窗口设置)中关闭“背景透明”选项的勾选。
### 12. CPU利用率显示和任务管理器不一致
在Windows10及以上操作系统中,如果你需要让TrafficMonitor显示的CPU利用率和任务管理器一致,请到[“选项设置”——“常规设置”——“高级”](https://github.com/zhongyang219/TrafficMonitor/wiki/选项设置#高级)——“CPU使用率获取方式”中选择“使用性能计数器”。
由于Windows10以上操作系统中任务管理器获取CPU利用率的方式发生了改变,因此选择“基于CPU使用时间”的方式获取到的CPU利用率会和任务管理器中显示的不一致。
### 13. 关于TrafficMonitor温度监控的问题
由于温度监控功能在某些电脑中存在一些问题,因此温度监控功能默认是关闭的,如果你要使用TrafficMonitor的温度监控功能,请到[“选项设置”-“常规设置”-“硬件监控”](https://github.com/zhongyang219/TrafficMonitor/wiki/选项设置#硬件监控)中开启。开启后,任务栏右键菜单中的“显示设置”子菜单下才会出现温度相关的项目。
TrafficMonitor的温度监控功能依赖第三方开源库[LibreHardwareMonitor](https://github.com/LibreHardwareMonitor/LibreHardwareMonitor)。如果你遇到硬件温度无法显示,或者显示的温度异常的问题,请先下载LibreHardwareMonitor,并查看LibreHardwareMonitor是否能正常显示对应的温度。
如果LibreHardwareMonitor也无法显示对应硬件的温度,那么我也无法解决这个问题,你可以向LibreHardwareMonitor作者反馈你的问题。
如果LibreHardwareMonitor可以正常显示对应硬件的温度,请向我反馈这个问题,同时提供LibreHardwareMonitor的截图,以便我调查你的问题。
**注意:硬件监控功能(包括温度监控和显卡使用率监控)可能存在一些问题,它可能会占用更多的CPU和内存。据部分用户反馈,开启温度功能后会导致程序崩溃和系统死机等问题,请在知晓以上风险后再决定开启硬件监控功能。否则,请不要使用硬件监控功能。**
## 14. 程序启动时提示找不到“MSVC\*.dll”或“mfc\*.dll”
点击以下链接下载并安装Microsoft Visual C++ 运行环境。
[最新支持的 Visual C++ 可再发行程序包下载 | Microsoft Docs](https://docs.microsoft.com/zh-CN/cpp/windows/latest-supported-vc-redist?view=msvc-170)
<br>
>如果还遇到其他问题,请点击“关于”对话框中的“联系作者”,或者直接[点击此处](mailto:zhongyang219@hotmail.com)向我发送电子邮件。但我由于作者的能力有限,我并不能保证可以解决所有问题,但是你的反馈也许可以帮助我更好的改进这个软件。<br>
请在邮件中尽可能详细地描述你遇到的问题,出现了什么错误提示,你尝试过哪些操作等,最好能够附上截图和配置文件(“选项”——“常规设置”——“打开配置文件所在路径”)。<br>
注意,发送前请先确认一下你发送时使用的电子邮件地址,如果你的邮件地址是形如“outlook_随机字符串@outlook.com”的格式,那么这样的邮箱地址是无法回复的。
这可能是由于你使用了第三方邮箱地址作为Microsoft账号登录Windows导致的。如果有这样的情况,请务必在邮件中附上正确的电子邮件地址。
================================================
FILE: Help_en-us.md
================================================
**[简体中文](./Help.md) | English**<br>
# TrafficMonitor Frequently Asked Questions
This is the page about the Frequently Asked Questions of TrafficMonitor. If you want to view the detailed introduction of the functions and usage of TrafficMonitor, please [click here](https://github.com/zhongyang219/TrafficMonitor/wiki) to go the the TraffinMonitor Wiki page (Only Chinese Available).
### 1. How to show the CPU and memory usage?
Right click the main window and check "Show More Info". If you also need to display the CPU and memory usage in the taskbar window, right click the taskbar window and check "CPU and Memory Usage" in the "Display Settings<img src="./Screenshots/images/item.png" style="zoom: 80%;" />" sub menu.
### 2. How do I set the color of each item in the taskbar window individually?
Select "Options" In the right-click menu, switch to "Taskbar Window Settings" tab, check "Specify colors for each item", and then click the color block on the right side of "Text Color " to pop up the dialog box for taskbar window color settings. <br>
If you do not check "Specify colors for each item", you can only set the uniform color for the text.
### 3. "Auto run when Windows start" dose not work
Starting from version 1.80, the version with temperature monitoring and the version without temperature monitoring have adopted different methods to realize "auto run when Windows start".
* Versions without temperature monitoring and versions before 1.80:
The auto run function of the versions without temperature monitoring and versions before 1.80 is achieved by creating the "TrafficMonitor" key in the registry path of "Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run".
If you encounter the problem of auto run dose not work, please check that the registry exists, and then check the program path is correct. If you move the location of the program, the auto run will be invalid because of the program location being invalid. In this case, you only need to uncheck "Auto run when Windows start" in the option settings, and then check it on.<br>
Note that some third-party security software may prevent TrafficMonitor from booting up automatically. Please try to allow TrafficMonitor to boot up automatically in the security software.
If you set the program to run as an administrator, the auto run function will also not work. Please try to remove running as an administrator.<br>
* Version with temperature monitoring:
The version that includes temperature monitoring implements auto run function by creating a task plan. The task scheduler can be opened through `Control Panel\System and Security\Administrative Tools`. As shown below:
<img src="./Screenshots/images/image3.jpg"/>
If you encounter that situation that the program cannot be started automatically after booting, please go to "Task Scheduler" to check whether the scheduled task of TrafficMonitor is created normally and the path of the exe file is correct.
A common reason why the "Auto run when Windows start" dose not work is that you may have moved the location of the TrafficMonitor main program. If you have set up TrafficMonitor to run automatically at startup, but you move TrafficMonitor to another location, then the auto run at startup will definitely fail. You need to open "Option Settings"-"General Settings" of TrafficMonitor, if "Auto run when Windows start" is checked, remove the check, then open "Option Settings"-"General Settings" again, and check again "Auto run when Windows start" will be fine.
It should be noted that if you use the version without temperature monitoring to create a auto-start item in the registry, and then use the version that with temperature monitoring to turn on the "Auto run when Windows start" function, it will automatically delete the auto-start item in the registry, and then create a auto-start item in the task plan. vice versa.
### 4. The program pops up the "Unable to Save Settings" message box.
If you encountered this problem, that means the program does not have permission to write data to its directory, causing the settings data cannot be saved. Try to move the program to another folder that has write permissions will save this problem. <br>
You can also change the save path of the configuration and data file to the C:\Users\\<username\>\AppData\Roaming\TrafficMonitor directory by the following steps. <br>
* Exit TrafficMonitor and restart TrafficMonitor as an administrator.
* Select "Options" in the right-click menu, switch to the "General Settings" tab, and select "Save to Appdata Directory" in "Configuration and data files".
If it still pops up the "Unable to Save Settings" message box, open the directory where the application is located, open the `global_cfg.ini` file. If it doesn't exist, create a new one, adding the following:
```
[config]
portable_mode = true
```
If the file cannot be created, you can create the file in a different location, such as the desktop, and then move to the directory where the program is located.
If the `global_cfg.ini` file already exists, change the value of `portable_mode` to `true` and save, then restart TrafficMonitor.
If `global_cfg.ini` does not have write permission, you can try copying the file to the desktop, and then copying it back to the original path to overwrite the original file after modified.
After these steps, this problem should not theoretically occur. If this problem still occurs, try to delete the file C:\Users\\<username\>\AppData\Roaming\TrafficMonitor\config.ini. This file will be regenerated after it is deleted.
In version 1.79 and later, if the directory where the program located is not writable, the configuration and data files will be automatically saved to the "C:\Users\\<username\>\AppData\Roaming\TrafficMonitor" directory. At this time, "Options" -“General Settings”-“Save to the program directory” in “Configuration and data files” will not be available.
### 5. The suspension window can only be displayed on the main monitor when multiple monitors are present.
By default, the suspension window cannot be moved out of the screen boundaries. If you need to move the suspension window to other monitors, please right click the suspension window, select "Other Functions", check "Allow Out of Screen Boundaries". At this time the suspension window is no longer limited to the screen, it can be also move to any monitors. <br>
If you remove the extra monitor, then the suspension window may appear outside the screen area to cause the invisible. At this time, you only need to right click the the icon in the notification area, select "Other function", uncheck "Allow Out of Screen Boundaries", the suspension window will appear in the screen area again.
### 6. The net speed value is not fully displayed.
Because the width of each character in different fonts is not the same, in some cases, it does appear the problem of the net speed value is not fully displayed. If this problem occurs, open "Options"-"Taskbar Window Settings", and select a larger value in the "Number of digits" drop down list.
### 7. How to cancel after setting the mouse penetrate?
Right click the TrafficMonitor icon in the notification area, uncheck the "Mouse Penetrate".<br>
After the mouse penetrate is set, the suspension window will not be able to respond to any mouse messages, or pop-up right-click menu. But the menu can be poped up by right click the icon in notification area. The right-click menu of the main window and which of the notification area icon is exactly the same.<br>
In addition, even if you have previously set the hidden notify icon, when the "mouse penetrate" is set, the notify icon will also automatically appear to prevent the right-click menu cannot be displayed. <br>
Note: The notification area icon will be automatically displayed in the following situations: <br>
* After the "Mouse Penetrate" is set;
* Hide the main window without displaying the taskbar window;
* Close the taskbar window when the main window is hidden;
* Close the taskbar window when the "Mouse Penetrate" is set.
### 8. Problems with the taskbar window color in Windows 10 white taskbar theme
When using the white taskbar theme, you can click the "Preset" button in the "Taskbar Window Settings" and select "Light Mode" to set the taskbar color in light mode. As the picture shows:
<img src="./Screenshots/images/image2.jpg" style="zoom:80%;" />
At the same time, you may also check "Auto adapt to Windows 10 dark/light theme", the program will automatically switch the color preset when Windows 10 dark/light theme is changed. You can click the "Auto Adapt settings" button to configure which color preset to use for dark and light themes.
### 9. The taskbar windows cannot be displayed when the HDR is turned on in Windows 10
Some users have reported that turning on the HDR function in Windows 10 will cause the taskbar window to fail to display. If you encounter this problem, you can try turning off the "Background Transparent" option in ["Option Settings" - "Taskbar Window Settings"](https://github.com/zhongyang219/TrafficMonitor/wiki/选项设置#任务栏窗口设置).
### 13. About the temperature monitoring of TrafficMonitor
Due to some problems occurred in some computers caused by the temperature monitoring function, the temperature monitoring function is turned off by default. If you want to use the temperature monitoring function of TrafficMonitor, please go to ["Option Settings"-"General Settings"-"Hardware Monitoring"](https://github.com/zhongyang219/TrafficMonitor/wiki/选项设置#硬件监控) to enable it. After it is turned on, temperature-related items will appear under the "Display Settings" submenu in the taskbar right-click menu.
The temperature monitoring function of TrafficMonitor relies on a third-party open source library [LibreHardwareMonitor](https://github.com/LibreHardwareMonitor/LibreHardwareMonitor). If you encounter the problem that the hardware temperature cannot be displayed, or the displayed temperature is incorrect, then please download LibreHardwareMonitor first, and check whether LibreHardwareMonitor can display the corresponding temperature normally.
If LibreHardwareMonitor cannot display the temperature of the corresponding hardware, then I cannot solve this problem. You can report your problem to the author of LibreHardwareMonitor.
If LibreHardwareMonitor can display the temperature of the corresponding hardware normally, please report this problem to me, and provide a screenshot of LibreHardwareMonitor so that I can investigate your problem.
**Note: The hardware monitoring function (including temperature monitoring and GPU usage monitoring) may have some problems, which may cause more CPU and memory usage. According to feedback from some users, turning on the temperature function will cause problems such as program crashes and system crashes. Please decide to turn on the hardware monitoring function after you are aware of the above risks. Otherwise, please do not use the hardware monitoring function.**
## 14. The program prompts that "MSVC\*.dll" or "mfc\*.dll" cannot be found when the program starts
Click the link below to download and install the Microsoft Visual C++ runtime environment.
[Latest supported Visual C++ Redistributable downloads | Microsoft Docs](https://docs.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170)
<br><br>
>If you have encountered any other problems, please click "Contact Author" in the "About" dialog box, or directly [click here](mailto:zhongyang219@hotmail.com) to send me an email.<br>
Please describe the problems you have encountered in detail, the error prompts, what operations you have tried, it is better to attach the screenshots and configuration files ("Options"-"General Settings"-"Open configuration file path"). <br>
Note: Please confirm the email address that you used before sending the email. If your email address is form like "Outlook_\<random string\>@outlook.com", then such email address is unable to reply.
This may be due to the fact that you are using a third-party e-mail address as the Microsoft account to log on to Windows. If this is the case, be sure to enclose the correct email address in the message.
================================================
FILE: LICENSE
================================================
Copyright (c) <2019> <copyright zhongyang219>
"Anti 996" License Version 1.0 (Draft)
Permission is hereby granted to any individual or legal entity
obtaining a copy of this licensed work (including the source code,
documentation and/or related items, hereinafter collectively referred
to as the "licensed work"), free of charge, to deal with the licensed
work for any purpose, including without limitation, the rights to use,
reproduce, modify, prepare derivative works of, distribute, publish
and sublicense the licensed work, subject to the following conditions:
1. The individual or the legal entity must conspicuously display,
without modification, this License and the notice on each redistributed
or derivative copy of the Licensed Work.
2. The individual or the legal entity must strictly comply with all
applicable laws, regulations, rules and standards of the jurisdiction
relating to labor and employment where the individual is physically
located or where the individual was born or naturalized; or where the
legal entity is registered or is operating (whichever is stricter). In
case that the jurisdiction has no such laws, regulations, rules and
standards or its laws, regulations, rules and standards are
unenforceable, the individual or the legal entity are required to
comply with Core International Labor Standards.
3. The individual or the legal entity shall not induce, suggest or force
its employee(s), whether full-time or part-time, or its independent
contractor(s), in any methods, to agree in oral or written form, to
directly or indirectly restrict, weaken or relinquish his or her
rights or remedies under such laws, regulations, rules and standards
relating to labor and employment as mentioned above, no matter whether
such written or oral agreements are enforceable under the laws of the
said jurisdiction, nor shall such individual or the legal entity
limit, in any methods, the rights of its employee(s) or independent
contractor(s) from reporting or complaining to the copyright holder or
relevant authorities monitoring the compliance of the license about
its violation(s) of the said license.
THE LICENSED WORK IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN ANY WAY CONNECTION WITH THE
LICENSED WORK OR THE USE OR OTHER DEALINGS IN THE LICENSED WORK.
================================================
FILE: LICENSE_CN
================================================
版权所有(c)<2019> <copyright zhongyang219>
反996许可证版本1.0
在符合下列条件的情况下,特此免费向任何得到本授权作品的副本(包括源代码、文件和/或相关内容,以
下统称为“授权作品”)的个人和法人实体授权:被授权个人或法人实体有权以任何目的处置授权作品,包括
但不限于使用、复制,修改,衍生利用、散布,发布和再许可:
1. 个人或法人实体必须在许可作品的每个再散布或衍生副本上包含以上版权声明和本许可证,不得自行修
改。
2. 个人或法人实体必须严格遵守与个人实际所在地或个人出生地或归化地、或法人实体注册地或经营地(
以较严格者为准)的司法管辖区所有适用的与劳动和就业相关法律、法规、规则和标准。如果该司法管辖区
没有此类法律、法规、规章和标准或其法律、法规、规章和标准不可执行,则个人或法人实体必须遵守国际
劳工标准的核心公约。
3. 个人或法人不得以任何方式诱导、暗示或强迫其全职或兼职员工或其独立承包人以口头或书面形式同意
直接或间接限制、削弱或放弃其所拥有的,受相关与劳动和就业有关的法律、法规、规则和标准保护的权利
或补救措施,无论该等书面或口头协议是否被该司法管辖区的法律所承认,该等个人或法人实体也不得以任
何方法限制其雇员或独立承包人向版权持有人或监督许可证合规情况的有关当局报告或投诉上述违反许可证
的行为的权利。
该授权作品是"按原样"提供,不做任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵
权性的保证。在任何情况下,无论是在合同诉讼、侵权诉讼或其他诉讼中,版权持有人均不承担因本软件或
本软件的使用或其他交易而产生、引起或与之相关的任何索赔、损害或其他责任。
================================================
FILE: OpenHardwareMonitorApi/LibreHardwareMonitorLib.xml
================================================
<?xml version="1.0"?>
<doc>
<assembly>
<name>LibreHardwareMonitorLib</name>
</assembly>
<members>
<member name="T:LibreHardwareMonitor.Hardware.Computer">
<summary>
Stores all hardware groups and decides which devices should be enabled and updated.
</summary>
</member>
<member name="E:LibreHardwareMonitor.Hardware.Computer.HardwareAdded">
<inheritdoc />
</member>
<member name="E:LibreHardwareMonitor.Hardware.Computer.HardwareRemoved">
<inheritdoc />
</member>
<member name="M:LibreHardwareMonitor.Hardware.Computer.#ctor">
<summary>
Creates a new <see cref="T:LibreHardwareMonitor.Hardware.IComputer"/> instance with basic initial <see cref="T:LibreHardwareMonitor.Hardware.Computer.Settings"/>.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Computer.#ctor(LibreHardwareMonitor.Hardware.ISettings)">
<summary>
Creates a new <see cref="T:LibreHardwareMonitor.Hardware.IComputer"/> instance with additional <see cref="T:LibreHardwareMonitor.Hardware.ISettings"/>.
</summary>
<param name="settings">Computer settings that will be transferred to each <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/>.</param>
</member>
<member name="P:LibreHardwareMonitor.Hardware.Computer.Hardware">
<inheritdoc />
</member>
<member name="P:LibreHardwareMonitor.Hardware.Computer.SMBios">
<summary>
Contains computer information table read in accordance with <see href="https://www.dmtf.org/standards/smbios">System Management BIOS (SMBIOS) Reference Specification</see>.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.Computer.IsCpuEnabled">
<inheritdoc />
</member>
<member name="P:LibreHardwareMonitor.Hardware.Computer.IsControllerEnabled">
<inheritdoc />
</member>
<member name="P:LibreHardwareMonitor.Hardware.Computer.IsGpuEnabled">
<inheritdoc />
</member>
<member name="P:LibreHardwareMonitor.Hardware.Computer.IsMemoryEnabled">
<inheritdoc />
</member>
<member name="P:LibreHardwareMonitor.Hardware.Computer.IsMotherboardEnabled">
<inheritdoc />
</member>
<member name="P:LibreHardwareMonitor.Hardware.Computer.IsNetworkEnabled">
<inheritdoc />
</member>
<member name="P:LibreHardwareMonitor.Hardware.Computer.IsStorageEnabled">
<inheritdoc />
</member>
<member name="P:LibreHardwareMonitor.Hardware.Computer.IsPsuEnabled">
<inheritdoc />
</member>
<member name="M:LibreHardwareMonitor.Hardware.Computer.Accept(LibreHardwareMonitor.Hardware.IVisitor)">
<summary>
Triggers the <see cref="M:LibreHardwareMonitor.Hardware.IVisitor.VisitComputer(LibreHardwareMonitor.Hardware.IComputer)"/> method for the given observer.
</summary>
<param name="visitor">Observer who call to devices.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Computer.Traverse(LibreHardwareMonitor.Hardware.IVisitor)">
<summary>
Triggers the <see cref="M:LibreHardwareMonitor.Hardware.IElement.Accept(LibreHardwareMonitor.Hardware.IVisitor)"/> method with the given visitor for each device in each group.
</summary>
<param name="visitor">Observer who call to devices.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Computer.Open">
<summary>
If hasn't been opened before, opens <see cref="P:LibreHardwareMonitor.Hardware.Computer.SMBios"/>, <see cref="T:LibreHardwareMonitor.Hardware.Ring0"/>, <see cref="T:LibreHardwareMonitor.Hardware.OpCode"/> and triggers the private <see cref="M:LibreHardwareMonitor.Hardware.Computer.AddGroups"/> method depending on which categories are enabled.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Computer.Close">
<summary>
If opened before, removes all <see cref="T:LibreHardwareMonitor.Hardware.IGroup"/> and triggers <see cref="M:LibreHardwareMonitor.Hardware.OpCode.Close"/>, <see cref="M:LibreHardwareMonitor.Hardware.InpOut.Close"/> and <see cref="M:LibreHardwareMonitor.Hardware.Ring0.Close"/>.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Computer.Reset">
<summary>
If opened before, removes all <see cref="T:LibreHardwareMonitor.Hardware.IGroup"/> and recreates it.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.Computer.Settings">
<summary>
<see cref="T:LibreHardwareMonitor.Hardware.Computer"/> specific additional settings passed to its <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/>.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.Controller.Nzxt.KrakenX3">
Support for the Kraken X3 devices from NZXT
</member>
<member name="M:LibreHardwareMonitor.Hardware.CPU.CpuId.#ctor(System.Int32,System.Int32,LibreHardwareMonitor.Hardware.GroupAffinity)">
<summary>
Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.CPU.CpuId" /> class.
</summary>
<param name="group">The group.</param>
<param name="thread">The thread.</param>
<param name="affinity">The affinity.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.CPU.CpuId.Get(System.Int32,System.Int32)">
<summary>
Gets the specified <see cref="T:LibreHardwareMonitor.Hardware.CPU.CpuId" />.
</summary>
<param name="group">The group.</param>
<param name="thread">The thread.</param>
<returns><see cref="T:LibreHardwareMonitor.Hardware.CPU.CpuId" />.</returns>
</member>
<member name="P:LibreHardwareMonitor.Hardware.CPU.GenericCpu.CpuId">
<summary>
Gets the CPUID.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.CPU.GenericCpu.Index">
<summary>
Gets the CPU index.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Gpu.AmdGpu.SetDefaultFanSpeed">
<summary>
Sets the default fan speed.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Gpu.AmdGpu.GetODNTemperature(LibreHardwareMonitor.Interop.AtiAdlxx.ADLODNTemperatureType,LibreHardwareMonitor.Hardware.Sensor,System.Double,System.Double,System.Boolean)">
<summary>
Gets the OverdriveN temperature.
</summary>
<param name="type">The type.</param>
<param name="sensor">The sensor.</param>
<param name="minTemperature">The minimum temperature.</param>
<param name="scale">The scale.</param>
<param name="reset">If set to <c>true</c>, resets the sensor value to <c>null</c>.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Gpu.AmdGpu.GetPMLog(LibreHardwareMonitor.Interop.AtiAdlxx.ADLPMLogDataOutput,LibreHardwareMonitor.Interop.AtiAdlxx.ADLSensorType,LibreHardwareMonitor.Hardware.Sensor,System.Single,System.Boolean)">
<summary>
Gets a PMLog sensor value.
</summary>
<param name="data">The data.</param>
<param name="sensorType">Type of the sensor.</param>
<param name="sensor">The sensor.</param>
<param name="factor">The factor.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Gpu.AmdGpu.GetOD6Power(LibreHardwareMonitor.Interop.AtiAdlxx.ADLODNCurrentPowerType,LibreHardwareMonitor.Hardware.Sensor)">
<summary>
Gets the Overdrive6 power.
</summary>
<param name="type">The type.</param>
<param name="sensor">The sensor.</param>
</member>
<member name="T:LibreHardwareMonitor.Hardware.GroupAffinity">
<summary>
This structure describes a group-specific affinity.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.GroupAffinity.#ctor(System.UInt16,System.UInt64)">
<summary>
Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.GroupAffinity" /> struct.
</summary>
<param name="group">The group.</param>
<param name="mask">The mask.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.GroupAffinity.Single(System.UInt16,System.Int32)">
<summary>
Gets a single group affinity.
</summary>
<param name="group">The group.</param>
<param name="index">The index.</param>
<returns><see cref="T:LibreHardwareMonitor.Hardware.GroupAffinity" />.</returns>
</member>
<member name="P:LibreHardwareMonitor.Hardware.GroupAffinity.Group">
<summary>
Gets the group.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.GroupAffinity.Mask">
<summary>
Gets the mask.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.GroupAffinity.Equals(System.Object)">
<summary>
Determines whether the specified <see cref="T:System.Object" /> is equal to this instance.
</summary>
<param name="o">The <see cref="T:System.Object" /> to compare with this instance.</param>
<returns><c>true</c> if the specified <see cref="T:System.Object" /> is equal to this instance; otherwise, <c>false</c>.</returns>
</member>
<member name="M:LibreHardwareMonitor.Hardware.GroupAffinity.GetHashCode">
<summary>
Returns a hash code for this instance.
</summary>
<returns>A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.</returns>
</member>
<member name="M:LibreHardwareMonitor.Hardware.GroupAffinity.op_Equality(LibreHardwareMonitor.Hardware.GroupAffinity,LibreHardwareMonitor.Hardware.GroupAffinity)">
<summary>
Implements the == operator.
</summary>
<param name="a1">The a1.</param>
<param name="a2">The a2.</param>
<returns>The result of the operator.</returns>
</member>
<member name="M:LibreHardwareMonitor.Hardware.GroupAffinity.op_Inequality(LibreHardwareMonitor.Hardware.GroupAffinity,LibreHardwareMonitor.Hardware.GroupAffinity)">
<summary>
Implements the != operator.
</summary>
<param name="a1">The a1.</param>
<param name="a2">The a2.</param>
<returns>The result of the operator.</returns>
</member>
<member name="T:LibreHardwareMonitor.Hardware.Hardware">
<summary>
Object representing a component of the computer.
<para>
Individual information can be read from the <see cref="P:LibreHardwareMonitor.Hardware.Hardware.Sensors"/>.
</para>
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Hardware.#ctor(System.String,LibreHardwareMonitor.Hardware.Identifier,LibreHardwareMonitor.Hardware.ISettings)">
<summary>
Creates a new <see cref="T:LibreHardwareMonitor.Hardware.Hardware"/> instance based on the data provided.
</summary>
<param name="name">Component name.</param>
<param name="identifier">Identifier that will be assigned to the device. Based on <see cref="P:LibreHardwareMonitor.Hardware.Hardware.Identifier"/></param>
<param name="settings">Additional settings passed by the <see cref="T:LibreHardwareMonitor.Hardware.IComputer"/>.</param>
</member>
<member name="E:LibreHardwareMonitor.Hardware.Hardware.Closing">
<summary>
Event triggered when <see cref="T:LibreHardwareMonitor.Hardware.Hardware"/> is closing.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.Hardware.HardwareType">
<inheritdoc />
</member>
<member name="P:LibreHardwareMonitor.Hardware.Hardware.Identifier">
<inheritdoc />
</member>
<member name="P:LibreHardwareMonitor.Hardware.Hardware.Name">
<inheritdoc />
</member>
<member name="P:LibreHardwareMonitor.Hardware.Hardware.Parent">
<inheritdoc />
</member>
<member name="P:LibreHardwareMonitor.Hardware.Hardware.Properties">
<inheritdoc />
</member>
<member name="P:LibreHardwareMonitor.Hardware.Hardware.Sensors">
<inheritdoc />
</member>
<member name="P:LibreHardwareMonitor.Hardware.Hardware.SubHardware">
<inheritdoc />
</member>
<member name="M:LibreHardwareMonitor.Hardware.Hardware.GetReport">
<inheritdoc />
</member>
<member name="M:LibreHardwareMonitor.Hardware.Hardware.Update">
<inheritdoc />
</member>
<member name="M:LibreHardwareMonitor.Hardware.Hardware.Accept(LibreHardwareMonitor.Hardware.IVisitor)">
<inheritdoc />
</member>
<member name="M:LibreHardwareMonitor.Hardware.Hardware.Traverse(LibreHardwareMonitor.Hardware.IVisitor)">
<inheritdoc />
</member>
<member name="M:LibreHardwareMonitor.Hardware.Hardware.ActivateSensor(LibreHardwareMonitor.Hardware.ISensor)">
<inheritdoc />
</member>
<member name="M:LibreHardwareMonitor.Hardware.Hardware.DeactivateSensor(LibreHardwareMonitor.Hardware.ISensor)">
<inheritdoc />
</member>
<member name="M:LibreHardwareMonitor.Hardware.Hardware.Close">
<inheritdoc />
</member>
<member name="T:LibreHardwareMonitor.Hardware.HardwareType">
<summary>
Collection of identifiers representing the purpose of the hardware.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.HardwareEventHandler">
<summary>
Handler that will trigger the actions assigned to it when the event occurs.
</summary>
<param name="hardware">Component returned to the assigned action(s).</param>
</member>
<member name="T:LibreHardwareMonitor.Hardware.IComputer">
<summary>
Basic abstract with methods for the class which can store all hardware and decides which devices are to be checked and updated.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IComputer.IsCpuEnabled">
<summary>
Gets or sets a value indicating whether collecting information about <see cref="F:LibreHardwareMonitor.Hardware.HardwareType.Cpu"/> devices should be enabled and updated.
</summary>
<returns><see langword="true"/> if a given category of devices is already enabled.</returns>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IComputer.IsControllerEnabled">
<summary>
Gets or sets a value indicating whether collecting information about:
<list>
<item><see cref="T:LibreHardwareMonitor.Hardware.Controller.TBalancer.TBalancerGroup"/></item>
<item><see cref="T:LibreHardwareMonitor.Hardware.Controller.Heatmaster.HeatmasterGroup"/></item>
<item><see cref="T:LibreHardwareMonitor.Hardware.Controller.AquaComputer.AquaComputerGroup"/></item>
<item><see cref="T:LibreHardwareMonitor.Hardware.Controller.AeroCool.AeroCoolGroup"/></item>
<item><see cref="T:LibreHardwareMonitor.Hardware.Controller.Nzxt.NzxtGroup"/></item>
</list>
devices should be enabled and updated.
</summary>
<returns><see langword="true"/> if a given category of devices is already enabled.</returns>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IComputer.IsGpuEnabled">
<summary>
Gets or sets a value indicating whether collecting information about <see cref="F:LibreHardwareMonitor.Hardware.HardwareType.GpuAmd"/> or <see cref="F:LibreHardwareMonitor.Hardware.HardwareType.GpuNvidia"/> devices should be enabled and updated.
</summary>
<returns><see langword="true"/> if a given category of devices is already enabled.</returns>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IComputer.IsStorageEnabled">
<summary>
Gets or sets a value indicating whether collecting information about <see cref="F:LibreHardwareMonitor.Hardware.HardwareType.Storage"/> devices should be enabled and updated.
</summary>
<returns><see langword="true"/> if a given category of devices is already enabled.</returns>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IComputer.IsMotherboardEnabled">
<summary>
Gets or sets a value indicating whether collecting information about <see cref="F:LibreHardwareMonitor.Hardware.HardwareType.Motherboard"/> devices should be enabled and updated.
</summary>
<returns><see langword="true"/> if a given category of devices is already enabled.</returns>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IComputer.IsNetworkEnabled">
<summary>
Gets or sets a value indicating whether collecting information about <see cref="F:LibreHardwareMonitor.Hardware.HardwareType.Network"/> devices should be enabled and updated.
</summary>
<returns><see langword="true"/> if a given category of devices is already enabled.</returns>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IComputer.IsMemoryEnabled">
<summary>
Gets or sets a value indicating whether collecting information about <see cref="F:LibreHardwareMonitor.Hardware.HardwareType.Memory"/> devices should be enabled and updated.
</summary>
<returns><see langword="true"/> if a given category of devices is already enabled.</returns>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IComputer.IsPsuEnabled">
<summary>
Gets or sets a value indicating whether collecting information about <see cref="F:LibreHardwareMonitor.Hardware.HardwareType.Psu"/> devices should be enabled and updated.
</summary>
<returns><see langword="true"/> if a given category of devices is already enabled.</returns>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IComputer.Hardware">
<summary>
Gets a list of all known <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/>.
<para>Can be updated by <see cref="T:LibreHardwareMonitor.Hardware.IVisitor"/>.</para>
</summary>
<returns>List of all enabled devices.</returns>
</member>
<member name="E:LibreHardwareMonitor.Hardware.IComputer.HardwareAdded">
<summary>
Triggered when a new <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/> is registered.
</summary>
</member>
<member name="E:LibreHardwareMonitor.Hardware.IComputer.HardwareRemoved">
<summary>
Triggered when a <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/> is removed.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.IComputer.GetReport">
<summary>
Generates full LibreHardwareMonitor report for devices that have been enabled.
</summary>
<returns>A formatted text string with library, OS and hardware information.</returns>
</member>
<member name="T:LibreHardwareMonitor.Hardware.Identifier">
<summary>
Represents a unique <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>/<see cref="T:LibreHardwareMonitor.Hardware.IHardware"/> identifier in text format with a / separator.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Identifier.#ctor(LibreHardwareMonitor.Hardware.Identifier,System.String[])">
<summary>
Creates a new identifier instance based on the base <see cref="T:LibreHardwareMonitor.Hardware.Identifier"/> and additional elements.
</summary>
<param name="identifier">Base identifier being the beginning of the new one.</param>
<param name="extensions">Additional parts by which the base <see cref="T:LibreHardwareMonitor.Hardware.Identifier"/> will be extended.</param>
</member>
<member name="T:LibreHardwareMonitor.Hardware.IElement">
<summary>
Abstract parent with logic for the abstract class that stores data.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.IElement.Accept(LibreHardwareMonitor.Hardware.IVisitor)">
<summary>
Accepts the observer for this instance.
</summary>
<param name="visitor">Computer observer making the calls.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.IElement.Traverse(LibreHardwareMonitor.Hardware.IVisitor)">
<summary>
Call the <see cref="M:LibreHardwareMonitor.Hardware.IElement.Accept(LibreHardwareMonitor.Hardware.IVisitor)"/> method for all child instances <c>(called only from visitors).</c>
</summary>
<param name="visitor">Computer observer making the calls.</param>
</member>
<member name="T:LibreHardwareMonitor.Hardware.IGroup">
<summary>
A group of devices from one category in one list.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IGroup.Hardware">
<summary>
Gets a list that stores information about <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/> in a given group.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.IGroup.GetReport">
<summary>
Report containing most of the known information about all <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/> in this <see cref="T:LibreHardwareMonitor.Hardware.IGroup"/>.
</summary>
<returns>A formatted text string with hardware information.</returns>
</member>
<member name="M:LibreHardwareMonitor.Hardware.IGroup.Close">
<summary>
Stop updating this group in the future.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.SensorEventHandler">
<summary>
Handler that will trigger the actions assigned to it when the event occurs.
</summary>
<param name="sensor">Component returned to the assigned action(s).</param>
</member>
<member name="T:LibreHardwareMonitor.Hardware.IHardware">
<summary>
Abstract object that stores information about a device. All sensors are available as an array of <see cref="P:LibreHardwareMonitor.Hardware.IHardware.Sensors"/>.
<para>
Can contain <see cref="P:LibreHardwareMonitor.Hardware.IHardware.SubHardware"/>.
Type specified in <see cref="P:LibreHardwareMonitor.Hardware.IHardware.HardwareType"/>.
</para>
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IHardware.HardwareType">
<summary>
<inheritdoc cref="T:LibreHardwareMonitor.Hardware.HardwareType"/>
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IHardware.Identifier">
<summary>
Gets a unique hardware ID that represents its location.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IHardware.Name">
<summary>
Gets or sets device name.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IHardware.Parent">
<summary>
Gets the device that is the parent of the current hardware. For example, the motherboard is the parent of SuperIO.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IHardware.Sensors">
<summary>
Gets an array of all sensors such as <see cref="F:LibreHardwareMonitor.Hardware.SensorType.Temperature"/>, <see cref="F:LibreHardwareMonitor.Hardware.SensorType.Clock"/>, <see cref="F:LibreHardwareMonitor.Hardware.SensorType.Load"/> etc.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IHardware.SubHardware">
<summary>
Gets child devices, e.g. <see cref="T:LibreHardwareMonitor.Hardware.Motherboard.Lpc.LpcIO"/> of the <see cref="T:LibreHardwareMonitor.Hardware.Motherboard.Motherboard"/>.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.IHardware.GetReport">
<summary>
Report containing most of the known information about the current device.
</summary>
<returns>A formatted text string with hardware information.</returns>
</member>
<member name="M:LibreHardwareMonitor.Hardware.IHardware.Update">
<summary>
Refreshes the information stored in <see cref="P:LibreHardwareMonitor.Hardware.IHardware.Sensors"/> array.
</summary>
</member>
<member name="E:LibreHardwareMonitor.Hardware.IHardware.SensorAdded">
<summary>
An <see langword="event"/> that will be triggered when a new sensor appears.
</summary>
</member>
<member name="E:LibreHardwareMonitor.Hardware.IHardware.SensorRemoved">
<summary>
An <see langword="event"/> that will be triggered when one of the sensors is removed.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IHardware.Properties">
<summary>
Gets rarely changed hardware properties that can't be represented as sensors.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.IParameter">
<summary>
Abstract object that represents additional parameters included in <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IParameter.DefaultValue">
<summary>
Gets a parameter default value defined by library.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IParameter.Description">
<summary>
Gets a parameter description defined by library.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IParameter.Identifier">
<summary>
Gets a unique parameter ID that represents its location.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IParameter.IsDefault">
<summary>
Gets or sets information whether the given <see cref="T:LibreHardwareMonitor.Hardware.IParameter"/> is the default for <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IParameter.Name">
<summary>
Gets a parameter name defined by library.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IParameter.Sensor">
<summary>
Gets the sensor that is the data container for the given parameter.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.IParameter.Value">
<summary>
Gets or sets the current value.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.SensorType">
<summary>
Category of what type the selected sensor is.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.SensorValue">
<summary>
Stores the readed value and the time in which it was recorded.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.SensorValue.#ctor(System.Single,System.DateTime)">
<param name="value"><see cref="P:LibreHardwareMonitor.Hardware.SensorValue.Value"/> of the sensor.</param>
<param name="time">The time code during which the <see cref="P:LibreHardwareMonitor.Hardware.SensorValue.Value"/> was recorded.</param>
</member>
<member name="P:LibreHardwareMonitor.Hardware.SensorValue.Value">
<summary>
Gets the value of the sensor
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.SensorValue.Time">
<summary>
Gets the time code during which the <see cref="P:LibreHardwareMonitor.Hardware.SensorValue.Value"/> was recorded.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.ISensor">
<summary>
Stores information about the readed values and the time in which they were collected.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ISensor.Hardware">
<summary>
<inheritdoc cref="T:LibreHardwareMonitor.Hardware.IHardware"/>
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ISensor.Index">
<summary>
Gets the unique identifier of this sensor for a given <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/>.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ISensor.Max">
<summary>
Gets a maximum value recorded for the given sensor.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ISensor.Min">
<summary>
Gets a minimum value recorded for the given sensor.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ISensor.Name">
<summary>
Gets or sets a sensor name.
<para>By default determined by the library.</para>
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ISensor.SensorType">
<summary>
<inheritdoc cref="T:LibreHardwareMonitor.Hardware.SensorType"/>
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ISensor.Value">
<summary>
Gets the last recorded value for the given sensor.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ISensor.Values">
<summary>
Gets a list of recorded values for the given sensor.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.ISensor.ResetMin">
<summary>
Resets a value stored in <see cref="P:LibreHardwareMonitor.Hardware.ISensor.Min"/>.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.ISensor.ResetMax">
<summary>
Resets a value stored in <see cref="P:LibreHardwareMonitor.Hardware.ISensor.Max"/>.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.ISensorLimits">
<summary>
Abstract object that stores information about the limits of <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ISensorLimits.HighLimit">
<summary>
Upper limit of <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/> value.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ISensorLimits.LowLimit">
<summary>
Lower limit of <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/> value.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.ICriticalSensorLimits">
<summary>
Abstract object that stores information about the critical limits of <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ICriticalSensorLimits.CriticalHighLimit">
<summary>
Critical upper limit of <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/> value.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ICriticalSensorLimits.CriticalLowLimit">
<summary>
Critical lower limit of <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/> value.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.ISettings">
<summary>
Abstract object that stores settings passed to <see cref="T:LibreHardwareMonitor.Hardware.IComputer"/>, <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/> and <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.ISettings.Contains(System.String)">
<summary>
Returns information whether the given collection of settings contains a value assigned to the given key.
</summary>
<param name="name">Key to which the setting value is assigned.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.ISettings.SetValue(System.String,System.String)">
<summary>
Assigns a setting option to a given key.
</summary>
<param name="name">Key to which the setting value is assigned.</param>
<param name="value">Text setting value.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.ISettings.GetValue(System.String,System.String)">
<summary>
Gets a setting option assigned to the given key.
</summary>
<param name="name">Key to which the setting value is assigned.</param>
<param name="value">Default value.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.ISettings.Remove(System.String)">
<summary>
Removes a setting with the specified key from the settings collection.
</summary>
<param name="name">Key to which the setting value is assigned.</param>
</member>
<member name="T:LibreHardwareMonitor.Hardware.IVisitor">
<summary>
Base interface for creating observers who call to devices.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.IVisitor.VisitComputer(LibreHardwareMonitor.Hardware.IComputer)">
<summary>
Refreshes the values of all <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/> in all <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/> on selected <see cref="T:LibreHardwareMonitor.Hardware.IComputer"/>.
</summary>
<param name="computer">Instance of the computer to be revisited.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.IVisitor.VisitHardware(LibreHardwareMonitor.Hardware.IHardware)">
<summary>
Refreshes the values of all <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/> on selected <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/>.
</summary>
<param name="hardware">Instance of the hardware to be revisited.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.IVisitor.VisitSensor(LibreHardwareMonitor.Hardware.ISensor)">
<summary>
Refreshes the values on selected <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
</summary>
<param name="sensor">Instance of the sensor to be revisited.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.IVisitor.VisitParameter(LibreHardwareMonitor.Hardware.IParameter)">
<summary>
Refreshes the values on selected <see cref="T:LibreHardwareMonitor.Hardware.IParameter"/>.
</summary>
<param name="parameter">Instance of the parameter to be revisited.</param>
</member>
<member name="T:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.WindowsEmbeddedControllerIO">
<summary>
An unsafe but universal implementation for the ACPI Embedded Controller IO interface for Windows
</summary>
<remarks>
It is unsafe because of possible race condition between this application and the PC firmware when
writing to the EC registers. For a safe approach ACPI/WMI methods have to be used, but those are
different for each motherboard model.
</remarks>
</member>
<member name="T:LibreHardwareMonitor.Hardware.Motherboard.Motherboard">
<summary>
Represents the motherboard of a computer with its <see cref="T:LibreHardwareMonitor.Hardware.Motherboard.Lpc.LpcIO"/> and <see cref="T:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController"/> as <see cref="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.SubHardware"/>.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.#ctor(LibreHardwareMonitor.Hardware.SMBios,LibreHardwareMonitor.Hardware.ISettings)">
<summary>
Creates motherboard instance by retrieving information from <see cref="T:LibreHardwareMonitor.Hardware.SMBios"/> and creates a new <see cref="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.SubHardware"/> based on data from <see cref="T:LibreHardwareMonitor.Hardware.Motherboard.Lpc.LpcIO"/> and <see cref="T:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController"/>.
</summary>
<param name="smBios"><see cref="T:LibreHardwareMonitor.Hardware.SMBios"/> table containing motherboard data.</param>
<param name="settings">Additional settings passed by <see cref="T:LibreHardwareMonitor.Hardware.IComputer"/>.</param>
</member>
<member name="E:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.SensorAdded">
<inheritdoc/>
</member>
<member name="E:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.SensorRemoved">
<inheritdoc/>
</member>
<member name="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.HardwareType">
<returns><see cref="F:LibreHardwareMonitor.Hardware.HardwareType.Motherboard"/></returns>
</member>
<member name="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Identifier">
<inheritdoc/>
</member>
<member name="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Name">
<summary>
Gets the name obtained from <see cref="T:LibreHardwareMonitor.Hardware.SMBios"/>.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Parent">
<inheritdoc/>
<returns>Always <see langword="null"/></returns>
</member>
<member name="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Properties">
<inheritdoc/>
</member>
<member name="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Sensors">
<inheritdoc/>
</member>
<member name="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.SMBios">
<summary>
Gets the <see cref="T:LibreHardwareMonitor.Hardware.SMBios"/> information.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.SubHardware">
<inheritdoc/>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.GetReport">
<inheritdoc/>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Update">
<summary>
Motherboard itself cannot be updated. Update <see cref="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.SubHardware"/> instead.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Accept(LibreHardwareMonitor.Hardware.IVisitor)">
<inheritdoc/>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Traverse(LibreHardwareMonitor.Hardware.IVisitor)">
<inheritdoc/>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Close">
<summary>
Closes <see cref="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.SubHardware"/> using <see cref="M:LibreHardwareMonitor.Hardware.Hardware.Close"/>.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.ParameterDescription">
<summary>
Composite class containing information about the selected <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.ParameterDescription.#ctor(System.String,System.String,System.Single)">
<summary>
Creates a new instance and assigns values.
</summary>
<param name="name">Name of the selected component.</param>
<param name="description">Description of the selected component.</param>
<param name="defaultValue">Default value of the selected component.</param>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ParameterDescription.Name">
<summary>
Gets a name of the parent <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ParameterDescription.Description">
<summary>
Gets a description of the parent <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ParameterDescription.DefaultValue">
<summary>
Gets a default value of the parent <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.SensorVisitor">
<summary>
Observer making calls to selected component <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>'s.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.SensorVisitor.#ctor(LibreHardwareMonitor.Hardware.SensorEventHandler)">
<summary>
Creates a new observer instance.
</summary>
<param name="handler">Instance of the <see cref="T:LibreHardwareMonitor.Hardware.SensorEventHandler"/> that triggers events during visiting the <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.SensorVisitor.VisitComputer(LibreHardwareMonitor.Hardware.IComputer)">
<summary>
Goes through all the components of the specified <see cref="T:LibreHardwareMonitor.Hardware.IComputer"/> with its <see cref="M:LibreHardwareMonitor.Hardware.IElement.Traverse(LibreHardwareMonitor.Hardware.IVisitor)"/>.
</summary>
<param name="computer">Computer class instance that is derived from the <see cref="T:LibreHardwareMonitor.Hardware.IComputer"/> interface.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.SensorVisitor.VisitHardware(LibreHardwareMonitor.Hardware.IHardware)">
<summary>
Goes through all the components of the specified <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/> with its <see cref="M:LibreHardwareMonitor.Hardware.IElement.Traverse(LibreHardwareMonitor.Hardware.IVisitor)"/>.
</summary>
<param name="hardware">Hardware class instance that is derived from the <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/> interface.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.SensorVisitor.VisitSensor(LibreHardwareMonitor.Hardware.ISensor)">
<summary>
Goes through all the components of the specified <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/> using <see cref="T:LibreHardwareMonitor.Hardware.SensorEventHandler"/>.
</summary>
<param name="sensor">Sensor class instance that is derived from the <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/> interface.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.SensorVisitor.VisitParameter(LibreHardwareMonitor.Hardware.IParameter)">
<summary>
Goes through all the components of the specified <see cref="T:LibreHardwareMonitor.Hardware.IParameter"/>.
<para>
<see cref="T:System.NotImplementedException"/>
</para>
</summary>
<param name="parameter">Parameter class instance that is derived from the <see cref="T:LibreHardwareMonitor.Hardware.IParameter"/> interface.</param>
</member>
<member name="T:LibreHardwareMonitor.Hardware.ChassisSecurityStatus">
<summary>
Chassis security status based on <see href="https://www.dmtf.org/dsp/DSP0134">DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.4.3</see>.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.ChassisStates">
<summary>
Chassis state based on <see href="https://www.dmtf.org/dsp/DSP0134">DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.4.2</see>.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.ChassisType">
<summary>
Chassis type based on <see href="https://www.dmtf.org/dsp/DSP0134">DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.4.1</see>.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.ProcessorFamily">
<summary>
Processor family based on <see href="https://www.dmtf.org/dsp/DSP0134">DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.5.2</see>.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.ProcessorType">
<summary>
Processor type based on <see href="https://www.dmtf.org/dsp/DSP0134">DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.5.1</see>.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.ProcessorSocket">
<summary>
Processor socket based on <see href="https://www.dmtf.org/dsp/DSP0134">DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.5.5</see>.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.SystemWakeUp">
<summary>
System wake-up type based on <see href="https://www.dmtf.org/dsp/DSP0134">DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.2.2</see>.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.CacheAssociativity">
<summary>
Cache associativity based on <see href="https://www.dmtf.org/dsp/DSP0134">DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.8.5</see>.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.CacheDesignation">
<summary>
Processor cache level.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.InformationBase.#ctor(System.Byte[],System.Collections.Generic.IList{System.String})">
<summary>
Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.InformationBase" /> class.
</summary>
<param name="data">The data.</param>
<param name="strings">The strings.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.InformationBase.GetByte(System.Int32)">
<summary>
Gets the byte.
</summary>
<param name="offset">The offset.</param>
<returns><see cref="T:System.Int32" />.</returns>
</member>
<member name="M:LibreHardwareMonitor.Hardware.InformationBase.GetWord(System.Int32)">
<summary>
Gets the word.
</summary>
<param name="offset">The offset.</param>
<returns><see cref="T:System.Int32" />.</returns>
</member>
<member name="M:LibreHardwareMonitor.Hardware.InformationBase.GetString(System.Int32)">
<summary>
Gets the string.
</summary>
<param name="offset">The offset.</param>
<returns><see cref="T:System.String" />.</returns>
</member>
<member name="T:LibreHardwareMonitor.Hardware.BiosInformation">
<summary>
Motherboard BIOS information obtained from the SMBIOS table.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.BiosInformation.Date">
<summary>
Gets the BIOS release date.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.BiosInformation.Size">
<summary>
Gets the size of the physical device containing the BIOS.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.BiosInformation.Vendor">
<summary>
Gets the string number of the BIOS Vendor’s Name.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.BiosInformation.Version">
<summary>
Gets the string number of the BIOS Version. This value is a free-form string that may contain Core and OEM version information.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.BiosInformation.GetSize">
<summary>
Gets the size.
</summary>
<returns><see cref="T:System.Nullable`1" />.</returns>
</member>
<member name="M:LibreHardwareMonitor.Hardware.BiosInformation.GetDate(System.String)">
<summary>
Gets the date.
</summary>
<param name="date">The bios date.</param>
<returns><see cref="T:System.Nullable`1" />.</returns>
</member>
<member name="T:LibreHardwareMonitor.Hardware.SystemInformation">
<summary>
System information obtained from the SMBIOS table.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.SystemInformation.Family">
<summary>
Gets the family associated with system.
<para>
This text string identifies the family to which a particular computer belongs. A family refers to a set of computers that are similar but not identical from a hardware or software point of
view. Typically, a family is composed of different computer models, which have different configurations and pricing points. Computers in the same family often have similar branding and cosmetic
features.
</para>
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.SystemInformation.ManufacturerName">
<summary>
Gets the manufacturer name associated with system.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.SystemInformation.ProductName">
<summary>
Gets the product name associated with system.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.SystemInformation.SerialNumber">
<summary>
Gets the serial number string associated with system.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.SystemInformation.Version">
<summary>
Gets the version string associated with system.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.SystemInformation.WakeUp">
<summary>
Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.SystemWakeUp" />
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.ChassisInformation">
<summary>
Chassis information obtained from the SMBIOS table.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ChassisInformation.AssetTag">
<summary>
Gets the asset tag associated with the enclosure or chassis.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ChassisInformation.BootUpState">
<summary>
Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.ChassisStates" />
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ChassisInformation.ChassisType">
<summary>
Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.ChassisType" />
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ChassisInformation.LockDetected">
<summary>
Gets or sets the chassis lock.
</summary>
<returns>Chassis lock is present if <see langword="true" />. Otherwise, either a lock is not present or it is unknown if the enclosure has a lock.</returns>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ChassisInformation.ManufacturerName">
<summary>
Gets the string describing the chassis or enclosure manufacturer name.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ChassisInformation.PowerCords">
<summary>
Gets the number of power cords associated with the enclosure or chassis.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ChassisInformation.PowerSupplyState">
<summary>
Gets the state of the enclosure’s power supply (or supplies) when last booted.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ChassisInformation.RackHeight">
<summary>
Gets the height of the enclosure, in 'U's. A U is a standard unit of measure for the height of a rack or rack-mountable component and is equal to 1.75 inches or 4.445 cm. A value of <c>0</c>
indicates that the enclosure height is unspecified.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ChassisInformation.SecurityStatus">
<summary>
Gets the physical security status of the enclosure when last booted.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ChassisInformation.SerialNumber">
<summary>
Gets the string describing the chassis or enclosure serial number.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ChassisInformation.SKU">
<summary>
Gets the string describing the chassis or enclosure SKU number.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ChassisInformation.ThermalState">
<summary>
Gets the thermal state of the enclosure when last booted.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ChassisInformation.Version">
<summary>
Gets the number of null-terminated string representing the chassis or enclosure version.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.BaseBoardInformation">
<summary>
Motherboard information obtained from the SMBIOS table.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.BaseBoardInformation.ManufacturerName">
<summary>
Gets the value that represents the manufacturer's name.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.BaseBoardInformation.ProductName">
<summary>
Gets the value that represents the motherboard's name.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.BaseBoardInformation.SerialNumber">
<summary>
Gets the value that represents the motherboard's serial number.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.BaseBoardInformation.Version">
<summary>
Gets the value that represents the motherboard's revision number.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.ProcessorInformation">
<summary>
Processor information obtained from the SMBIOS table.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.CoreCount">
<summary>
Gets the value that represents the number of cores per processor socket.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.CoreEnabled">
<summary>
Gets the value that represents the number of enabled cores per processor socket.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.CurrentSpeed">
<summary>
Gets the value that represents the current processor speed (in MHz).
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.ExternalClock">
<summary>
Gets the external Clock Frequency, in MHz. If the value is unknown, the field is set to 0.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.Family">
<summary>
Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.ProcessorFamily" />
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.ManufacturerName">
<summary>
Gets the string number of Processor Manufacturer.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.MaxSpeed">
<summary>
Gets the value that represents the maximum processor speed (in MHz) supported by the system for this processor socket.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.ProcessorType">
<summary>
Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.ProcessorType" />
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.Serial">
<summary>
Gets the value that represents the string number for the serial number of this processor.
<para>This value is set by the manufacturer and normally not changeable.</para>
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.Socket">
<summary>
Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.ProcessorSocket" />
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.SocketDesignation">
<summary>
Gets the string number for Reference Designation.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.ThreadCount">
<summary>
Gets the value that represents the number of threads per processor socket.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.Version">
<summary>
Gets the value that represents the string number describing the Processor.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.ProcessorCache">
<summary>
Processor cache information obtained from the SMBIOS table.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ProcessorCache.Associativity">
<summary>
Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.CacheAssociativity" />
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ProcessorCache.Designation">
<summary>
Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.CacheDesignation" />
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ProcessorCache.Size">
<summary>
Gets the value that represents the installed cache size.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.ProcessorCache.GetCacheDesignation">
<summary>
Gets the cache designation.
</summary>
<returns><see cref="T:LibreHardwareMonitor.Hardware.CacheDesignation" />.</returns>
</member>
<member name="T:LibreHardwareMonitor.Hardware.MemoryDevice">
<summary>
Memory information obtained from the SMBIOS table.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.MemoryDevice.BankLocator">
<summary>
Gets the string number of the string that identifies the physically labeled bank where the memory device is located.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.MemoryDevice.DeviceLocator">
<summary>
Gets the string number of the string that identifies the physically-labeled socket or board position where the memory device is located.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.MemoryDevice.ManufacturerName">
<summary>
Gets the string number for the manufacturer of this memory device.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.MemoryDevice.PartNumber">
<summary>
Gets the string number for the part number of this memory device.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.MemoryDevice.SerialNumber">
<summary>
Gets the string number for the serial number of this memory device.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.MemoryDevice.Size">
<summary>
Gets the size of the memory device. If the value is 0, no memory device is installed in the socket.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.MemoryDevice.Speed">
<summary>
Gets the the value that identifies the maximum capable speed of the device, in mega transfers per second (MT/s).
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.SMBios">
<summary>
Reads and processes information encoded in an SMBIOS table.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.SMBios.Bios">
<summary>
Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.BiosInformation" />
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.SMBios.Board">
<summary>
Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.BaseBoardInformation" />
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.SMBios.Chassis">
<summary>
Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.ChassisInformation" />
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.SMBios.MemoryDevices">
<summary>
Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.MemoryDevice" />
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.SMBios.Processor">
<summary>
Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.ProcessorInformation" />
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.SMBios.ProcessorCaches">
<summary>
Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.ProcessorCache" />
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.SMBios.System">
<summary>
Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.SystemInformation" />
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.SMBios.GetReport">
<summary>
Report containing most of the information that could be read from the SMBIOS table.
</summary>
<returns>A formatted text string with computer information and the entire SMBIOS table.</returns>
</member>
<member name="T:LibreHardwareMonitor.Hardware.Storage.AbstractStorage.PerformanceValue">
<summary>
Helper to calculate the disk performance with base timestamps
https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-perfrawdata
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.Storage.AtaStorage.Smart">
<summary>
Gets the SMART data.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.Storage.AtaStorage.SmartAttributes">
<summary>
Gets the SMART attributes.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.Storage.NVMeGeneric.Smart">
<summary>
Gets the SMART data.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Storage.SmartAttribute.#ctor(System.Byte,System.String)">
<summary>
Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.Storage.SmartAttribute" /> class.
</summary>
<param name="id">The SMART id of the attribute.</param>
<param name="name">The name of the attribute.</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Storage.SmartAttribute.#ctor(System.Byte,System.String,LibreHardwareMonitor.Hardware.Storage.SmartAttribute.RawValueConversion)">
<summary>
Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.Storage.SmartAttribute" /> class.
</summary>
<param name="id">The SMART id of the attribute.</param>
<param name="name">The name of the attribute.</param>
<param name="rawValueConversion">
A delegate for converting the raw byte
array into a value (or null to use the attribute value).
</param>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Storage.SmartAttribute.#ctor(System.Byte,System.String,LibreHardwareMonitor.Hardware.Storage.SmartAttribute.RawValueConversion,System.Nullable{LibreHardwareMonitor.Hardware.SensorType},System.Int32,System.String,System.Boolean,LibreHardwareMonitor.Hardware.ParameterDescription[])">
<summary>
Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.Storage.SmartAttribute" /> class.
</summary>
<param name="id">The SMART id of the attribute.</param>
<param name="name">The name of the attribute.</param>
<param name="rawValueConversion">
A delegate for converting the raw byte
array into a value (or null to use the attribute value).
</param>
<param name="sensorType">
Type of the sensor or null if no sensor is to
be created.
</param>
<param name="sensorChannel">
If there exists more than one attribute with
the same sensor channel and type, then a sensor is created only for the
first attribute.
</param>
<param name="sensorName">
The name to be used for the sensor, or null if
no sensor is created.
</param>
<param name="defaultHiddenSensor">True to hide the sensor initially.</param>
<param name="parameterDescriptions">
Description for the parameters of the sensor
(or null).
</param>
</member>
<member name="P:LibreHardwareMonitor.Hardware.Storage.SmartAttribute.Id">
<summary>
Gets the SMART identifier.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Hardware.Storage.SmartNames">
<summary>
Localization class for SMART attribute names.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.Storage.SsdMicron.UpdateAdditionalSensors(LibreHardwareMonitor.Interop.Kernel32.SMART_ATTRIBUTE[])">
<inheritdoc />
</member>
<member name="M:LibreHardwareMonitor.Hardware.Storage.WindowsSmart.ReadSmartHealth">
<summary>
Reads Smart health status of the drive
</summary>
<returns>True, if drive is healthy; False, if unhealthy; Null, if it cannot be read</returns>
</member>
<member name="M:LibreHardwareMonitor.Hardware.ThreadAffinity.#cctor">
<summary>
Initializes static members of the <see cref="T:LibreHardwareMonitor.Hardware.ThreadAffinity" /> class.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Hardware.ThreadAffinity.ProcessorGroupCount">
<summary>
Gets the processor group count.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Hardware.ThreadAffinity.IsValid(LibreHardwareMonitor.Hardware.GroupAffinity)">
<summary>
Returns true if the <paramref name="affinity"/> is valid.
</summary>
<param name="affinity">The affinity.</param>
<returns><c>true</c> if the specified affinity is valid; otherwise, <c>false</c>.</returns>
</member>
<member name="M:LibreHardwareMonitor.Hardware.ThreadAffinity.Set(LibreHardwareMonitor.Hardware.GroupAffinity)">
<summary>
Sets the processor group affinity for the current thread.
</summary>
<param name="affinity">The processor group affinity.</param>
<returns>The previous processor group affinity.</returns>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_OK_WAIT">
<summary>
All OK, but need to wait.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_OK_RESTART">
<summary>
All OK, but need restart.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_OK_MODE_CHANGE">
<summary>
All OK but need mode change.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_OK_WARNING">
<summary>
All OK, but with warning.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_OK">
<summary>
ADL function completed successfully.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR">
<summary>
Generic Error. Most likely one or more of the Escape calls to the driver
failed!
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_NOT_INIT">
<summary>
ADL not initialized.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_INVALID_PARAM">
<summary>
One of the parameter passed is invalid.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_INVALID_PARAM_SIZE">
<summary>
One of the parameter size is invalid.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_INVALID_ADL_IDX">
<summary>
Invalid ADL index passed.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_INVALID_CONTROLLER_IDX">
<summary>
Invalid controller index passed.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_INVALID_DIPLAY_IDX">
<summary>
Invalid display index passed.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_NOT_SUPPORTED">
<summary>
Function not supported by the driver.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_NULL_POINTER">
<summary>
Null Pointer error.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_DISABLED_ADAPTER">
<summary>
Call can't be made due to disabled adapter.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_INVALID_CALLBACK">
<summary>
Invalid Callback.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_RESOURCE_CONFLICT">
<summary>
Display Resource conflict.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_SET_INCOMPLETE">
<summary>
Failed to update some of the values. Can be returned by set request that
include multiple values if not all values were successfully committed.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_NO_XDISPLAY">
<summary>
There's no Linux XDisplay in Linux Console environment.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_CRITICAL_WARNING.AvailableSpaceLow">
<summary>
If set to 1, then the available spare space has fallen below the threshold.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_CRITICAL_WARNING.TemperatureThreshold">
<summary>
If set to 1, then a temperature is above an over temperature threshold or below an under temperature threshold.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_CRITICAL_WARNING.ReliabilityDegraded">
<summary>
If set to 1, then the device reliability has been degraded due to significant media related errors or any internal error that degrades device reliability.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_CRITICAL_WARNING.ReadOnly">
<summary>
If set to 1, then the media has been placed in read only mode
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_CRITICAL_WARNING.VolatileMemoryBackupDeviceFailed">
<summary>
If set to 1, then the volatile memory backup device has failed. This field is only valid if the controller has a volatile memory backup solution.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Interop.Kernel32.CreateStruct``1">
<summary>
Create a instance from a struct with zero initialized memory arrays
no need to init every inner array with the correct sizes
</summary>
<typeparam name="T">type of struct that is needed</typeparam>
<returns></returns>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.ATA_COMMAND.ATA_SMART">
<summary>
SMART data requested.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.ATA_COMMAND.ATA_IDENTIFY_DEVICE">
<summary>
Identify data is requested.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.SMART_FEATURES.SMART_READ_DATA">
<summary>
Read SMART data.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.SMART_FEATURES.READ_THRESHOLDS">
<summary>
Read SMART thresholds.
obsolete
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.SMART_FEATURES.ENABLE_DISABLE_AUTOSAVE">
<summary>
Autosave SMART data.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.SMART_FEATURES.SAVE_ATTRIBUTE_VALUES">
<summary>
Save SMART attributes.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.SMART_FEATURES.EXECUTE_OFFLINE_DIAGS">
<summary>
Set SMART to offline immediately.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.SMART_FEATURES.SMART_READ_LOG">
<summary>
Read SMART log.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.SMART_FEATURES.SMART_WRITE_LOG">
<summary>
Write SMART log.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.SMART_FEATURES.WRITE_THRESHOLDS">
<summary>
Write SMART thresholds.
obsolete
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.SMART_FEATURES.ENABLE_SMART">
<summary>
Enable SMART.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.SMART_FEATURES.DISABLE_SMART">
<summary>
Disable SMART.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.SMART_FEATURES.RETURN_SMART_STATUS">
<summary>
Get SMART status.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.SMART_FEATURES.ENABLE_DISABLE_AUTO_OFFLINE">
<summary>
Set SMART to offline automatically.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_POWER_STATE_DESC.MP">
<summary>
bit 0:15 Maximum Power (MP) in centiwatts
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_POWER_STATE_DESC.Reserved0">
<summary>
bit 16:23
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_POWER_STATE_DESC.MPS_NOPS">
<summary>
bit 24 Max Power Scale (MPS), bit 25 Non-Operational State (NOPS)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_POWER_STATE_DESC.ENLAT">
<summary>
bit 32:63 Entry Latency (ENLAT) in microseconds
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_POWER_STATE_DESC.EXLAT">
<summary>
bit 64:95 Exit Latency (EXLAT) in microseconds
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_POWER_STATE_DESC.RRT">
<summary>
bit 96:100 Relative Read Throughput (RRT)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_POWER_STATE_DESC.RRL">
<summary>
bit 104:108 Relative Read Latency (RRL)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_POWER_STATE_DESC.RWT">
<summary>
bit 112:116 Relative Write Throughput (RWT)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_POWER_STATE_DESC.RWL">
<summary>
bit 120:124 Relative Write Latency (RWL)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_POWER_STATE_DESC.IDLP">
<summary>
bit 128:143 Idle Power (IDLP)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_POWER_STATE_DESC.IPS">
<summary>
bit 150:151 Idle Power Scale (IPS)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_POWER_STATE_DESC.Reserved7">
<summary>
bit 152:159
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_POWER_STATE_DESC.ACTP">
<summary>
bit 160:175 Active Power (ACTP)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_POWER_STATE_DESC.APW_APS">
<summary>
bit 176:178 Active Power Workload (APW), bit 182:183 Active Power Scale (APS)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_POWER_STATE_DESC.Reserved9">
<summary>
bit 184:255.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.VID">
<summary>
byte 0:1 M - PCI Vendor ID (VID)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.SSVID">
<summary>
byte 2:3 M - PCI Subsystem Vendor ID (SSVID)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.SN">
<summary>
byte 4: 23 M - Serial Number (SN)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.MN">
<summary>
byte 24:63 M - Model Number (MN)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.FR">
<summary>
byte 64:71 M - Firmware Revision (FR)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.RAB">
<summary>
byte 72 M - Recommended Arbitration Burst (RAB)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.IEEE">
<summary>
byte 73:75 M - IEEE OUI Identifier (IEEE). Controller Vendor code.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.CMIC">
<summary>
byte 76 O - Controller Multi-Path I/O and Namespace Sharing Capabilities (CMIC)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.MDTS">
<summary>
byte 77 M - Maximum Data Transfer Size (MDTS)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.CNTLID">
<summary>
byte 78:79 M - Controller ID (CNTLID)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.VER">
<summary>
byte 80:83 M - Version (VER)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.RTD3R">
<summary>
byte 84:87 M - RTD3 Resume Latency (RTD3R)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.RTD3E">
<summary>
byte 88:91 M - RTD3 Entry Latency (RTD3E)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.OAES">
<summary>
byte 92:95 M - Optional Asynchronous Events Supported (OAES)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.Reserved0">
<summary>
byte 96:239.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.ReservedForManagement">
<summary>
byte 240:255. Refer to the NVMe Management Interface Specification for definition.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.OACS">
<summary>
byte 256:257 M - Optional Admin Command Support (OACS)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.ACL">
<summary>
byte 258 M - Abort Command Limit (ACL)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.AERL">
<summary>
byte 259 M - Asynchronous Event Request Limit (AERL)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.FRMW">
<summary>
byte 260 M - Firmware Updates (FRMW)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.LPA">
<summary>
byte 261 M - Log Page Attributes (LPA)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.ELPE">
<summary>
byte 262 M - Error Log Page Entries (ELPE)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.NPSS">
<summary>
byte 263 M - Number of Power States Support (NPSS)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.AVSCC">
<summary>
byte 264 M - Admin Vendor Specific Command Configuration (AVSCC)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.APSTA">
<summary>
byte 265 O - Autonomous Power State Transition Attributes (APSTA)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.WCTEMP">
<summary>
byte 266:267 M - Warning Composite Temperature Threshold (WCTEMP)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.CCTEMP">
<summary>
byte 268:269 M - Critical Composite Temperature Threshold (CCTEMP)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.MTFA">
<summary>
byte 270:271 O - Maximum Time for Firmware Activation (MTFA)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.HMPRE">
<summary>
byte 272:275 O - Host Memory Buffer Preferred Size (HMPRE)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.HMMIN">
<summary>
byte 276:279 O - Host Memory Buffer Minimum Size (HMMIN)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.TNVMCAP">
<summary>
byte 280:295 O - Total NVM Capacity (TNVMCAP)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.UNVMCAP">
<summary>
byte 296:311 O - Unallocated NVM Capacity (UNVMCAP)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.RPMBS">
<summary>
byte 312:315 O - Replay Protected Memory Block Support (RPMBS)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.Reserved1">
<summary>
byte 316:511
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.SQES">
<summary>
byte 512 M - Submission Queue Entry Size (SQES)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.CQES">
<summary>
byte 513 M - Completion Queue Entry Size (CQES)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.Reserved2">
<summary>
byte 514:515
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.NN">
<summary>
byte 516:519 M - Number of Namespaces (NN)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.ONCS">
<summary>
byte 520:521 M - Optional NVM Command Support (ONCS)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.FUSES">
<summary>
byte 522:523 M - Fused Operation Support (FUSES)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.FNA">
<summary>
byte 524 M - Format NVM Attributes (FNA)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.VWC">
<summary>
byte 525 M - Volatile Write Cache (VWC)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.AWUN">
<summary>
byte 526:527 M - Atomic Write Unit Normal (AWUN)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.AWUPF">
<summary>
byte 528:529 M - Atomic Write Unit Power Fail (AWUPF)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.NVSCC">
<summary>
byte 530 M - NVM Vendor Specific Command Configuration (NVSCC)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.Reserved3">
<summary>
byte 531
</summary>
</member>
<!-- Badly formed XML comment ignored for member "F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.ACWU" -->
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.Reserved4">
<summary>
byte 534:535
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.SGLS">
<summary>
byte 536:539 O - SGL Support (SGLS)
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.Reserved5">
<summary>
byte 540:703
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.Reserved6">
<summary>
byte 704:2047
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.PDS">
<summary>
byte 2048:3071 Power State Descriptors
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_IDENTIFY_CONTROLLER_DATA.VS">
<summary>
byte 3072:4095 Vendor Specific
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_HEALTH_INFO_LOG.CriticalWarning">
<summary>
This field indicates critical warnings for the state of the controller.
Each bit corresponds to a critical warning type; multiple bits may be set.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_HEALTH_INFO_LOG.CompositeTemp">
<summary>
Composite Temperature: Contains the temperature of the overall device (controller and NVM included) in units of Kelvin.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_HEALTH_INFO_LOG.AvailableSpare">
<summary>
Available Spare: Contains a normalized percentage (0 to 100%) of the remaining spare capacity available
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_HEALTH_INFO_LOG.AvailableSpareThreshold">
<summary>
Available Spare Threshold: When the Available Spare falls below the threshold indicated in this field,
an asynchronous event completion may occur. The value is indicated as a normalized percentage (0 to 100%).
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_HEALTH_INFO_LOG.PercentageUsed">
<summary>
Percentage Used: Contains a vendor specific estimate of the percentage of NVM subsystem life used based on
the actual usage and the manufacturer’s prediction of NVM life. A value of 100 indicates that the estimated endurance of
the NVM in the NVM subsystem has been consumed, but may not indicate an NVM subsystem failure. The value is allowed to exceed 100.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_HEALTH_INFO_LOG.DataUnitRead">
<summary>
Data Units Read: Contains the number of 512 byte data units the host has read from the controller;
this value does not include metadata. This value is reported in thousands
(i.e., a value of 1 corresponds to 1000 units of 512 bytes read) and is rounded up.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_HEALTH_INFO_LOG.DataUnitWritten">
<summary>
Data Units Written: Contains the number of 512 byte data units the host has written to the controller;
this value does not include metadata. This value is reported in thousands
(i.e., a value of 1 corresponds to 1000 units of 512 bytes written) and is rounded up.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_HEALTH_INFO_LOG.HostReadCommands">
<summary>
Host Read Commands: Contains the number of read commands completed by the controller.
For the NVM command set, this is the number of Compare and Read commands.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_HEALTH_INFO_LOG.HostWriteCommands">
<summary>
Host Write Commands: Contains the number of write commands completed by the controller.
For the NVM command set, this is the number of Write commands.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_HEALTH_INFO_LOG.ControllerBusyTime">
<summary>
Controller Busy Time: Contains the amount of time the controller is busy with I/O commands.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_HEALTH_INFO_LOG.PowerCycles">
<summary>
Power Cycles: Contains the number of power cycles.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_HEALTH_INFO_LOG.PowerOnHours">
<summary>
Power On Hours: Contains the number of power-on hours.
This does not include time that the controller was powered and in a low power state condition.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_HEALTH_INFO_LOG.UnsafeShutdowns">
<summary>
Unsafe Shutdowns: Contains the number of unsafe shutdowns.
This count is incremented when a shutdown notification is not received prior to loss of power.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_HEALTH_INFO_LOG.MediaAndDataIntegrityErrors">
<summary>
Media Errors: Contains the number of occurrences where the controller detected an unrecoverable data integrity error.
Errors such as uncorrectable ECC, CRC checksum failure, or LBA tag mismatch are included in this field.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_HEALTH_INFO_LOG.NumberErrorInformationLogEntries">
<summary>
Number of Error Information Log Entries: Contains the number of Error Information log entries over the life of the controller
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_HEALTH_INFO_LOG.WarningCompositeTemperatureTime">
<summary>
Warning Composite Temperature Time: Contains the amount of time in minutes that the controller is operational and the Composite Temperature is greater than or equal to the Warning Composite
Temperature Threshold.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_HEALTH_INFO_LOG.CriticalCompositeTemperatureTime">
<summary>
Critical Composite Temperature Time: Contains the amount of time in minutes that the controller is operational and the Composite Temperature is greater than the Critical Composite Temperature
Threshold.
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.Kernel32.NVME_HEALTH_INFO_LOG.TemperatureSensor">
<summary>
Contains the current temperature reported by temperature sensor 1-8.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Interop.Kernel32.IOControlCode.Code">
<summary>
Gets the resulting IO control code.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Interop.Kernel32.IOControlCode.#ctor(System.UInt32,System.UInt32,LibreHardwareMonitor.Interop.Kernel32.IOControlCode.Access)">
<summary>
Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Interop.Kernel32.IOControlCode" /> struct.
</summary>
<param name="deviceType">Type of the device.</param>
<param name="function">The function.</param>
<param name="access">The access.</param>
</member>
<member name="M:LibreHardwareMonitor.Interop.Kernel32.IOControlCode.#ctor(System.UInt32,System.UInt32,LibreHardwareMonitor.Interop.Kernel32.IOControlCode.Method,LibreHardwareMonitor.Interop.Kernel32.IOControlCode.Access)">
<summary>
Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Interop.Kernel32.IOControlCode" /> struct.
</summary>
<param name="deviceType">Type of the device.</param>
<param name="function">The function.</param>
<param name="method">The method.</param>
<param name="access">The access.</param>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.Success">
<summary>
The operation was successful
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.Uninitialized">
<summary>
NvidiaML was not first initialized with nvmlInit()
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.InvalidArgument">
<summary>
A supplied argument is invalid
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.NotSupported">
<summary>
The requested operation is not available on target device
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.NoPermission">
<summary>
The current user does not have permission for operation
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.NotFound">
<summary>
A query to find an object was unsuccessful
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.InsufficientSize">
<summary>
An input argument is not large enough
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.InsufficientPower">
<summary>
A device's external power cables are not properly attached
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.DriverNotLoaded">
<summary>
NVIDIA driver is not loaded
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.TimeOut">
<summary>
User provided timeout passed
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.IRQIssue">
<summary>
NVIDIA Kernel detected an interrupt issue with a GPU
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.LibraryNotFound">
<summary>
NvidiaML Shared Library couldn't be found or loaded
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.FunctionNotFound">
<summary>
Local version of NvidiaML doesn't implement this function
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.CorruptedInfoRom">
<summary>
infoROM is corrupted
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.GpuIsLost">
<summary>
The GPU has fallen off the bus or has otherwise become inaccessible
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.ResetRequired">
<summary>
The GPU requires a reset before it can be used again
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.OperatingSystem">
<summary>
The GPU control device has been blocked by the operating system/cgroups
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.LibRmVersionMismatch">
<summary>
RM detects a driver/library version mismatch
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.InUse">
<summary>
An operation cannot be performed because the GPU is currently in use
</summary>
</member>
<member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.Unknown">
<summary>
An public driver error occurred
</summary>
</member>
<member name="T:LibreHardwareMonitor.Interop.Ring0">
<summary>
Driver with access at kernel level.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Interop.WinNt">
<summary>
Contains Win32 definitions for Windows NT.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Interop.WinNt.LUID">
<summary>
Describes a local identifier for an adapter.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Interop.WinNt.LARGE_INTEGER">
<summary>
Represents a 64-bit signed integer value.
</summary>
</member>
<member name="T:LibreHardwareMonitor.Software.OperatingSystem">
<summary>
Contains basic information about the operating system.
</summary>
</member>
<member name="M:LibreHardwareMonitor.Software.OperatingSystem.#cctor">
<summary>
Statically checks if the current system <see cref="P:LibreHardwareMonitor.Software.OperatingSystem.Is64Bit"/> and <see cref="P:LibreHardwareMonitor.Software.OperatingSystem.IsUnix"/>.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Software.OperatingSystem.Is64Bit">
<summary>
Gets information about whether the current system is 64 bit.
</summary>
</member>
<member name="P:LibreHardwareMonitor.Software.OperatingSystem.IsUnix">
<summary>
Gets information about whether the current system is Unix based.
</summary>
</member>
</members>
</doc>
================================================
FILE: OpenHardwareMonitorApi/OpenHardwareMonitorApi.vcxproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{C0A42F4A-ABB3-4575-B4D5-CEDD8379AC26}</ProjectGuid>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<Keyword>ManagedCProj</Keyword>
<RootNamespace>OpenHardwareMonitorApi</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<IncludePath>$(ProjectDir)..\include;$(IncludePath)</IncludePath>
<OutDir>$(SolutionDir)Bin\$(Configuration)\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<IncludePath>$(ProjectDir)..\include;$(IncludePath)</IncludePath>
<OutDir>$(SolutionDir)Bin\$(Platform)\$(Configuration)\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<IncludePath>$(ProjectDir)..\include;$(IncludePath)</IncludePath>
<OutDir>$(SolutionDir)Bin\$(Configuration)\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<IncludePath>$(ProjectDir)..\include;$(IncludePath)</IncludePath>
<OutDir>$(SolutionDir)Bin\$(Platform)\$(Configuration)\</OutDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions);OPENHARDWAREMONITOR_EXPORTS</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
</ClCompile>
<Link>
<AdditionalDependencies />
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions);OPENHARDWAREMONITOR_EXPORTS</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
</ClCompile>
<Link>
<AdditionalDependencies />
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions);OPENHARDWAREMONITOR_EXPORTS</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
</ClCompile>
<Link>
<AdditionalDependencies />
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions);OPENHARDWAREMONITOR_EXPORTS</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
</ClCompile>
<Link>
<AdditionalDependencies />
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<Reference Include="LibreHardwareMonitorLib">
<HintPath>LibreHardwareMonitorLib.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\include\OpenHardwareMonitor\OpenHardwareMonitorApi.h" />
<ClInclude Include="..\include\OpenHardwareMonitor\OpenHardwareMonitorGlobal.h" />
<ClInclude Include="OpenHardwareMonitorImp.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="Stdafx.h" />
<ClInclude Include="UpdateVisitor.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="OpenHardwareMonitorImp.cpp" />
<ClCompile Include="Stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="UpdateVisitor.cpp" />
</ItemGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="app.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
================================================
FILE: OpenHardwareMonitorApi/OpenHardwareMonitorApi.vcxproj.filters
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="源文件">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="头文件">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="资源文件">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Stdafx.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="OpenHardwareMonitorImp.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="..\include\OpenHardwareMonitor\OpenHardwareMonitorApi.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="UpdateVisitor.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="..\include\OpenHardwareMonitor\OpenHardwareMonitorGlobal.h">
<Filter>头文件</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Stdafx.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="OpenHardwareMonitorImp.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="UpdateVisitor.cpp">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="app.rc">
<Filter>资源文件</Filter>
</ResourceCompile>
</ItemGroup>
</Project>
================================================
FILE: OpenHardwareMonitorApi/OpenHardwareMonitorImp.cpp
================================================
// 这是主 DLL 文件。
#include "stdafx.h"
#include "OpenHardwareMonitorImp.h"
#include <vector>
namespace OpenHardwareMonitorApi
{
static std::wstring error_message;
//将CRL的String类型转换成C++的std::wstring类型
static std::wstring ClrStringToStdWstring(System::String^ str)
{
if (str == nullptr)
{
return std::wstring();
}
else
{
const wchar_t* chars = (const wchar_t*)(Runtime::InteropServices::Marshal::StringToHGlobalUni(str)).ToPointer();
std::wstring os = chars;
Runtime::InteropServices::Marshal::FreeHGlobal(IntPtr((void*)chars));
return os;
}
}
std::shared_ptr<IOpenHardwareMonitor> CreateInstance()
{
std::shared_ptr<IOpenHardwareMonitor> pMonitor;
try
{
MonitorGlobal::Instance()->Init();
pMonitor = std::make_shared<COpenHardwareMonitor>();
}
catch (System::Exception^ e)
{
error_message = ClrStringToStdWstring(e->Message);
}
return pMonitor;
}
std::wstring GetErrorMessage()
{
return error_message;
}
float COpenHardwareMonitor::CpuTemperature()
{
return m_cpu_temperature;
}
float COpenHardwareMonitor::GpuTemperature()
{
if (m_gpu_nvidia_temperature >= 0)
return m_gpu_nvidia_temperature;
else
return m_gpu_ati_temperature;
}
float COpenHardwareMonitor::HDDTemperature()
{
return m_hdd_temperature;
}
float COpenHardwareMonitor::MainboardTemperature()
{
return m_main_board_temperature;
}
float COpenHardwareMonitor::GpuUsage()
{
if (m_gpu_nvidia_usage >= 0)
return m_gpu_nvidia_usage;
else
return m_gpu_ati_usage;
}
float COpenHardwareMonitor::CpuFreq()
{
return m_cpu_freq;
}
const std::map<std::wstring, float>& COpenHardwareMonitor::AllHDDTemperature()
{
return m_all_hdd_temperature;
}
const std::map<std::wstring, float>& COpenHardwareMonitor::AllCpuTemperature()
{
return m_all_cpu_temperature;
}
const std::map<std::wstring, float>& COpenHardwareMonitor::AllHDDUsage()
{
return m_all_hdd_usage;
}
void COpenHardwareMonitor::SetCpuEnable(bool enable)
{
MonitorGlobal::Instance()->computer->IsCpuEnabled = enable;
}
void COpenHardwareMonitor::SetGpuEnable(bool enable)
{
MonitorGlobal::Instance()->computer->IsGpuEnabled = enable;
}
void COpenHardwareMonitor::SetHddEnable(bool enable)
{
MonitorGlobal::Instance()->computer->IsStorageEnabled = enable;
}
void COpenHardwareMonitor::SetMainboardEnable(bool enable)
{
MonitorGlobal::Instance()->computer->IsMotherboardEnabled = enable;
}
bool COpenHardwareMonitor::GetCPUFreq(IHardware^ hardware, float& freq) {
for (int i = 0; i < hardware->Sensors->Length; i++)
{
if (hardware->Sensors[i]->SensorType == SensorType::Clock)
{
String^ name = hardware->Sensors[i]->Name;
if (name != L"Bus Speed")
m_all_cpu_clock[ClrStringToStdWstring(name)] = Convert::ToDouble(hardware->Sensors[i]->Value);
}
}
float sum{};
for (auto i : m_all_cpu_clock)
sum += i.second;
freq = sum / m_all_cpu_clock.size() / 1000.0;
return true;
}
bool COpenHardwareMonitor::GetHardwareTemperature(IHardware^ hardware, float& temperature)
{
temperature = -1;
std::vector<float> all_temperature;
float core_temperature{ -1 };
System::String^ temperature_name;
switch (hardware->HardwareType)
{
case HardwareType::Cpu:
temperature_name = L"Core Average";
break;
case HardwareType::GpuNvidia: case HardwareType::GpuAmd:
temperature_name = L"GPU Core";
break;
default:
break;
}
for (int i = 0; i < hardware->Sensors->Length; i++)
{
//找到温度传感器
if (hardware->Sensors[i]->SensorType == SensorType::Temperature)
{
float cur_temperture = Convert::ToDouble(hardware->Sensors[i]->Value);
all_temperature.push_back(cur_temperture);
if (hardware->Sensors[i]->Name == temperature_name) //如果找到了名称为temperature_name的温度传感器,则将温度保存到core_temperature里
core_temperature = cur_temperture;
}
}
if (core_temperature >= 0)
{
temperature = core_temperature;
return true;
}
if (!all_temperature.empty())
{
//如果有多个温度传感器,则取平均值
float sum{};
for (auto i : all_temperature)
sum += i;
temperature = sum / all_temperature.size();
return true;
}
//如果没有找到温度传感器,则在SubHardware中寻找
for (int i = 0; i < hardware->SubHardware->Length; i++)
{
if (GetHardwareTemperature(hardware->SubHardware[i], temperature))
return true;
}
return false;
}
bool COpenHardwareMonitor::GetCpuTemperature(IHardware^ hardware, float& temperature)
{
temperature = -1;
m_all_cpu_temperature.clear();
for (int i = 0; i < hardware->Sensors->Length; i++)
{
//找到温度传感器
if (hardware->Sensors[i]->SensorType == SensorType::Temperature)
{
String^ name = hardware->Sensors[i]->Name;
//保存每个CPU传感器的温度
m_all_cpu_temperature[ClrStringToStdWstring(name)] = Convert::ToDouble(hardware->Sensors[i]->Value);
}
}
//计算平均温度
if (!m_all_cpu_temperature.empty())
{
float sum{};
for (const auto& item : m_all_cpu_temperature)
sum += item.second;
temperature = sum / m_all_cpu_temperature.size();
}
return temperature > 0;
}
bool COpenHardwareMonitor::GetGpuUsage(IHardware^ hardware, float& gpu_usage)
{
for (int i = 0; i < hardware->Sensors->Length; i++)
{
//找到负载
if (hardware->Sensors[i]->SensorType == SensorType::Load)
{
if (hardware->Sensors[i]->Name == L"GPU Core")
{
gpu_usage = Convert::ToDouble(hardware->Sensors[i]->Value);
return true;
}
}
}
return false;
}
bool COpenHardwareMonitor::GetHddUsage(IHardware^ hardware, float& hdd_usage)
{
for (int i = 0; i < hardware->Sensors->Length; i++)
{
//找到负载
if (hardware->Sensors[i]->SensorType == SensorType::Load)
{
if (hardware->Sensors[i]->Name == L"Total Activity")
{
hdd_usage = Convert::ToDouble(hardware->Sensors[i]->Value);
return true;
}
}
}
return false;
}
COpenHardwareMonitor::COpenHardwareMonitor()
{
ResetAllValues();
}
COpenHardwareMonitor::~COpenHardwareMonitor()
{
MonitorGlobal::Instance()->UnInit();
}
void COpenHardwareMonitor::ResetAllValues()
{
m_cpu_temperature = -1;
m_gpu_nvidia_temperature = -1;
m_gpu_ati_temperature = -1;
m_hdd_temperature = -1;
m_main_board_temperature = -1;
m_gpu_nvidia_usage = -1;
m_gpu_ati_usage = -1;
m_all_hdd_temperature.clear();
m_all_hdd_usage.clear();
}
void COpenHardwareMonitor::InsertValueToMap(std::map<std::wstring, float>& value_map, const std::wstring& key, float value)
{
auto iter = value_map.find(key);
if (iter == value_map.end())
{
value_map[key] = value;
}
else
{
std::wstring key_exist = iter->first;
size_t index = key_exist.rfind(L'#'); //查找字符串是否含有#号
if (index != std::wstring::npos)
{
//取到#号后面的数字,将其加1
int num = _wtoi(key_exist.substr(index + 1).c_str());
num++;
key_exist = key_exist.substr(0, index + 1);
key_exist += std::to_wstring(num);
}
else //没有#号则在末尾添加" #1"
{
key_exist += L" #1";
}
value_map[key_exist] = value;
}
}
void COpenHardwareMonitor::GetHardwareInfo()
{
ResetAllValues();
error_message.clear();
try
{
auto computer = MonitorGlobal::Instance()->computer;
computer->Accept(MonitorGlobal::Instance()->updateVisitor);
for (int i = 0; i < computer->Hardware->Count; i++)
{
//查找硬件类型
switch (computer->Hardware[i]->HardwareType)
{
case HardwareType::Cpu:
if (m_cpu_temperature < 0)
GetCpuTemperature(computer->Hardware[i], m_cpu_temperature);
GetCPUFreq(computer->Hardware[i], m_cpu_freq);
break;
case HardwareType::GpuNvidia:
if (m_gpu_nvidia_temperature < 0)
GetHardwareTemperature(computer->Hardware[i], m_gpu_nvidia_temperature);
if (m_gpu_nvidia_usage < 0)
GetGpuUsage(computer->Hardware[i], m_gpu_nvidia_usage);
break;
case HardwareType::GpuAmd:
if (m_gpu_ati_temperature < 0)
GetHardwareTemperature(computer->Hardware[i], m_gpu_ati_temperature);
if (m_gpu_ati_usage < 0)
GetGpuUsage(computer->Hardware[i], m_gpu_ati_usage);
break;
case HardwareType::Storage:
{
float cur_hdd_temperature = -1;
GetHardwareTemperature(computer->Hardware[i], cur_hdd_temperature);
//m_all_hdd_temperature[ClrStringToStdWstring(computer->Hardware[i]->Name)] = cur_hdd_temperature;
InsertValueToMap(m_all_hdd_temperature, ClrStringToStdWstring(computer->Hardware[i]->Name), cur_hdd_temperature);
float cur_hdd_usage = -1;
GetHddUsage(computer->Hardware[i], cur_hdd_usage);
//m_all_hdd_usage[ClrStringToStdWstring(computer->Hardware[i]->Name)] = cur_hdd_usage;
InsertValueToMap(m_all_hdd_usage, ClrStringToStdWstring(computer->Hardware[i]->Name), cur_hdd_usage);
if (m_hdd_temperature < 0)
m_hdd_temperature = cur_hdd_temperature;
}
break;
case HardwareType::Motherboard:
if (m_main_board_temperature < 0)
GetHardwareTemperature(computer->Hardware[i], m_main_board_temperature);
break;
default:
break;
}
}
}
catch (System::Exception^ e)
{
error_message = ClrStringToStdWstring(e->Message);
}
}
////////////////////////////////////////////////////////////////////////////////////
MonitorGlobal::MonitorGlobal()
{
}
MonitorGlobal::~MonitorGlobal()
{
}
void MonitorGlobal::Init()
{
updateVisitor = gcnew UpdateVisitor();
computer = gcnew Computer();
computer->Open();
}
void MonitorGlobal::UnInit()
{
computer->Close();
}
}
================================================
FILE: OpenHardwareMonitorApi/OpenHardwareMonitorImp.h
================================================
// OpenHardwareMonitorApi.h
#pragma once
#include <string>
#include "OpenHardwareMonitor/OpenHardwareMonitorApi.h"
#include "UpdateVisitor.h"
#include <map>
using namespace System;
using namespace LibreHardwareMonitor::Hardware;
namespace OpenHardwareMonitorApi {
public class COpenHardwareMonitor : public IOpenHardwareMonitor
{
public:
COpenHardwareMonitor();
virtual ~COpenHardwareMonitor();
virtual void GetHardwareInfo() override;
virtual float CpuTemperature() override;
virtual float GpuTemperature() override;
virtual float HDDTemperature() override;
virtual float MainboardTemperature() override;
virtual float GpuUsage() override;
virtual float CpuFreq() override;
virtual const std::map<std::wstring, float>& AllHDDTemperature() override;
virtual const std::map<std::wstring, float>& AllCpuTemperature() override;
virtual const std::map<std::wstring, float>& AllHDDUsage() override;
virtual void SetCpuEnable(bool enable) override;
virtual void SetGpuEnable(bool enable) override;
virtual void SetHddEnable(bool enable) override;
virtual void SetMainboardEnable(bool enable) override;
private:
bool GetHardwareTemperature(IHardware^ hardware, float& temperature);
bool GetCpuTemperature(IHardware^ hardware, float& temperature);
bool GetGpuUsage(IHardware^ hardware, float& gpu_usage);
bool GetHddUsage(IHardware^ hardware, float& hdd_usage);
bool GetCPUFreq(IHardware^ hardware, float& freq);
void ResetAllValues();
//向map中插入一个数值,如果key已经存在,则自动对新插入的key重命名
static void InsertValueToMap(std::map<std::wstring, float>& value_map, const std::wstring& key, float value);
private:
float m_cpu_temperature{};
float m_gpu_nvidia_temperature{};
float m_gpu_ati_temperature{};
float m_hdd_temperature{};
float m_main_board_temperature{};
float m_gpu_nvidia_usage{};
float m_gpu_ati_usage{};
float m_cpu_freq{};
std::map<std::wstring, float> m_all_hdd_temperature;
std::map<std::wstring, float> m_all_cpu_temperature;
std::map<std::wstring, float> m_all_cpu_clock;
std::map<std::wstring, float> m_all_hdd_usage;
};
//一个单实例类
//由于COpenHardwareMonitor是非托管类,不能将托管类的对象作为成员变量,此类用于保存托管类的对象
public ref class MonitorGlobal
{
public:
MonitorGlobal();
~MonitorGlobal();
static MonitorGlobal^ Instance()
{
if (m_instance == nullptr)
{
m_instance = gcnew MonitorGlobal();
}
return m_instance;
}
void Init();
void UnInit();
Computer^ computer;
UpdateVisitor^ updateVisitor{};
private:
static MonitorGlobal^ m_instance{};
};
}
================================================
FILE: OpenHardwareMonitorApi/ReadMe.txt
================================================
========================================================================
DYNAMIC LINK LIBRARY : OpenHardwareMonitorApi Project Overview
========================================================================
AppWizard has created this OpenHardwareMonitorApi DLL for you.
This file contains a summary of what you will find in each of the files that
make up your OpenHardwareMonitorApi application.
OpenHardwareMonitorApi.vcxproj
This is the main project file for VC++ projects generated using an Application Wizard.
It contains information about the version of Visual C++ that generated the file, and
information about the platforms, configurations, and project features selected with the
Application Wizard.
OpenHardwareMonitorApi.vcxproj.filters
This is the filters file for VC++ projects generated using an Application Wizard.
It contains information about the association between the files in your project
and the filters. This association is used in the IDE to show grouping of files with
similar extensions under a specific node (for e.g. ".cpp" files are associated with the
"Source Files" filter).
OpenHardwareMonitorApi.cpp
This is the main DLL source file.
OpenHardwareMonitorApi.h
This file contains a class declaration.
AssemblyInfo.cpp
Contains custom attributes for modifying assembly metadata.
/////////////////////////////////////////////////////////////////////////////
Other notes:
AppWizard uses "TODO:" to indicate parts of the source code you
should add to or customize.
/////////////////////////////////////////////////////////////////////////////
================================================
FILE: OpenHardwareMonitorApi/Stdafx.cpp
================================================
// stdafx.cpp : ֻļԴļ
// OpenHardwareMonitorApi.pch ΪԤͷ
// stdafx.obj ԤϢ
#include "stdafx.h"
================================================
FILE: OpenHardwareMonitorApi/Stdafx.h
================================================
// stdafx.h : ϵͳļİļ
// Ǿʹõĵ
// ضĿİļ
#pragma once
================================================
FILE: OpenHardwareMonitorApi/UpdateVisitor.cpp
================================================
#include "stdafx.h"
#include "UpdateVisitor.h"
namespace OpenHardwareMonitorApi
{
void UpdateVisitor::VisitComputer(IComputer ^ computer)
{
computer->Traverse(this);
}
void UpdateVisitor::VisitHardware(IHardware ^ hardware)
{
hardware->Update();
for each (IHardware^ subHardware in hardware->SubHardware)
{
subHardware->Accept(this);
}
}
void UpdateVisitor::VisitSensor(ISensor ^ sensor)
{
}
void UpdateVisitor::VisitParameter(IParameter ^ parameter)
{
}
}
================================================
FILE: OpenHardwareMonitorApi/UpdateVisitor.h
================================================
#pragma once
using namespace LibreHardwareMonitor::Hardware;
namespace OpenHardwareMonitorApi
{
public ref class UpdateVisitor : IVisitor
{
public:
virtual void VisitComputer(IComputer^ computer);
virtual void VisitHardware(IHardware^ hardware);
virtual void VisitSensor(ISensor^ sensor);
virtual void VisitParameter(IParameter^ parameter);
};
}
================================================
FILE: OpenHardwareMonitorApi/resource.h
================================================
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by app.rc
================================================
FILE: PluginDemo/CustomDrawItem.cpp
================================================
#include "pch.h"
#include "CustomDrawItem.h"
#include "DataManager.h"
const wchar_t* CCustomDrawItem::GetItemName() const
{
return CDataManager::Instance().StringRes(IDS_CUSTOM_DRAW_ITEM);
}
const wchar_t* CCustomDrawItem::GetItemId() const
{
return L"b4zc373y";
}
const wchar_t* CCustomDrawItem::GetItemLableText() const
{
return L"";
}
const wchar_t* CCustomDrawItem::GetItemValueText() const
{
return L"";
}
const wchar_t* CCustomDrawItem::GetItemValueSampleText() const
{
return L"";
}
bool CCustomDrawItem::IsCustomDraw() const
{
return true;
}
int CCustomDrawItem::GetItemWidth() const
{
return 50;
}
static void DrawLine(CDC* pDC, CPoint point1, CPoint point2, COLORREF color)
{
CPen aPen, * pOldPen;
aPen.CreatePen(PS_SOLID, 1, color);
pOldPen = pDC->SelectObject(&aPen);
pDC->MoveTo(point1);
pDC->LineTo(point2);
pDC->SelectObject(pOldPen);
}
void CCustomDrawItem::DrawItem(void* hDC, int x, int y, int w, int h, bool dark_mode)
{
//绘图句柄
CDC* pDC = CDC::FromHandle((HDC)hDC);
//矩形区域
CRect rect(CPoint(x, y), CSize(w, h));
//设置颜色
COLORREF color1{ dark_mode ? RGB(255, 143, 107) : RGB(227, 81, 16) };
COLORREF color2{ dark_mode ? RGB(183, 241, 96) : RGB(83, 131, 11) };
COLORREF color3{ dark_mode ? RGB(158, 218, 251) : RGB(6, 111, 168) };
//显示时、分、秒的矩形区域
CRect rect1{ rect }, rect2{ rect }, rect3{ rect };
rect1.bottom = rect.top + rect.Height() / 3;
rect2 = rect1;
rect2.MoveToY(rect1.bottom);
rect3.top = rect2.bottom;
rect1.DeflateRect(1, 1);
rect2.DeflateRect(1, 1);
rect3.DeflateRect(1, 1);
//根据当前时间计算矩形的宽度
SYSTEMTIME& time{ CDataManager::Instance().m_system_time };
int hour_width{ static_cast<int>((time.wHour + time.wMinute / 60.0) * w / 24) };
int min_width{ static_cast<int>((time.wMinute + time.wSecond / 60.0) * w / 60) };
int sec_width{ time.wSecond * w / 60 };
rect1.right = rect1.left + hour_width;
rect2.right = rect2.left + min_width;
rect3.right = rect3.left + sec_width;
//填充矩形
pDC->FillSolidRect(rect1, color1);
pDC->FillSolidRect(rect2, color2);
pDC->FillSolidRect(rect3, color3);
//绘制刻度
COLORREF color_scale{ dark_mode ? RGB(225, 225, 225) : RGB(45, 45, 45) };
for (int i{}; i < 24; i++)
{
int x_pos{ i * w / 24 + rect1.left };
DrawLine(pDC, CPoint(x_pos, rect1.top), CPoint(x_pos, i % 6 == 0 ? rect1.bottom : rect1.top + rect1.Height() / 2), color_scale);
}
}
================================================
FILE: PluginDemo/CustomDrawItem.h
================================================
#pragma once
#include "PluginInterface.h"
class CCustomDrawItem : public IPluginItem
{
// 通过 IPluginItem 继承
virtual const wchar_t* GetItemName() const override;
virtual const wchar_t* GetItemId() const override;
virtual const wchar_t* GetItemLableText() const override;
virtual const wchar_t* GetItemValueText() const override;
virtual const wchar_t* GetItemValueSampleText() const override;
virtual bool IsCustomDraw() const override;
virtual int GetItemWidth() const override;
virtual void DrawItem(void* hDC, int x, int y, int w, int h, bool dark_mode) override;
};
================================================
FILE: PluginDemo/DataManager.cpp
================================================
#include "pch.h"
#include "DataManager.h"
CDataManager CDataManager::m_instance;
CDataManager::CDataManager()
{
}
CDataManager::~CDataManager()
{
SaveConfig();
}
CDataManager& CDataManager::Instance()
{
return m_instance;
}
void CDataManager::LoadConfig(const std::wstring& config_dir)
{
//获取模块的路径
HMODULE hModule = reinterpret_cast<HMODULE>(&__ImageBase);
wchar_t path[MAX_PATH];
GetModuleFileNameW(hModule, path, MAX_PATH);
std::wstring module_path = path;
m_config_path = module_path;
if (!config_dir.empty())
{
size_t index = module_path.find_last_of(L"\\/");
//模块的文件名
std::wstring module_file_name = module_path.substr(index + 1);
m_config_path = config_dir + module_file_name;
}
m_config_path += L".ini";
m_setting_data.show_second = GetPrivateProfileInt(_T("config"), _T("show_second"), 0, m_config_path.c_str());
//m_setting_data.show_label_text = GetPrivateProfileInt(_T("config"), _T("show_label_text"), 1, config_path.c_str());
}
static void WritePrivateProfileInt(const wchar_t* app_name, const wchar_t* key_name, int value, const wchar_t* file_path)
{
wchar_t buff[16];
swprintf_s(buff, L"%d", value);
WritePrivateProfileString(app_name, key_name, buff, file_path);
}
void CDataManager::SaveConfig() const
{
WritePrivateProfileInt(_T("config"), _T("show_second"), m_setting_data.show_second, m_config_path.c_str());
//WritePrivateProfileInt(_T("config"), _T("show_label_text"), m_setting_data.show_label_text, config_path.c_str());
}
const CString& CDataManager::StringRes(UINT id)
{
auto iter = m_string_table.find(id);
if (iter != m_string_table.end())
{
return iter->second;
}
else
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
m_string_table[id].LoadString(id);
return m_string_table[id];
}
}
================================================
FILE: PluginDemo/DataManager.h
================================================
#pragma once
#include <string>
#include <map>
#define g_data CDataManager::Instance()
struct SettingData
{
bool show_second{};
//bool show_label_text{};
};
class CDataManager
{
private:
CDataManager();
~CDataManager();
public:
static CDataManager& Instance();
void LoadConfig(const std::wstring& config_dir);
void SaveConfig() const;
const CString& StringRes(UINT id); //根据资源id获取一个字符串资源
public:
std::wstring m_cur_time;
std::wstring m_cur_date;
SYSTEMTIME m_system_time;
SettingData m_setting_data;
private:
static CDataManager m_instance;
std::wstring m_config_path;
std::map<UINT, CString> m_string_table;
};
================================================
FILE: PluginDemo/OptionsDlg.cpp
================================================
// OptionsDlg.cpp: 实现文件
//
#include "pch.h"
#include "PluginDemo.h"
#include "OptionsDlg.h"
#include "afxdialogex.h"
// COptionsDlg 对话框
IMPLEMENT_DYNAMIC(COptionsDlg, CDialog)
COptionsDlg::COptionsDlg(CWnd* pParent /*=nullptr*/)
: CDialog(IDD_OPTIONS_DIALOG, pParent)
{
}
COptionsDlg::~COptionsDlg()
{
}
void COptionsDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(COptionsDlg, CDialog)
ON_BN_CLICKED(IDC_SHOW_SECOND_CHECK, &COptionsDlg::OnBnClickedShowSecondCheck)
END_MESSAGE_MAP()
// COptionsDlg 消息处理程序
BOOL COptionsDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化
//初始化控件状态
CheckDlgButton(IDC_SHOW_SECOND_CHECK, m_data.show_second);
//CheckDlgButton(IDC_SHOW_LABEL_CHECK, m_data.show_label_text);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void COptionsDlg::OnBnClickedShowSecondCheck()
{
// TODO: 在此添加控件通知处理程序代码
m_data.show_second = (IsDlgButtonChecked(IDC_SHOW_SECOND_CHECK) != 0);
}
================================================
FILE: PluginDemo/OptionsDlg.h
================================================
#pragma once
#include "DataManager.h"
// COptionsDlg 对话框
class COptionsDlg : public CDialog
{
DECLARE_DYNAMIC(COptionsDlg)
public:
COptionsDlg(CWnd* pParent = nullptr); // 标准构造函数
virtual ~COptionsDlg();
// 对话框数据
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_OPTIONS_DIALOG };
#endif
SettingData m_data;
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
virtual BOOL OnInitDialog();
afx_msg void OnBnClickedShowSecondCheck();
};
================================================
FILE: PluginDemo/PluginDemo.cpp
================================================
#include "pch.h"
#include "PluginDemo.h"
#include "DataManager.h"
#include "OptionsDlg.h"
CPluginDemo CPluginDemo::m_instance;
CPluginDemo::CPluginDemo()
{
}
CPluginDemo& CPluginDemo::Instance()
{
return m_instance;
}
IPluginItem* CPluginDemo::GetItem(int index)
{
switch (index)
{
case 0:
return &m_system_date;
case 1:
return &m_system_time;
case 2:
return &m_custom_draw_item;
default:
break;
}
return nullptr;
}
void CPluginDemo::DataRequired()
{
//获取时间和日期
SYSTEMTIME& system_time{ CDataManager::Instance().m_system_time };
GetLocalTime(&system_time);
wchar_t buff[128];
swprintf_s(buff, L"%d/%.2d/%.2d", system_time.wYear, system_time.wMonth, system_time.wDay);
CDataManager::Instance().m_cur_date = buff;
if (CDataManager::Instance().m_setting_data.show_second)
swprintf_s(buff, L"%.2d:%.2d:%.2d", system_time.wHour, system_time.wMinute, system_time.wSecond);
else
swprintf_s(buff, L"%.2d:%.2d", system_time.wHour, system_time.wMinute);
CDataManager::Instance().m_cur_time = buff;
}
const wchar_t* CPluginDemo::GetInfo(PluginInfoIndex index)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
static CString str;
switch (index)
{
case TMI_NAME:
str.LoadString(IDS_PLUGIN_NAME);
return str.GetString();
case TMI_DESCRIPTION:
str.LoadString(IDS_PLUGIN_DESCRIPTION);
return str.GetString();
case TMI_AUTHOR:
return L"zhongyang219";
case TMI_COPYRIGHT:
return L"Copyright (C) by Zhong Yang 2021";
case TMI_VERSION:
return L"1.0";
case ITMPlugin::TMI_URL:
return L"https://github.com/zhongyang219/TrafficMonitor";
break;
default:
break;
}
return L"";
}
ITMPlugin::OptionReturn CPluginDemo::ShowOptionsDialog(void* hParent)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
COptionsDlg dlg(CWnd::FromHandle((HWND)hParent));
dlg.m_data = CDataManager::Instance().m_setting_data;
if (dlg.DoModal() == IDOK)
{
CDataManager::Instance().m_setting_data = dlg.m_data;
return ITMPlugin::OR_OPTION_CHANGED;
}
return ITMPlugin::OR_OPTION_UNCHANGED;
}
void CPluginDemo::OnExtenedInfo(ExtendedInfoIndex index, const wchar_t* data)
{
switch (index)
{
case ITMPlugin::EI_CONFIG_DIR:
//从配置文件读取配置
g_data.LoadConfig(std::wstring(data));
break;
default:
break;
}
}
ITMPlugin* TMPluginGetInstance()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return &CPluginDemo::Instance();
}
================================================
FILE: PluginDemo/PluginDemo.h
================================================
#pragma once
#include "PluginInterface.h"
#include "PluginSystemDate.h"
#include "PluginSystemTime.h"
#include "CustomDrawItem.h"
class CPluginDemo : public ITMPlugin
{
private:
CPluginDemo();
public:
static CPluginDemo& Instance();
// 通过 ITMPlugin 继承
virtual IPluginItem* GetItem(int index) override;
virtual void DataRequired() override;
virtual const wchar_t* GetInfo(PluginInfoIndex index) override;
virtual OptionReturn ShowOptionsDialog(void* hParent) override;
virtual void OnExtenedInfo(ExtendedInfoIndex index, const wchar_t* data) override;
private:
CPluginSystemDate m_system_date;
CPluginSystemTime m_system_time;
CCustomDrawItem m_custom_draw_item;
static CPluginDemo m_instance;
};
#ifdef __cplusplus
extern "C" {
#endif
__declspec(dllexport) ITMPlugin* TMPluginGetInstance();
#ifdef __cplusplus
}
#endif
================================================
FILE: PluginDemo/PluginDemo.rc
================================================
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "winres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// (壬й) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""winres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_OPTIONS_DIALOG DIALOGEX 0, 0, 165, 77
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "ʱں"
FONT 9, "ź", 400, 0, 0x0
BEGIN
DEFPUSHBUTTON "ȷ",IDOK,50,56,50,14
PUSHBUTTON "ȡ",IDCANCEL,108,56,50,14
GROUPBOX "ʽ",IDC_STATIC,7,7,151,45
CONTROL "ʾ",IDC_SHOW_SECOND_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,21,63,10
END
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_OPTIONS_DIALOG, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 158
TOPMARGIN, 7
BOTTOMMARGIN, 70
END
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// AFX_DIALOG_LAYOUT
//
IDD_OPTIONS_DIALOG AFX_DIALOG_LAYOUT
BEGIN
0
END
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080404b0"
BEGIN
VALUE "CompanyName", "By ZhongYang"
VALUE "FileDescription", "Plugin Demo for TrafficMonitor"
VALUE "FileVersion", "1.0.0.1"
VALUE "InternalName", "PluginDe.dll"
VALUE "LegalCopyright", "Copyright (C) 2021 By ZhongYang"
VALUE "OriginalFilename", "PluginDe.dll"
VALUE "ProductName", "Plugin Demo for TrafficMonitor"
VALUE "ProductVersion", "1.0.0.1"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x804, 1200
END
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE
BEGIN
IDS_PLUGIN_NAME "TrafficMonitorʾ"
IDS_PLUGIN_DESCRIPTION "TrafficMonitorʾΪ߿TrafficMonitorṩ"
IDS_TIME "ʱ"
IDS_DATE ""
IDS_CUSTOM_DRAW_ITEM "Իʾ"
END
#endif // (壬й) resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// Ӣ() resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_OPTIONS_DIALOG DIALOGEX 0, 0, 165, 74
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Time and date settings"
FONT 9, "Segoe UI", 400, 0, 0x0
BEGIN
DEFPUSHBUTTON "OK",IDOK,50,53,50,14
PUSHBUTTON "Cancel",IDCANCEL,108,53,50,14
GROUPBOX "Format",IDC_STATIC,7,7,151,42
CONTROL "Show seconds",IDC_SHOW_SECOND_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,21,63,10
END
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_OPTIONS_DIALOG, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 158
TOPMARGIN, 7
BOTTOMMARGIN, 67
END
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// AFX_DIALOG_LAYOUT
//
IDD_OPTIONS_DIALOG AFX_DIALOG_LAYOUT
BEGIN
0
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE
BEGIN
IDS_PLUGIN_NAME "A sample plug-in for TrafficMonitor."
IDS_PLUGIN_DESCRIPTION "A sample plug-in for TrafficMonitor, providing an example for developers to develop TrafficMonitor plug-ins."
IDS_TIME "Time"
IDS_DATE "Date"
IDS_CUSTOM_DRAW_ITEM "Custom draw example"
END
#endif // Ӣ() resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
================================================
FILE: PluginDemo/PluginDemo.vcxproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{d1ca3ecc-dc32-445a-b734-c4db08d4ba34}</ProjectGuid>
<RootNamespace>PluginDemo</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<IncludePath>$(ProjectDir)..\include;$(IncludePath)</IncludePath>
<OutDir>$(SolutionDir)Bin\$(Configuration)\plugins\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<IncludePath>$(ProjectDir)..\include;$(IncludePath)</IncludePath>
<OutDir>$(SolutionDir)Bin\$(Configuration)\plugins\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<IncludePath>$(ProjectDir)..\include;$(IncludePath)</IncludePath>
<OutDir>$(SolutionDir)Bin\$(Platform)\$(Configuration)\plugins\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<IncludePath>$(ProjectDir)..\include;$(IncludePath)</IncludePath>
<OutDir>$(SolutionDir)Bin\$(Platform)\$(Configuration)\plugins\</OutDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;PLUGINDEMO_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;PLUGINDEMO_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;PLUGINDEMO_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;PLUGINDEMO_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\include\PluginInterface.h" />
<ClInclude Include="CustomDrawItem.h" />
<ClInclude Include="DataManager.h" />
<ClInclude Include="framework.h" />
<ClInclude Include="OptionsDlg.h" />
<ClInclude Include="pch.h" />
<ClInclude Include="PluginDemo.h" />
<ClInclude Include="PluginSystemDate.h" />
<ClInclude Include="PluginSystemTime.h" />
<ClInclude Include="resource.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="CustomDrawItem.cpp" />
<ClCompile Include="DataManager.cpp" />
<ClCompile Include="OptionsDlg.cpp" />
<ClCompile Include="pch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="PluginDemo.cpp" />
<ClCompile Include="PluginSystemDate.cpp" />
<ClCompile Include="PluginSystemTime.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="PluginDemo.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
================================================
FILE: PluginDemo/PluginDemo.vcxproj.filters
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="源文件">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="头文件">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="资源文件">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="framework.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="pch.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="PluginSystemTime.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="PluginSystemDate.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="PluginDemo.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="DataManager.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="..\include\PluginInterface.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="OptionsDlg.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="CustomDrawItem.h">
<Filter>头文件</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="pch.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="PluginSystemTime.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="PluginSystemDate.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="DataManager.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="OptionsDlg.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="PluginDemo.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="CustomDrawItem.cpp">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="PluginDemo.rc">
<Filter>资源文件</Filter>
</ResourceCompile>
</ItemGroup>
</Project>
================================================
FILE: PluginDemo/PluginSystemDate.cpp
================================================
#include "pch.h"
#include <wchar.h>
#include "PluginSystemDate.h"
#include "DataManager.h"
CPluginSystemDate::CPluginSystemDate()
{
}
const wchar_t* CPluginSystemDate::GetItemName() const
{
return CDataManager::Instance().StringRes(IDS_DATE);
}
const wchar_t* CPluginSystemDate::GetItemId() const
{
return L"o282ffc4";
}
const wchar_t* CPluginSystemDate::GetItemLableText() const
{
return CDataManager::Instance().StringRes(IDS_DATE);
}
const wchar_t* CPluginSystemDate::GetItemValueText() const
{
return CDataMana
gitextract_vr76zmf_/ ├── .github/ │ └── workflows/ │ └── main.yml ├── .gitignore ├── Help.md ├── Help_en-us.md ├── LICENSE ├── LICENSE_CN ├── OpenHardwareMonitorApi/ │ ├── LibreHardwareMonitorLib.xml │ ├── OpenHardwareMonitorApi.vcxproj │ ├── OpenHardwareMonitorApi.vcxproj.filters │ ├── OpenHardwareMonitorImp.cpp │ ├── OpenHardwareMonitorImp.h │ ├── ReadMe.txt │ ├── Stdafx.cpp │ ├── Stdafx.h │ ├── UpdateVisitor.cpp │ ├── UpdateVisitor.h │ ├── app.rc │ └── resource.h ├── PluginDemo/ │ ├── CustomDrawItem.cpp │ ├── CustomDrawItem.h │ ├── DataManager.cpp │ ├── DataManager.h │ ├── OptionsDlg.cpp │ ├── OptionsDlg.h │ ├── PluginDemo.cpp │ ├── PluginDemo.h │ ├── PluginDemo.rc │ ├── PluginDemo.vcxproj │ ├── PluginDemo.vcxproj.filters │ ├── PluginSystemDate.cpp │ ├── PluginSystemDate.h │ ├── PluginSystemTime.cpp │ ├── PluginSystemTime.h │ ├── framework.h │ ├── pch.cpp │ ├── pch.h │ └── resource.h ├── README.md ├── README_en-us.md ├── TrafficMonitor/ │ ├── AboutDlg.cpp │ ├── AboutDlg.h │ ├── AdapterCommon.cpp │ ├── AdapterCommon.h │ ├── AppAlreadyRuningDlg.cpp │ ├── AppAlreadyRuningDlg.h │ ├── BaseDialog.cpp │ ├── BaseDialog.h │ ├── CAutoAdaptSettingsDlg.cpp │ ├── CAutoAdaptSettingsDlg.h │ ├── CMFCColorDialogEx.cpp │ ├── CMFCColorDialogEx.h │ ├── CPUUsage.cpp │ ├── CPUUsage.h │ ├── CSkinPreviewView.cpp │ ├── CSkinPreviewView.h │ ├── CTabCtrlEx.cpp │ ├── CTabCtrlEx.h │ ├── CVariant.cpp │ ├── CVariant.h │ ├── CalendarHelper.cpp │ ├── CalendarHelper.h │ ├── ColorSettingListCtrl.cpp │ ├── ColorSettingListCtrl.h │ ├── ColorStatic.cpp │ ├── ColorStatic.h │ ├── ComboBox2.cpp │ ├── ComboBox2.h │ ├── Common.cpp │ ├── Common.h │ ├── CommonData.cpp │ ├── CommonData.h │ ├── DisplayTextSettingDlg.cpp │ ├── DisplayTextSettingDlg.h │ ├── DonateDlg.cpp │ ├── DonateDlg.h │ ├── DrawCommon.cpp │ ├── DrawCommon.h │ ├── DrawCommonEx.cpp │ ├── DrawCommonEx.h │ ├── FilePathHelper.cpp │ ├── FilePathHelper.h │ ├── GeneralSettingsDlg.cpp │ ├── GeneralSettingsDlg.h │ ├── HighResolutionTimer.h │ ├── HistoryTrafficCalendarDlg.cpp │ ├── HistoryTrafficCalendarDlg.h │ ├── HistoryTrafficDlg.cpp │ ├── HistoryTrafficDlg.h │ ├── HistoryTrafficFile.cpp │ ├── HistoryTrafficFile.h │ ├── HistoryTrafficListCtrl.cpp │ ├── HistoryTrafficListCtrl.h │ ├── HistoryTrafficListDlg.cpp │ ├── HistoryTrafficListDlg.h │ ├── IconSelectDlg.cpp │ ├── IconSelectDlg.h │ ├── IniHelper.cpp │ ├── IniHelper.h │ ├── LinkStatic.cpp │ ├── LinkStatic.h │ ├── ListCtrlEx.cpp │ ├── ListCtrlEx.h │ ├── MainWndColorDlg.cpp │ ├── MainWndColorDlg.h │ ├── MainWndSettingsDlg.cpp │ ├── MainWndSettingsDlg.h │ ├── MessageDlg.cpp │ ├── MessageDlg.h │ ├── NetworkInfoDlg.cpp │ ├── NetworkInfoDlg.h │ ├── OptionsDlg.cpp │ ├── OptionsDlg.h │ ├── PictureStatic.cpp │ ├── PictureStatic.h │ ├── PluginInfoDlg.cpp │ ├── PluginInfoDlg.h │ ├── PluginManager.cpp │ ├── PluginManager.h │ ├── PluginManagerDlg.cpp │ ├── PluginManagerDlg.h │ ├── ReadMe.txt │ ├── SelectConnectionsDlg.cpp │ ├── SelectConnectionsDlg.h │ ├── SetItemOrderDlg.cpp │ ├── SetItemOrderDlg.h │ ├── SimpleXML.cpp │ ├── SimpleXML.h │ ├── SkinDlg.cpp │ ├── SkinDlg.h │ ├── SkinFile.cpp │ ├── SkinFile.h │ ├── SpinEdit.cpp │ ├── SpinEdit.h │ ├── StaticEx.cpp │ ├── StaticEx.h │ ├── TabDlg.cpp │ ├── TabDlg.h │ ├── TaskBarDlg.cpp │ ├── TaskBarDlg.h │ ├── TaskBarSettingsDlg.cpp │ ├── TaskBarSettingsDlg.h │ ├── TaskbarColorDlg.cpp │ ├── TaskbarColorDlg.h │ ├── TaskbarDefaultStyle.cpp │ ├── TaskbarDefaultStyle.h │ ├── TaskbarItemOrderHelper.cpp │ ├── TaskbarItemOrderHelper.h │ ├── Test.cpp │ ├── Test.h │ ├── TinyXml2Helper.cpp │ ├── TinyXml2Helper.h │ ├── TrafficMonitor.cpp │ ├── TrafficMonitor.h │ ├── TrafficMonitor.rc │ ├── TrafficMonitor.vcxproj │ ├── TrafficMonitor.vcxproj.filters │ ├── TrafficMonitorDlg.cpp │ ├── TrafficMonitorDlg.h │ ├── UpdateHelper.cpp │ ├── UpdateHelper.h │ ├── WIC.cpp │ ├── WIC.h │ ├── WinVersionHelper.cpp │ ├── WinVersionHelper.h │ ├── WindowsSettingHelper.cpp │ ├── WindowsSettingHelper.h │ ├── auto_start_helper.cpp │ ├── auto_start_helper.h │ ├── crashtool.cpp │ ├── crashtool.h │ ├── print_compile_time.bat │ ├── res/ │ │ ├── Acknowledgement.txt │ │ ├── Acknowledgement_en.txt │ │ └── TrafficMonitor.rc2 │ ├── resource.h │ ├── skins/ │ │ ├── 0默认皮肤/ │ │ │ └── skin.ini │ │ ├── xml_test/ │ │ │ └── skin.xml │ │ ├── 皮肤01/ │ │ │ └── skin.ini │ │ ├── 皮肤02/ │ │ │ └── skin.ini │ │ ├── 皮肤03/ │ │ │ └── skin.ini │ │ ├── 皮肤04/ │ │ │ └── skin.ini │ │ ├── 皮肤05/ │ │ │ └── skin.ini │ │ ├── 皮肤06/ │ │ │ └── skin.ini │ │ ├── 皮肤07/ │ │ │ └── skin.ini │ │ ├── 皮肤08/ │ │ │ └── skin.ini │ │ ├── 皮肤09/ │ │ │ └── skin.ini │ │ ├── 皮肤10/ │ │ │ └── skin.ini │ │ ├── 皮肤10(竖排)/ │ │ │ └── skin.ini │ │ ├── 皮肤11/ │ │ │ └── skin.ini │ │ └── 默认皮肤2/ │ │ └── skin.ini │ ├── stdafx.cpp │ ├── stdafx.h │ ├── targetver.h │ └── tinyxml2/ │ ├── tinyxml2.cpp │ └── tinyxml2.h ├── TrafficMonitor.sln ├── UpdateLog/ │ ├── update_log.md │ ├── update_log_en-us.md │ └── update_log_zh-tw.md ├── include/ │ ├── OpenHardwareMonitor/ │ │ ├── OpenHardwareMonitorApi.h │ │ └── OpenHardwareMonitorGlobal.h │ └── PluginInterface.h ├── version.info ├── version_utf8.info └── 皮肤制作教程.md
SYMBOL INDEX (481 symbols across 124 files)
FILE: OpenHardwareMonitorApi/OpenHardwareMonitorImp.cpp
type OpenHardwareMonitorApi (line 8) | namespace OpenHardwareMonitorApi
function CreateInstance (line 29) | std::shared_ptr<IOpenHardwareMonitor> CreateInstance()
function GetErrorMessage (line 44) | std::wstring GetErrorMessage()
FILE: OpenHardwareMonitorApi/OpenHardwareMonitorImp.h
function namespace (line 12) | namespace OpenHardwareMonitorApi {
FILE: OpenHardwareMonitorApi/UpdateVisitor.cpp
type OpenHardwareMonitorApi (line 4) | namespace OpenHardwareMonitorApi
FILE: OpenHardwareMonitorApi/UpdateVisitor.h
function namespace (line 5) | namespace OpenHardwareMonitorApi
FILE: PluginDemo/CustomDrawItem.cpp
function wchar_t (line 5) | const wchar_t* CCustomDrawItem::GetItemName() const
function wchar_t (line 10) | const wchar_t* CCustomDrawItem::GetItemId() const
function wchar_t (line 15) | const wchar_t* CCustomDrawItem::GetItemLableText() const
function wchar_t (line 20) | const wchar_t* CCustomDrawItem::GetItemValueText() const
function wchar_t (line 25) | const wchar_t* CCustomDrawItem::GetItemValueSampleText() const
function DrawLine (line 40) | static void DrawLine(CDC* pDC, CPoint point1, CPoint point2, COLORREF co...
FILE: PluginDemo/CustomDrawItem.h
function class (line 4) | class CCustomDrawItem : public IPluginItem
FILE: PluginDemo/DataManager.cpp
function CDataManager (line 15) | CDataManager& CDataManager::Instance()
function WritePrivateProfileInt (line 40) | static void WritePrivateProfileInt(const wchar_t* app_name, const wchar_...
function CString (line 53) | const CString& CDataManager::StringRes(UINT id)
FILE: PluginDemo/DataManager.h
type SettingData (line 7) | struct SettingData
function class (line 13) | class CDataManager
FILE: PluginDemo/OptionsDlg.cpp
function BOOL (line 38) | BOOL COptionsDlg::OnInitDialog()
FILE: PluginDemo/OptionsDlg.h
function class (line 6) | class COptionsDlg : public CDialog
FILE: PluginDemo/PluginDemo.cpp
function CPluginDemo (line 12) | CPluginDemo& CPluginDemo::Instance()
function IPluginItem (line 17) | IPluginItem* CPluginDemo::GetItem(int index)
function wchar_t (line 49) | const wchar_t* CPluginDemo::GetInfo(PluginInfoIndex index)
function ITMPlugin (line 104) | ITMPlugin* TMPluginGetInstance()
FILE: PluginDemo/PluginDemo.h
function class (line 7) | class CPluginDemo : public ITMPlugin
FILE: PluginDemo/PluginSystemDate.cpp
function wchar_t (line 10) | const wchar_t* CPluginSystemDate::GetItemName() const
function wchar_t (line 15) | const wchar_t* CPluginSystemDate::GetItemId() const
function wchar_t (line 20) | const wchar_t* CPluginSystemDate::GetItemLableText() const
function wchar_t (line 25) | const wchar_t* CPluginSystemDate::GetItemValueText() const
function wchar_t (line 30) | const wchar_t* CPluginSystemDate::GetItemValueSampleText() const
FILE: PluginDemo/PluginSystemDate.h
function class (line 4) | class CPluginSystemDate : public IPluginItem
FILE: PluginDemo/PluginSystemTime.cpp
function wchar_t (line 10) | const wchar_t* CPluginSystemTime::GetItemName() const
function wchar_t (line 15) | const wchar_t* CPluginSystemTime::GetItemId() const
function wchar_t (line 20) | const wchar_t* CPluginSystemTime::GetItemLableText() const
function wchar_t (line 25) | const wchar_t* CPluginSystemTime::GetItemValueText() const
function wchar_t (line 30) | const wchar_t* CPluginSystemTime::GetItemValueSampleText() const
FILE: PluginDemo/PluginSystemTime.h
function class (line 4) | class CPluginSystemTime : public IPluginItem
FILE: TrafficMonitor/AboutDlg.cpp
function CString (line 35) | CString CAboutDlg::GetDonateList()
function CString (line 40) | CString CAboutDlg::GetDialogName() const
function BOOL (line 45) | BOOL CAboutDlg::OnInitDialog()
function BOOL (line 141) | BOOL CAboutDlg::PreTranslateMessage(MSG* pMsg)
function afx_msg (line 156) | afx_msg LRESULT CAboutDlg::OnLinkClicked(WPARAM wParam, LPARAM lParam)
function BOOL (line 199) | BOOL CAboutDlg::OnEraseBkgnd(CDC* pDC)
function HBRUSH (line 230) | HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
FILE: TrafficMonitor/AboutDlg.h
function class (line 8) | class CAboutDlg : public CBaseDialog
FILE: TrafficMonitor/AdapterCommon.h
type NetWorkConection (line 5) | struct NetWorkConection
function class (line 17) | class CAdapterCommon
FILE: TrafficMonitor/AppAlreadyRuningDlg.cpp
function BOOL (line 41) | BOOL CAppAlreadyRuningDlg::OnInitDialog()
FILE: TrafficMonitor/AppAlreadyRuningDlg.h
function class (line 6) | class CAppAlreadyRuningDlg : public CDialog
FILE: TrafficMonitor/BaseDialog.cpp
function HWND (line 31) | HWND CBaseDialog::GetUniqueHandel(LPCTSTR dlg_name)
function BOOL (line 87) | BOOL CBaseDialog::OnInitDialog()
function INT_PTR (line 156) | INT_PTR CBaseDialog::DoModal()
FILE: TrafficMonitor/BaseDialog.h
function class (line 8) | class CBaseDialog : public CDialog
FILE: TrafficMonitor/CAutoAdaptSettingsDlg.cpp
function BOOL (line 58) | BOOL CAutoAdaptSettingsDlg::OnInitDialog()
function BOOL (line 89) | BOOL CAutoAdaptSettingsDlg::PreTranslateMessage(MSG* pMsg)
FILE: TrafficMonitor/CAutoAdaptSettingsDlg.h
function class (line 6) | class CAutoAdaptSettingsDlg : public CDialog
FILE: TrafficMonitor/CMFCColorDialogEx.cpp
function BOOL (line 30) | BOOL CMFCColorDialogEx::OnInitDialog()
FILE: TrafficMonitor/CMFCColorDialogEx.h
function class (line 6) | class CMFCColorDialogEx : public CMFCColorDialog
FILE: TrafficMonitor/CPUUsage.h
function class (line 6) | class CCPUUsage
FILE: TrafficMonitor/CSkinPreviewView.h
function class (line 9) | class CSkinPreviewView : public CScrollView
FILE: TrafficMonitor/CTabCtrlEx.cpp
function CWnd (line 55) | CWnd* CTabCtrlEx::GetCurrentTab()
FILE: TrafficMonitor/CTabCtrlEx.h
function class (line 6) | class CTabCtrlEx : public CTabCtrl
FILE: TrafficMonitor/CVariant.cpp
function CString (line 45) | CString CVariant::ToString() const
FILE: TrafficMonitor/CVariant.h
function class (line 2) | class CVariant
FILE: TrafficMonitor/CalendarHelper.h
type DayTraffic (line 5) | struct DayTraffic
function class (line 19) | class CCalendarHelper
FILE: TrafficMonitor/ColorSettingListCtrl.cpp
function COLORREF (line 21) | COLORREF CColorSettingListCtrl::GetItemColor(int row, int col)
FILE: TrafficMonitor/ColorSettingListCtrl.h
function class (line 4) | class CColorSettingListCtrl :
FILE: TrafficMonitor/ColorStatic.cpp
function BOOL (line 202) | BOOL CColorStatic::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
FILE: TrafficMonitor/ColorStatic.h
function m_link_cursor (line 24) | bool m_link_cursor{ false }; //是否启用超链接形状的光标
FILE: TrafficMonitor/ComboBox2.cpp
function BOOL (line 37) | BOOL CComboBox2::PreTranslateMessage(MSG* pMsg)
FILE: TrafficMonitor/ComboBox2.h
function class (line 6) | class CComboBox2 : public CComboBox
FILE: TrafficMonitor/Common.cpp
function wstring (line 15) | wstring CCommon::StrToUnicode(const char* str, bool utf8)
function string (line 28) | string CCommon::UnicodeToStr(const wchar_t* wstr, bool utf8)
function CString (line 79) | CString CCommon::DataSizeToString(unsigned long long size, const PublicS...
function CString (line 187) | CString CCommon::DataSizeToString(unsigned long long size, bool with_space)
function CString (line 205) | CString CCommon::TemperatureToString(float temperature, const PublicSett...
function CString (line 218) | CString CCommon::UsageToString(int usage, const PublicSettingData& cfg)
function CString (line 234) | CString CCommon::FreqToString(float freq, const PublicSettingData& cfg)
function CString (line 257) | CString CCommon::KBytesToString(unsigned __int64 kb_size)
function __int64 (line 271) | __int64 CCommon::CompareFileTime2(FILETIME time1, FILETIME time2)
function BOOL (line 302) | BOOL CCommon::CreateFileShortcut(LPCTSTR lpszLnkFileDir, LPCTSTR lpszFil...
function wstring (line 402) | wstring CCommon::GetStartUpPath()
function SYSTEMTIME (line 472) | SYSTEMTIME CCommon::CompareSystemTime(SYSTEMTIME a, SYSTEMTIME b)
function wstring (line 501) | wstring CCommon::GetModuleDir()
function wstring (line 512) | wstring CCommon::GetSystemDir()
function wstring (line 519) | wstring CCommon::GetTemplateDir()
function wstring (line 530) | wstring CCommon::GetAppDataConfigDir()
function wstring (line 609) | wstring CCommon::GetJsonValueSimple(const wstring& json_str, const wstri...
function CString (line 749) | CString CCommon::LoadText(UINT id, LPCTSTR back_str)
function CString (line 758) | CString CCommon::LoadText(LPCTSTR front_str, UINT id, LPCTSTR back_str)
function CString (line 769) | CString CCommon::StringFormat(LPCTSTR format_str, const std::initializer...
function CString (line 785) | CString CCommon::LoadTextFormat(UINT id, const std::initializer_list<CVa...
function CString (line 792) | CString CCommon::IntToString(__int64 n, bool thousand_separation, bool i...
function CString (line 942) | CString CCommon::GetTextResource(UINT id, int code_type)
function CString (line 964) | CString CCommon::GetLastCompileTime()
function HICON (line 972) | HICON CCommon::LoadIconResource(UINT id, int size)
FILE: TrafficMonitor/Common.h
function class (line 7) | class CCommon
FILE: TrafficMonitor/CommonData.cpp
function wstring (line 57) | wstring& DispStrings::Get(CommonDisplayItem item)
FILE: TrafficMonitor/CommonData.h
type Date (line 6) | struct Date
function month (line 9) | int month{}
function day (line 10) | int day{}
type HistoryTraffic (line 23) | struct HistoryTraffic
function up_kBytes (line 26) | unsigned __int64 up_kBytes{}
function down_kBytes (line 27) | unsigned __int64 down_kBytes{}
function mixed (line 28) | bool mixed{ true }; //如果不区分上传和下载流量,则为true
type class (line 42) | enum class
type HardwareItem (line 51) | enum HardwareItem
type DispStrings (line 61) | struct DispStrings //显示的文本
type class (line 82) | enum class
type class (line 95) | enum class
function ColorMode (line 104) | enum class ColorMode
type FontInfo (line 124) | struct FontInfo
type class (line 155) | enum class
type StringSet (line 164) | struct StringSet
type MainConfigData (line 179) | struct MainConfigData
function m_notify_icon_selected (line 196) | int m_notify_icon_selected{}
function HistoryTrafficViewType (line 201) | HistoryTrafficViewType m_view_type{}
function m_sunday_first (line 202) | bool m_sunday_first{ true }; //是否将周日作为一周的第一天
type class (line 209) | enum class
type PublicSettingData (line 217) | struct PublicSettingData
function unit_byte (line 227) | bool unit_byte{ true }; //使用字节(B)而不是比特(b)为单位
type MainWndSettingData (line 237) | struct MainWndSettingData
function m_mouse_penetrate (line 244) | bool m_mouse_penetrate{ false }; //鼠标穿透
type TaskBarSettingData (line 263) | struct TaskBarSettingData
function dark_default_style (line 275) | int dark_default_style{ 0 }
function auto_save_taskbar_color_settings_to_preset (line 278) | bool auto_save_taskbar_color_settings_to_preset{}
function digits_number (line 285) | int digits_number{ 4 }
function item_space (line 292) | int item_space{}
function show_netspeed_figure (line 295) | bool show_netspeed_figure{ false }; //是否显示网速占用图
type GeneralSettingData (line 303) | struct GeneralSettingData
function update_source (line 306) | int update_source{}
function traffic_tip_unit (line 314) | int traffic_tip_unit{}
type NotifyTipSettings (line 316) | struct NotifyTipSettings //超过某个值时弹出提示的设置
function monitor_time_span (line 335) | int monitor_time_span{ 1000 }; //监控的时间间隔
type class (line 360) | enum class
function class (line 369) | class CFlagLocker
FILE: TrafficMonitor/DisplayTextSettingDlg.cpp
function CString (line 30) | CString CDisplayTextSettingDlg::GetDialogName() const
function BOOL (line 43) | BOOL CDisplayTextSettingDlg::OnInitDialog()
function CommonDisplayItem (line 81) | CommonDisplayItem CDisplayTextSettingDlg::GetDisplayItem(int row)
FILE: TrafficMonitor/DisplayTextSettingDlg.h
function class (line 8) | class CDisplayTextSettingDlg : public CBaseDialog
FILE: TrafficMonitor/DonateDlg.cpp
function CString (line 32) | CString CDonateDlg::GetDialogName() const
function BOOL (line 45) | BOOL CDonateDlg::OnInitDialog()
FILE: TrafficMonitor/DonateDlg.h
function class (line 8) | class CDonateDlg : public CBaseDialog
FILE: TrafficMonitor/DrawCommon.h
function class (line 4) | class CDrawCommon
FILE: TrafficMonitor/DrawCommonEx.h
function class (line 2) | class CDrawCommonEx
FILE: TrafficMonitor/FilePathHelper.cpp
function wstring (line 15) | wstring CFilePathHelper::GetFileExtension(bool upper, bool width_dot) const
function wstring (line 26) | wstring CFilePathHelper::GetFileName() const
function wstring (line 35) | wstring CFilePathHelper::GetFileNameWithoutExtension() const
function wstring (line 45) | wstring CFilePathHelper::GetFolderName() const
function wstring (line 59) | wstring CFilePathHelper::GetDir() const
function wstring (line 70) | wstring CFilePathHelper::GetParentDir() const
function wstring (line 82) | const wstring& CFilePathHelper::ReplaceFileExtension(const wchar_t * new...
function wstring (line 107) | wstring CFilePathHelper::GetFilePathWithoutExtension() const
FILE: TrafficMonitor/FilePathHelper.h
function class (line 2) | class CFilePathHelper
FILE: TrafficMonitor/GeneralSettingsDlg.cpp
function BOOL (line 173) | BOOL CGeneralSettingsDlg::OnInitDialog()
function BOOL (line 443) | BOOL CGeneralSettingsDlg::PreTranslateMessage(MSG* pMsg)
FILE: TrafficMonitor/GeneralSettingsDlg.h
function class (line 8) | class CGeneralSettingsDlg : public CTabDlg
FILE: TrafficMonitor/HighResolutionTimer.h
function class (line 4) | class CHighResolutionTimer
FILE: TrafficMonitor/HistoryTrafficCalendarDlg.cpp
function CString (line 105) | CString CHistoryTrafficCalendarDlg::GetWeekdayString(int index)
function BOOL (line 160) | BOOL CHistoryTrafficCalendarDlg::OnInitDialog()
function BOOL (line 436) | BOOL CHistoryTrafficCalendarDlg::PreTranslateMessage(MSG* pMsg)
function BOOL (line 494) | BOOL CHistoryTrafficCalendarDlg::OnMouseWheel(UINT nFlags, short zDelta,...
FILE: TrafficMonitor/HistoryTrafficDlg.cpp
function CString (line 25) | CString CHistoryTrafficDlg::GetDialogName() const
function BOOL (line 61) | BOOL CHistoryTrafficDlg::OnInitDialog()
function BOOL (line 95) | BOOL CHistoryTrafficDlg::PreTranslateMessage(MSG* pMsg)
FILE: TrafficMonitor/HistoryTrafficDlg.h
function class (line 10) | class CHistoryTrafficDlg : public CBaseDialog
FILE: TrafficMonitor/HistoryTrafficFile.h
function class (line 3) | class CHistoryTrafficFile
FILE: TrafficMonitor/HistoryTrafficListCtrl.h
function class (line 4) | class CHistoryTrafficListCtrl :
function SetDrawItemRangeRow (line 13) | void SetDrawItemRangeRow(int row) { m_draw_item_range_row = row; }
function SetDrawItemRangMargin (line 15) | void SetDrawItemRangMargin(int margin) { m_margin = margin; }
type ItemData (line 19) | struct ItemData
function m_draw_item_range (line 24) | bool m_draw_item_range{ false }; //ǷҪijһеԪлƱʾֵСľ
FILE: TrafficMonitor/HistoryTrafficListDlg.cpp
function BOOL (line 226) | BOOL CHistoryTrafficListDlg::OnInitDialog()
function BOOL (line 269) | BOOL CHistoryTrafficListDlg::OnNotify(WPARAM wParam, LPARAM lParam, LRES...
FILE: TrafficMonitor/IconSelectDlg.cpp
function BOOL (line 68) | BOOL CIconSelectDlg::OnInitDialog()
function afx_msg (line 115) | afx_msg LRESULT CIconSelectDlg::OnControlRepaint(WPARAM wParam, LPARAM l...
function CString (line 134) | CString CIconSelectDlg::GetDialogName() const
FILE: TrafficMonitor/IconSelectDlg.h
function class (line 8) | class CIconSelectDlg : public CBaseDialog
FILE: TrafficMonitor/IniHelper.cpp
function wstring (line 60) | wstring CIniHelper::GetString(const wchar_t * AppName, const wchar_t * K...
function wstring (line 360) | wstring CIniHelper::_GetString(const wchar_t * AppName, const wchar_t * ...
function wstring (line 403) | wstring CIniHelper::MergeStringList(const vector<wstring>& values)
FILE: TrafficMonitor/IniHelper.h
function class (line 9) | class CIniHelper
FILE: TrafficMonitor/ListCtrlEx.h
function class (line 7) | class CListCtrlEx :
FILE: TrafficMonitor/MainWndColorDlg.cpp
function CString (line 24) | CString CMainWndColorDlg::GetDialogName() const
function BOOL (line 44) | BOOL CMainWndColorDlg::OnInitDialog()
FILE: TrafficMonitor/MainWndColorDlg.h
function class (line 9) | class CMainWndColorDlg : public CBaseDialog
FILE: TrafficMonitor/MainWndSettingsDlg.cpp
function BOOL (line 139) | BOOL CMainWndSettingsDlg::OnInitDialog()
function BOOL (line 382) | BOOL CMainWndSettingsDlg::PreTranslateMessage(MSG* pMsg)
function afx_msg (line 421) | afx_msg LRESULT CMainWndSettingsDlg::OnStaticClicked(WPARAM wParam, LPAR...
FILE: TrafficMonitor/MainWndSettingsDlg.h
function class (line 11) | class CMainWndSettingsDlg : public CTabDlg
FILE: TrafficMonitor/MessageDlg.cpp
function BOOL (line 83) | BOOL CMessageDlg::OnInitDialog()
FILE: TrafficMonitor/MessageDlg.h
function class (line 6) | class CMessageDlg : public CDialog
FILE: TrafficMonitor/NetworkInfoDlg.cpp
function MIB_IFROW (line 139) | MIB_IFROW& CNetworkInfoDlg::GetConnectIfTable(int connection_index)
function NetWorkConection (line 151) | NetWorkConection CNetworkInfoDlg::GetConnection(int connection_index)
function UINT (line 159) | UINT CNetworkInfoDlg::GetInternetIPThreadFunc(LPVOID lpParam)
function CString (line 206) | CString CNetworkInfoDlg::GetDialogName() const
function BOOL (line 233) | BOOL CNetworkInfoDlg::OnInitDialog()
function BOOL (line 367) | BOOL CNetworkInfoDlg::PreTranslateMessage(MSG* pMsg)
function BOOL (line 400) | BOOL CNetworkInfoDlg::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
FILE: TrafficMonitor/NetworkInfoDlg.h
function class (line 9) | class CNetworkInfoDlg : public CBaseDialog
FILE: TrafficMonitor/OptionsDlg.cpp
function CString (line 24) | CString COptionsDlg::GetDialogName() const
function BOOL (line 45) | BOOL COptionsDlg::OnInitDialog()
FILE: TrafficMonitor/PictureStatic.h
function class (line 9) | class CPictureStatic : public CStatic
FILE: TrafficMonitor/PluginInfoDlg.cpp
function BOOL (line 84) | BOOL CPluginInfoDlg::OnInitDialog()
function CString (line 119) | CString CPluginInfoDlg::GetDialogName() const
function BOOL (line 168) | BOOL CPluginInfoDlg::PreTranslateMessage(MSG* pMsg)
function BOOL (line 188) | BOOL CPluginInfoDlg::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
function CString (line 203) | CString CPluginInfoDlg::GetRowName(int row_index)
FILE: TrafficMonitor/PluginInfoDlg.h
function class (line 6) | class CPluginInfoDlg : public CBaseDialog
FILE: TrafficMonitor/PluginManager.cpp
function wstring (line 19) | static wstring WcharArrayToWString(const wchar_t* str)
function IPluginItem (line 120) | IPluginItem* CPluginManager::GetItemById(const std::wstring& item_id)
function IPluginItem (line 130) | IPluginItem* CPluginManager::GetItemByIndex(int index)
function ITMPlugin (line 147) | ITMPlugin* CPluginManager::GetPluginByItem(IPluginItem* pItem)
FILE: TrafficMonitor/PluginManager.h
type ITMPlugin (line 7) | typedef ITMPlugin* (*pfTMPluginGetInstance)();
function class (line 10) | class CPluginManager
FILE: TrafficMonitor/PluginManagerDlg.cpp
function CString (line 59) | CString CPluginManagerDlg::GetDialogName() const
function BOOL (line 82) | BOOL CPluginManagerDlg::OnInitDialog()
function afx_msg (line 257) | afx_msg LRESULT CPluginManagerDlg::OnLinkClicked(WPARAM wParam, LPARAM l...
FILE: TrafficMonitor/PluginManagerDlg.h
function class (line 7) | class CPluginManagerDlg : public CBaseDialog
FILE: TrafficMonitor/SelectConnectionsDlg.cpp
function CString (line 34) | CString CSelectConnectionsDlg::GetDialogName() const
function BOOL (line 47) | BOOL CSelectConnectionsDlg::OnInitDialog()
FILE: TrafficMonitor/SelectConnectionsDlg.h
function class (line 7) | class CSelectConnectionsDlg : public CBaseDialog
FILE: TrafficMonitor/SetItemOrderDlg.cpp
function StringSet (line 49) | const StringSet& CSetItemOrderDlg::GetPluginDisplayItem() const
function BOOL (line 73) | BOOL CSetItemOrderDlg::OnInitDialog()
function CString (line 188) | CString CSetItemOrderDlg::GetDialogName() const
FILE: TrafficMonitor/SetItemOrderDlg.h
function class (line 6) | class CSetItemOrderDlg : public CBaseDialog
FILE: TrafficMonitor/SimpleXML.cpp
function wstring (line 46) | wstring CSimpleXML::GetNode(const wchar_t * node, const wchar_t * parent...
function wstring (line 52) | wstring CSimpleXML::GetNode(const wchar_t * node) const
function wstring (line 57) | wstring CSimpleXML::_GetNode(const wchar_t * node, const wstring & content)
FILE: TrafficMonitor/SimpleXML.h
function class (line 5) | class CSimpleXML
FILE: TrafficMonitor/SkinDlg.cpp
function CString (line 24) | CString CSkinDlg::GetDialogName() const
function CRect (line 71) | CRect CSkinDlg::CalculateViewRect()
function BOOL (line 92) | BOOL CSkinDlg::OnInitDialog()
function afx_msg (line 153) | afx_msg LRESULT CSkinDlg::OnLinkClicked(WPARAM wParam, LPARAM lParam)
FILE: TrafficMonitor/SkinDlg.h
function class (line 11) | class CSkinDlg : public CBaseDialog
FILE: TrafficMonitor/SkinFile.cpp
function LayoutItemFromXmlNode (line 19) | static CSkinFile::LayoutItem LayoutItemFromXmlNode(tinyxml2::XMLElement*...
function string (line 614) | string CSkinFile::GetDisplayItemXmlNodeName(DisplayItem display_item)
FILE: TrafficMonitor/SkinFile.h
function class (line 6) | class CSkinFile
type Layout (line 47) | struct Layout
function height (line 50) | int height{}
function LayoutItem (line 52) | LayoutItem GetItem(CommonDisplayItem display_item) const
type LayoutInfo (line 62) | struct LayoutInfo
function no_label (line 65) | bool no_label{}
type PreviewInfo (line 71) | struct PreviewInfo
function width (line 78) | int width{}
function height (line 79) | int height{}
type DrawStr (line 107) | struct DrawStr
FILE: TrafficMonitor/StaticEx.cpp
function CString (line 34) | CString CStaticEx::GetString() const
function LRESULT (line 40) | LRESULT CStaticEx::DefWindowProc(UINT message, WPARAM wParam, LPARAM lPa...
FILE: TrafficMonitor/StaticEx.h
function class (line 9) | class CStaticEx :
FILE: TrafficMonitor/TabDlg.cpp
function BOOL (line 18) | BOOL CTabDlg::PreTranslateMessage(MSG* pMsg)
function BOOL (line 40) | BOOL CTabDlg::OnInitDialog()
function CWnd (line 55) | CWnd* CTabDlg::GetParentWindow()
function BOOL (line 182) | BOOL CTabDlg::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
FILE: TrafficMonitor/TabDlg.h
function class (line 3) | class CTabDlg : public CDialogEx
FILE: TrafficMonitor/TaskBarDlg.cpp
function CString (line 606) | CString CTaskBarDlg::GetMouseTipsInfo()
function BOOL (line 959) | BOOL CTaskBarDlg::OnInitDialog()
function BOOL (line 1108) | BOOL CTaskBarDlg::PreTranslateMessage(MSG* pMsg)
function BOOL (line 1187) | BOOL CTaskBarDlg::OnCommand(WPARAM wParam, LPARAM lParam)
function afx_msg (line 1323) | afx_msg LRESULT CTaskBarDlg::OnExitmenuloop(WPARAM wParam, LPARAM lParam)
FILE: TrafficMonitor/TaskBarDlg.h
function class (line 16) | class CTaskBarDlg : public CDialogEx
function CommonDisplayItem (line 69) | struct ItemWidthInfo : public CommonDisplayItem
function m_left_space (line 91) | int m_left_space{}
function m_top_space (line 92) | int m_top_space{}
function m_error_code (line 96) | int m_error_code{}
function m_menu_popuped (line 97) | bool m_menu_popuped{ false }; //指示当前是否有菜单处于弹出状态
FILE: TrafficMonitor/TaskBarSettingsDlg.cpp
function BOOL (line 201) | BOOL CTaskBarSettingsDlg::OnInitDialog()
function BOOL (line 391) | BOOL CTaskBarSettingsDlg::PreTranslateMessage(MSG* pMsg)
function afx_msg (line 479) | afx_msg LRESULT CTaskBarSettingsDlg::OnStaticClicked(WPARAM wParam, LPAR...
function BOOL (line 759) | BOOL CTaskBarSettingsDlg::OnCommand(WPARAM wParam, LPARAM lParam)
FILE: TrafficMonitor/TaskBarSettingsDlg.h
function class (line 11) | class CTaskBarSettingsDlg : public CTabDlg
FILE: TrafficMonitor/TaskbarColorDlg.cpp
function CString (line 24) | CString CTaskbarColorDlg::GetDialogName() const
function BOOL (line 44) | BOOL CTaskbarColorDlg::OnInitDialog()
FILE: TrafficMonitor/TaskbarColorDlg.h
function class (line 9) | class CTaskbarColorDlg : public CBaseDialog
FILE: TrafficMonitor/TaskbarDefaultStyle.h
function class (line 7) | class CTaskbarDefaultStyle
FILE: TrafficMonitor/TaskbarItemOrderHelper.cpp
function CString (line 31) | CString CommonDisplayItem::GetItemName() const
function CString (line 174) | CString CTaskbarItemOrderHelper::GetItemDisplayName(CommonDisplayItem item)
FILE: TrafficMonitor/TaskbarItemOrderHelper.h
type DisplayItem (line 5) | enum DisplayItem
type CommonDisplayItem (line 22) | struct CommonDisplayItem
function DisplayItem (line 25) | DisplayItem item_type{}
function IPluginItem (line 26) | IPluginItem* plugin_item{}
function CString (line 35) | CString GetItemName() const;
FILE: TrafficMonitor/Test.h
function class (line 2) | class CTest
FILE: TrafficMonitor/TinyXml2Helper.h
function class (line 6) | class CTinyXml2Helper
FILE: TrafficMonitor/TrafficMonitor.cpp
function UINT (line 618) | UINT CTrafficMonitorApp::CheckUpdateThreadFunc(LPVOID lpParam)
function UINT (line 625) | UINT CTrafficMonitorApp::InitOpenHardwareMonitorLibThreadFunc(LPVOID lpP...
function CString (line 738) | CString CTrafficMonitorApp::GetSystemInfoString()
function HICON (line 829) | HICON CTrafficMonitorApp::GetMenuIcon(UINT id)
function BOOL (line 873) | BOOL CTrafficMonitorApp::InitInstance()
FILE: TrafficMonitor/TrafficMonitor.h
function m_in_speed (line 43) | unsigned __int64 m_in_speed{}
function m_out_speed (line 44) | unsigned __int64 m_out_speed{}
function m_used_memory (line 47) | int m_used_memory{}
function m_total_memory (line 48) | int m_total_memory{}
function m_today_up_traffic (line 57) | unsigned __int64 m_today_up_traffic{}
function m_today_down_traffic (line 58) | unsigned __int64 m_today_down_traffic{}
function m_debug_log (line 72) | bool m_debug_log{}
function m_taksbar_transparent_color_enable (line 73) | bool m_taksbar_transparent_color_enable{}
function m_last_light_mode (line 74) | bool m_last_light_mode{}
function m_show_mouse_panetrate_tip (line 75) | bool m_show_mouse_panetrate_tip{}
function m_show_dot_net_notinstalled_tip (line 76) | bool m_show_dot_net_notinstalled_tip{}
function SetDPI (line 113) | void SetDPI(int dpi) { m_dpi = dpi; }
function m_checking_update (line 157) | bool m_checking_update{ false }; //是否正在检查更新
FILE: TrafficMonitor/TrafficMonitorDlg.cpp
function CString (line 105) | CString CTrafficMonitorDlg::GetMouseTipsInfo()
function POINT (line 238) | POINT CTrafficMonitorDlg::CalculateWindowMoveOffset(CRect rect, bool scr...
function MIB_IFROW (line 446) | MIB_IFROW CTrafficMonitorDlg::GetConnectIfTable(int connection_index)
function NetWorkConection (line 457) | NetWorkConection CTrafficMonitorDlg::GetConnection(int connection_index)
function BOOL (line 902) | BOOL CTrafficMonitorDlg::OnInitDialog()
function HCURSOR (line 1026) | HCURSOR CTrafficMonitorDlg::OnQueryDragIcon()
function GetMonitorTimerCount (line 1032) | static int GetMonitorTimerCount(int second)
function UINT (line 1038) | UINT CTrafficMonitorDlg::MonitorThreadCallback(LPVOID dwUser)
function BOOL (line 1841) | BOOL CTrafficMonitorDlg::OnCommand(WPARAM wParam, LPARAM lParam)
function BOOL (line 1923) | BOOL CTrafficMonitorDlg::PreTranslateMessage(MSG* pMsg)
function afx_msg (line 1965) | afx_msg LRESULT CTrafficMonitorDlg::OnNotifyIcon(WPARAM wParam, LPARAM l...
function LRESULT (line 2182) | LRESULT CTrafficMonitorDlg::OnTaskBarCreated(WPARAM wParam, LPARAM lParam)
function afx_msg (line 2373) | afx_msg LRESULT CTrafficMonitorDlg::OnExitmenuloop(WPARAM wParam, LPARAM...
function afx_msg (line 2417) | afx_msg LRESULT CTrafficMonitorDlg::OnTaskbarMenuPopedUp(WPARAM wParam, ...
function BOOL (line 2449) | BOOL CTrafficMonitorDlg::OnQueryEndSession()
function afx_msg (line 2478) | afx_msg LRESULT CTrafficMonitorDlg::OnDpichanged(WPARAM wParam, LPARAM l...
function afx_msg (line 2498) | afx_msg LRESULT CTrafficMonitorDlg::OnTaskbarWndClosed(WPARAM wParam, LP...
function afx_msg (line 2512) | afx_msg LRESULT CTrafficMonitorDlg::OnMonitorInfoUpdated(WPARAM wParam, ...
function LRESULT (line 2530) | LRESULT CTrafficMonitorDlg::OnDisplaychange(WPARAM wParam, LPARAM lParam)
function LRESULT (line 2554) | LRESULT CTrafficMonitorDlg::OnReopenTaksbarWnd(WPARAM wParam, LPARAM lPa...
function afx_msg (line 2568) | afx_msg LRESULT CTrafficMonitorDlg::OnSettingsApplied(WPARAM wParam, LPA...
FILE: TrafficMonitor/TrafficMonitorDlg.h
function CTaskBarDlg (line 48) | CTaskBarDlg* m_tBarDlg{}
function DWORD (line 52) | DWORD m_dwSize{}
function m_connection_selected (line 53) | int m_connection_selected{ 0 }
function m_in_bytes (line 54) | unsigned __int64 m_in_bytes{}
function m_out_bytes (line 55) | unsigned __int64 m_out_bytes{}
function m_last_in_bytes (line 56) | unsigned __int64 m_last_in_bytes{}
function m_last_out_bytes (line 57) | unsigned __int64 m_last_out_bytes{}
function m_first_start (line 61) | bool m_first_start{ true }; //初始时为true,在定时器第一次启动后置为flase
function m_timer_cnt (line 95) | unsigned int m_timer_cnt{}
function m_monitor_time_cnt (line 96) | unsigned int m_monitor_time_cnt{}
function m_zero_speed_cnt (line 97) | int m_zero_speed_cnt{}
function m_insert_to_taskbar_cnt (line 98) | int m_insert_to_taskbar_cnt{}
function m_skin_selected (line 104) | int m_skin_selected{}
FILE: TrafficMonitor/UpdateHelper.h
function class (line 2) | class CUpdateHelper
FILE: TrafficMonitor/WIC.cpp
function HRESULT (line 44) | HRESULT CMenuIcon::AddIconToMenuItem(HMENU hmenu, int iMenuItem, BOOL fB...
function HRESULT (line 102) | HRESULT CMenuIcon::AddBitmapToMenuItem(HMENU hmenu, int iItem, BOOL fByP...
function HRESULT (line 129) | HRESULT CMenuIcon::Create32BitHBITMAP(HDC hdc, const SIZE * psize, void ...
FILE: TrafficMonitor/WIC.h
function class (line 5) | class CWICFactory
function class (line 21) | class CMenuIcon
FILE: TrafficMonitor/WinVersionHelper.h
function class (line 2) | class CWinVersionHelper
FILE: TrafficMonitor/WindowsSettingHelper.cpp
function LONG (line 82) | LONG CWindowsSettingHelper::GetDWORDRegKeyData(HKEY hKey, const wstring&...
FILE: TrafficMonitor/WindowsSettingHelper.h
function class (line 2) | class CWindowsSettingHelper
FILE: TrafficMonitor/auto_start_helper.cpp
function create_auto_start_task_for_this_user (line 36) | bool create_auto_start_task_for_this_user(bool runElevated)
function delete_auto_start_task_for_this_user (line 264) | bool delete_auto_start_task_for_this_user()
function is_auto_start_task_active_for_this_user (line 329) | bool is_auto_start_task_active_for_this_user(std::wstring* path)
FILE: TrafficMonitor/crashtool.cpp
class CCrashReport (line 13) | class CCrashReport
method CCrashReport (line 16) | CCrashReport()
method CreateMiniDump (line 23) | void CreateMiniDump(EXCEPTION_POINTERS* pEP)
method ShowCrashInfo (line 50) | void ShowCrashInfo()
method GetAppPath (line 72) | void GetAppPath()
type CRASHREPORT (line 101) | namespace CRASHREPORT
function LONG (line 103) | static LONG WINAPI __UnhandledExceptionFilter(PEXCEPTION_POINTERS pEP)
function StartCrashReport (line 112) | void StartCrashReport()
FILE: TrafficMonitor/crashtool.h
function namespace (line 3) | namespace CRASHREPORT
FILE: TrafficMonitor/tinyxml2/tinyxml2.cpp
function TIXML_SNPRINTF (line 44) | static inline int TIXML_SNPRINTF( char* buffer, size_t size, const char*...
function TIXML_VSNPRINTF (line 53) | static inline int TIXML_VSNPRINTF( char* buffer, size_t size, const char...
function TIXML_VSCPRINTF (line 71) | static inline int TIXML_VSCPRINTF( const char* format, va_list va )
function TIXML_VSCPRINTF (line 94) | static inline int TIXML_VSCPRINTF( const char* format, va_list va )
type tinyxml2 (line 133) | namespace tinyxml2
type Entity (line 136) | struct Entity {
function XMLNode (line 817) | XMLNode* XMLNode::DeepClone(XMLDocument* target) const
function XMLNode (line 877) | XMLNode* XMLNode::InsertEndChild( XMLNode* addThis )
function XMLNode (line 907) | XMLNode* XMLNode::InsertFirstChild( XMLNode* addThis )
function XMLNode (line 938) | XMLNode* XMLNode::InsertAfterChild( XMLNode* afterThis, XMLNode* addTh...
function XMLElement (line 976) | const XMLElement* XMLNode::FirstChildElement( const char* name ) const
function XMLElement (line 988) | const XMLElement* XMLNode::LastChildElement( const char* name ) const
function XMLElement (line 1000) | const XMLElement* XMLNode::NextSiblingElement( const char* name ) const
function XMLElement (line 1012) | const XMLElement* XMLNode::PreviousSiblingElement( const char* name ) ...
function XMLElement (line 1167) | const XMLElement* XMLNode::ToElementWithName( const char* name ) const
function XMLNode (line 1210) | XMLNode* XMLText::ShallowClone( XMLDocument* doc ) const
function XMLNode (line 1259) | XMLNode* XMLComment::ShallowClone( XMLDocument* doc ) const
function XMLNode (line 1308) | XMLNode* XMLDeclaration::ShallowClone( XMLDocument* doc ) const
function XMLNode (line 1356) | XMLNode* XMLUnknown::ShallowClone( XMLDocument* doc ) const
function XMLError (line 1426) | XMLError XMLAttribute::QueryIntValue( int* value ) const
function XMLError (line 1435) | XMLError XMLAttribute::QueryUnsignedValue( unsigned int* value ) const
function XMLError (line 1444) | XMLError XMLAttribute::QueryInt64Value(int64_t* value) const
function XMLError (line 1453) | XMLError XMLAttribute::QueryUnsigned64Value(uint64_t* value) const
function XMLError (line 1462) | XMLError XMLAttribute::QueryBoolValue( bool* value ) const
function XMLError (line 1471) | XMLError XMLAttribute::QueryFloatValue( float* value ) const
function XMLError (line 1480) | XMLError XMLAttribute::QueryDoubleValue( double* value ) const
function XMLAttribute (line 1566) | const XMLAttribute* XMLElement::FindAttribute( const char* name ) const
function XMLError (line 1712) | XMLError XMLElement::QueryIntText( int* ival ) const
function XMLError (line 1725) | XMLError XMLElement::QueryUnsignedText( unsigned* uval ) const
function XMLError (line 1738) | XMLError XMLElement::QueryInt64Text(int64_t* ival) const
function XMLError (line 1751) | XMLError XMLElement::QueryUnsigned64Text(uint64_t* ival) const
function XMLError (line 1764) | XMLError XMLElement::QueryBoolText( bool* bval ) const
function XMLError (line 1777) | XMLError XMLElement::QueryDoubleText( double* dval ) const
function XMLError (line 1790) | XMLError XMLElement::QueryFloatText( float* fval ) const
function XMLAttribute (line 1852) | XMLAttribute* XMLElement::FindOrCreateAttribute( const char* name )
function XMLAttribute (line 1968) | XMLAttribute* XMLElement::CreateAttribute()
function XMLElement (line 1979) | XMLElement* XMLElement::InsertNewChildElement(const char* name)
function XMLComment (line 1985) | XMLComment* XMLElement::InsertNewComment(const char* comment)
function XMLText (line 1991) | XMLText* XMLElement::InsertNewText(const char* text)
function XMLDeclaration (line 1997) | XMLDeclaration* XMLElement::InsertNewDeclaration(const char* text)
function XMLUnknown (line 2003) | XMLUnknown* XMLElement::InsertNewUnknown(const char* text)
function XMLNode (line 2044) | XMLNode* XMLElement::ShallowClone( XMLDocument* doc ) const
function XMLElement (line 2211) | XMLElement* XMLDocument::NewElement( const char* name )
function XMLComment (line 2219) | XMLComment* XMLDocument::NewComment( const char* str )
function XMLText (line 2227) | XMLText* XMLDocument::NewText( const char* str )
function XMLDeclaration (line 2235) | XMLDeclaration* XMLDocument::NewDeclaration( const char* str )
function XMLUnknown (line 2243) | XMLUnknown* XMLDocument::NewUnknown( const char* str )
function FILE (line 2250) | static FILE* callfopen( const char* filepath, const char* mode )
function XMLError (line 2284) | XMLError XMLDocument::LoadFile( const char* filename )
function XMLError (line 2303) | XMLError XMLDocument::LoadFile( FILE* fp )
function XMLError (line 2357) | XMLError XMLDocument::SaveFile( const char* filename, bool compact )
function XMLError (line 2376) | XMLError XMLDocument::SaveFile( FILE* fp, bool compact )
function XMLError (line 2387) | XMLError XMLDocument::Parse( const char* p, size_t len )
FILE: TrafficMonitor/tinyxml2/tinyxml2.h
function namespace (line 116) | namespace tinyxml2
function class (line 673) | class TINYXML2_LIB XMLNode
function XMLDocument (line 685) | XMLDocument* GetDocument() {
function virtual (line 691) | virtual XMLElement* ToElement() {
function virtual (line 695) | virtual XMLText* ToText() {
function virtual (line 699) | virtual XMLComment* ToComment() {
function virtual (line 703) | virtual XMLDocument* ToDocument() {
function virtual (line 707) | virtual XMLDeclaration* ToDeclaration() {
function virtual (line 711) | virtual XMLUnknown* ToUnknown() {
function virtual (line 715) | virtual const XMLElement* ToElement() const {
function virtual (line 718) | virtual const XMLText* ToText() const {
function virtual (line 721) | virtual const XMLComment* ToComment() const {
function virtual (line 724) | virtual const XMLDocument* ToDocument() const {
function virtual (line 727) | virtual const XMLDeclaration* ToDeclaration() const {
function virtual (line 730) | virtual const XMLUnknown* ToUnknown() const {
function XMLNode (line 754) | const XMLNode* Parent() const {
function XMLNode (line 758) | XMLNode* Parent() {
function XMLNode (line 768) | const XMLNode* FirstChild() const {
function XMLNode (line 772) | XMLNode* FirstChild() {
function XMLNode (line 786) | const XMLNode* LastChild() const {
function XMLNode (line 790) | XMLNode* LastChild() {
function XMLNode (line 804) | const XMLNode* PreviousSibling() const {
function XMLNode (line 808) | XMLNode* PreviousSibling() {
function XMLNode (line 820) | const XMLNode* NextSibling() const {
function XMLNode (line 824) | XMLNode* NextSibling() {
function XMLNode (line 844) | XMLNode* LinkEndChild( XMLNode* addThis ) {
function SetUserData (line 938) | void SetUserData(void* userData) { _userData = userData; }
function virtual (line 996) | virtual XMLText* ToText() {
function virtual (line 999) | virtual const XMLText* ToText() const {
function SetCData (line 1004) | void SetCData( bool isCData ) {
function virtual (line 1017) | virtual ~XMLText() {}
function virtual (line 1037) | virtual const XMLComment* ToComment() const {
function virtual (line 1076) | virtual const XMLDeclaration* ToDeclaration() const {
function virtual (line 1111) | virtual const XMLUnknown* ToUnknown() const {
function class (line 1139) | class TINYXML2_LIB XMLAttribute
type Whitespace (line 1704) | enum Whitespace {
function virtual (line 1730) | virtual XMLDocument* ToDocument() {
function virtual (line 1734) | virtual const XMLDocument* ToDocument() const {
function SetBOM (line 1802) | void SetBOM( bool useBOM ) {
function XMLElement (line 1809) | XMLElement* RootElement() {
function XMLElement (line 1812) | const XMLElement* RootElement() const {
function ClearError (line 1876) | void ClearError() {
function PrintError (line 1897) | void PrintError() const;
function virtual (line 1926) | virtual bool ShallowEqual( const XMLNode* /*compare*/ ) const {
function class (line 1965) | class DepthTracker {
function class (line 2052) | class TINYXML2_LIB XMLHandle
function XMLHandle (line 2079) | XMLHandle LastChild() {
function XMLHandle (line 2087) | XMLHandle PreviousSibling() {
function XMLHandle (line 2095) | XMLHandle NextSibling() {
function XMLNode (line 2104) | XMLNode* ToNode() {
function XMLElement (line 2108) | XMLElement* ToElement() {
function XMLText (line 2112) | XMLText* ToText() {
function XMLUnknown (line 2116) | XMLUnknown* ToUnknown() {
function XMLDeclaration (line 2120) | XMLDeclaration* ToDeclaration() {
function class (line 2133) | class TINYXML2_LIB XMLConstHandle
function XMLNode (line 2174) | const XMLNode* ToNode() const {
function XMLElement (line 2177) | const XMLElement* ToElement() const {
function XMLText (line 2180) | const XMLText* ToText() const {
function XMLUnknown (line 2183) | const XMLUnknown* ToUnknown() const {
function XMLDeclaration (line 2186) | const XMLDeclaration* ToDeclaration() const {
function virtual (line 2247) | virtual ~XMLPrinter() {}
function virtual (line 2290) | virtual bool VisitExit( const XMLDocument& /*doc*/ ) {
function Write (line 2338) | inline void Write(const char* data) { Write(data, strlen(data)); }
FILE: include/OpenHardwareMonitor/OpenHardwareMonitorApi.h
function namespace (line 7) | namespace OpenHardwareMonitorApi
FILE: include/PluginInterface.h
function class (line 9) | class IPluginItem
function class (line 124) | class ITMPlugin
function virtual (line 202) | virtual void OnMonitorInfo(const MonitorInfo& monitor_info) {}
function virtual (line 207) | virtual const wchar_t* GetTooltipInfo() { return L""; }
type ExtendedInfoIndex (line 209) | enum ExtendedInfoIndex
function virtual (line 242) | virtual void OnExtenedInfo(ExtendedInfoIndex index, const wchar_t* data) {}
Condensed preview — 205 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,338K chars).
[
{
"path": ".github/workflows/main.yml",
"chars": 2613,
"preview": "name: Release CI\non: push\njobs:\n x64_build:\n runs-on: windows-2019\n\n steps:\n - uses: actions/checkout@v2\n "
},
{
"path": ".gitignore",
"chars": 5024,
"preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
},
{
"path": "Help.md",
"chars": 5823,
"preview": "**简体中文 | [English](./Help_en-us.md)**<br>\n\n# TrafficMonitor 常见问题\n这里是关于TrafficMonitor常见问题的页面,如果你想查看关于TrafficMonitor的各项功能和"
},
{
"path": "Help_en-us.md",
"chars": 12242,
"preview": "**[简体中文](./Help.md) | English**<br>\n# TrafficMonitor Frequently Asked Questions\nThis is the page about the Frequently As"
},
{
"path": "LICENSE",
"chars": 2605,
"preview": "Copyright (c) <2019> <copyright zhongyang219>\n\n\"Anti 996\" License Version 1.0 (Draft)\n\nPermission is hereby granted to a"
},
{
"path": "LICENSE_CN",
"chars": 725,
"preview": "版权所有(c)<2019> <copyright zhongyang219>\n\n反996许可证版本1.0\n\n在符合下列条件的情况下,特此免费向任何得到本授权作品的副本(包括源代码、文件和/或相关内容,以\n下统称为“授权作品”)的个人和法人实"
},
{
"path": "OpenHardwareMonitorApi/LibreHardwareMonitorLib.xml",
"chars": 110342,
"preview": "<?xml version=\"1.0\"?>\n<doc>\n <assembly>\n <name>LibreHardwareMonitorLib</name>\n </assembly>\n <members>\n "
},
{
"path": "OpenHardwareMonitorApi/OpenHardwareMonitorApi.vcxproj",
"chars": 8330,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.micros"
},
{
"path": "OpenHardwareMonitorApi/OpenHardwareMonitorApi.vcxproj.filters",
"chars": 1890,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
},
{
"path": "OpenHardwareMonitorApi/OpenHardwareMonitorImp.cpp",
"chars": 11907,
"preview": "// 这是主 DLL 文件。\n\n#include \"stdafx.h\"\n\n#include \"OpenHardwareMonitorImp.h\"\n#include <vector>\n\nnamespace OpenHardwareMonit"
},
{
"path": "OpenHardwareMonitorApi/OpenHardwareMonitorImp.h",
"chars": 2906,
"preview": "// OpenHardwareMonitorApi.h\n\n#pragma once\n#include <string>\n#include \"OpenHardwareMonitor/OpenHardwareMonitorApi.h\"\n#in"
},
{
"path": "OpenHardwareMonitorApi/ReadMe.txt",
"chars": 1635,
"preview": "========================================================================\n DYNAMIC LINK LIBRARY : OpenHardwareMonitorA"
},
{
"path": "OpenHardwareMonitorApi/Stdafx.cpp",
"chars": 94,
"preview": "// stdafx.cpp : ֻļԴļ\n// OpenHardwareMonitorApi.pch ΪԤͷ\n// stdafx.obj ԤϢ\n\n#include \"stdafx.h\"\n"
},
{
"path": "OpenHardwareMonitorApi/Stdafx.h",
"chars": 53,
"preview": "// stdafx.h : ϵͳļİļ\n// Ǿʹõĵ\n// ضĿİļ\n\n#pragma once\n\n\n"
},
{
"path": "OpenHardwareMonitorApi/UpdateVisitor.cpp",
"chars": 563,
"preview": "#include \"stdafx.h\"\n#include \"UpdateVisitor.h\"\n\nnamespace OpenHardwareMonitorApi\n{\n void UpdateVisitor::VisitCompute"
},
{
"path": "OpenHardwareMonitorApi/UpdateVisitor.h",
"chars": 398,
"preview": "#pragma once\n\nusing namespace LibreHardwareMonitor::Hardware;\n\nnamespace OpenHardwareMonitorApi\n{\n public ref class "
},
{
"path": "OpenHardwareMonitorApi/resource.h",
"chars": 88,
"preview": "//{{NO_DEPENDENCIES}}\n// Microsoft Visual C++ generated include file.\n// Used by app.rc\n"
},
{
"path": "PluginDemo/CustomDrawItem.cpp",
"chars": 2504,
"preview": "#include \"pch.h\"\n#include \"CustomDrawItem.h\"\n#include \"DataManager.h\"\n\nconst wchar_t* CCustomDrawItem::GetItemName() co"
},
{
"path": "PluginDemo/CustomDrawItem.h",
"chars": 607,
"preview": "#pragma once\n#include \"PluginInterface.h\"\n\nclass CCustomDrawItem : public IPluginItem\n{\n // 通过 IPluginItem 继承\n vi"
},
{
"path": "PluginDemo/DataManager.cpp",
"chars": 1888,
"preview": "#include \"pch.h\"\n#include \"DataManager.h\"\n\nCDataManager CDataManager::m_instance;\n\nCDataManager::CDataManager()\n{\n}\n\nCD"
},
{
"path": "PluginDemo/DataManager.h",
"chars": 684,
"preview": "#pragma once\n#include <string>\n#include <map>\n\n#define g_data CDataManager::Instance()\n\nstruct SettingData\n{\n bool s"
},
{
"path": "PluginDemo/OptionsDlg.cpp",
"chars": 1078,
"preview": "// OptionsDlg.cpp: 实现文件\n//\n\n#include \"pch.h\"\n#include \"PluginDemo.h\"\n#include \"OptionsDlg.h\"\n#include \"afxdialogex.h\"\n\n"
},
{
"path": "PluginDemo/OptionsDlg.h",
"chars": 507,
"preview": "#pragma once\n#include \"DataManager.h\"\n\n// COptionsDlg 对话框\n\nclass COptionsDlg : public CDialog\n{\n\tDECLARE_DYNAMIC(COptio"
},
{
"path": "PluginDemo/PluginDemo.cpp",
"chars": 2624,
"preview": "#include \"pch.h\"\n#include \"PluginDemo.h\"\n#include \"DataManager.h\"\n#include \"OptionsDlg.h\"\n\nCPluginDemo CPluginDemo::m_i"
},
{
"path": "PluginDemo/PluginDemo.h",
"chars": 879,
"preview": "#pragma once\n#include \"PluginInterface.h\"\n#include \"PluginSystemDate.h\"\n#include \"PluginSystemTime.h\"\n#include \"CustomD"
},
{
"path": "PluginDemo/PluginDemo.rc",
"chars": 5336,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "PluginDemo/PluginDemo.vcxproj",
"chars": 9703,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msb"
},
{
"path": "PluginDemo/PluginDemo.vcxproj.filters",
"chars": 2451,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
},
{
"path": "PluginDemo/PluginSystemDate.cpp",
"chars": 670,
"preview": "#include \"pch.h\"\n#include <wchar.h>\n#include \"PluginSystemDate.h\"\n#include \"DataManager.h\"\n\nCPluginSystemDate::CPluginS"
},
{
"path": "PluginDemo/PluginSystemDate.h",
"chars": 467,
"preview": "#pragma once\n#include \"PluginInterface.h\"\n\nclass CPluginSystemDate : public IPluginItem\n{\npublic:\n CPluginSystemDate"
},
{
"path": "PluginDemo/PluginSystemTime.cpp",
"chars": 767,
"preview": "#include \"pch.h\"\n#include <wchar.h>\n#include \"PluginSystemTime.h\"\n#include \"DataManager.h\"\n\nCPluginSystemTime::CPluginS"
},
{
"path": "PluginDemo/PluginSystemTime.h",
"chars": 475,
"preview": "#pragma once\n#include \"PluginInterface.h\"\n\nclass CPluginSystemTime : public IPluginItem\n{\npublic:\n CPluginSystemTime"
},
{
"path": "PluginDemo/framework.h",
"chars": 939,
"preview": "#pragma once\n\n#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的内容\n//// Windows 头文件\n//#include <windows.h"
},
{
"path": "PluginDemo/pch.cpp",
"chars": 75,
"preview": "// pch.cpp: 与预编译标头对应的源文件\n\n#include \"pch.h\"\n\n// 当使用预编译的头时,需要使用此源文件,编译才能成功。\n"
},
{
"path": "PluginDemo/pch.h",
"chars": 276,
"preview": "// pch.h: 这是预编译标头文件。\n// 下方列出的文件仅编译一次,提高了将来生成的生成性能。\n// 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。\n// 但是,如果此处列出的文件中的任何一个在生成之间"
},
{
"path": "PluginDemo/resource.h",
"chars": 774,
"preview": "//{{NO_DEPENDENCIES}}\n// Microsoft Visual C++ 生成的包含文件。\n// 供 PluginDemo.rc 使用\n//\n#define IDD_DIALOG1 "
},
{
"path": "README.md",
"chars": 4969,
"preview": "**简体中文 | [English](./README_en-us.md)**<br>\n[ | English**<br>\n[\n{\n}\n\n\nCAdapterCommon::~CAdapterCommon("
},
{
"path": "TrafficMonitor/AdapterCommon.h",
"chars": 1047,
"preview": "#pragma once\n#include \"Common.h\"\n\n//һϢ\nstruct NetWorkConection\n{\n\tint index{};\t\t\t//MIB_IFTABLEе\n\tstring description;\t\t//"
},
{
"path": "TrafficMonitor/AppAlreadyRuningDlg.cpp",
"chars": 1844,
"preview": "// AppAlreadyRuningDlg.cpp: 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"AppAlreadyRuningDlg.h\"\n#"
},
{
"path": "TrafficMonitor/AppAlreadyRuningDlg.h",
"chars": 780,
"preview": "#pragma once\n\n\n// CAppAlreadyRuningDlg 对话框\n\nclass CAppAlreadyRuningDlg : public CDialog\n{\n DECLARE_DYNAMIC(CAppAlrea"
},
{
"path": "TrafficMonitor/BaseDialog.cpp",
"chars": 3653,
"preview": "// BaseDialog.cpp : 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"BaseDialog.h\"\n#include \"afxdialogex.h\"\n#include \"IniHelper.h"
},
{
"path": "TrafficMonitor/BaseDialog.h",
"chars": 1210,
"preview": "#pragma once\n\n\n// CBaseDialog 对话框\n//用于实现记住对话框大小\n//并将窗口初始大小设置为最小大小\n\nclass CBaseDialog : public CDialog\n{\n DECLARE_DYN"
},
{
"path": "TrafficMonitor/CAutoAdaptSettingsDlg.cpp",
"chars": 2602,
"preview": "// CAutoAdaptSettingsDlg.cpp: 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"CAutoAdaptSettingsDlg."
},
{
"path": "TrafficMonitor/CAutoAdaptSettingsDlg.h",
"chars": 838,
"preview": "#pragma once\n\n\n// CAutoAdaptSettingsDlg 对话框\n\nclass CAutoAdaptSettingsDlg : public CDialog\n{\n\tDECLARE_DYNAMIC(CAutoAdapt"
},
{
"path": "TrafficMonitor/CMFCColorDialogEx.cpp",
"chars": 1102,
"preview": "// CMFCColorDialogEx.cpp: 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"CMFCColorDialogEx.h\"\n#include \"Common.h\"\n\n// CMFCColor"
},
{
"path": "TrafficMonitor/CMFCColorDialogEx.h",
"chars": 361,
"preview": "#pragma once\n\n\n// CMFCColorDialogEx\n\nclass CMFCColorDialogEx : public CMFCColorDialog\n{\n\t//DECLARE_DYNAMIC(CMFCColorDial"
},
{
"path": "TrafficMonitor/CPUUsage.cpp",
"chars": 2041,
"preview": "#include \"stdafx.h\"\n#include \"CPUUsage.h\"\n#include \"Common.h\"\n#include \"TrafficMonitor.h\"\n\nvoid CCPUUsage::SetUseCPUTime"
},
{
"path": "TrafficMonitor/CPUUsage.h",
"chars": 556,
"preview": "#pragma once\n#include <Pdh.h>\n#include <PdhMsg.h>\n#pragma comment(lib,\"pdh.lib\")\n\nclass CCPUUsage\n{\npublic:\n\tCCPUUsage()"
},
{
"path": "TrafficMonitor/CSkinPreviewView.cpp",
"chars": 1220,
"preview": "// CSkinPreviewView.cpp: 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"CSkinPreviewView.h\"\n\n\n// CS"
},
{
"path": "TrafficMonitor/CSkinPreviewView.h",
"chars": 792,
"preview": "#pragma once\n#include \"DrawCommon.h\"\n#include \"SkinFile.h\"\n\n\n// CSkinPreviewView 视图\n\n\nclass CSkinPreviewView : public C"
},
{
"path": "TrafficMonitor/CTabCtrlEx.cpp",
"chars": 2248,
"preview": "// CTabCtrlEx.cpp: 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"CTabCtrlEx.h\"\n\n\n// CTabCtrlEx\n\nIMPLEMENT_DYNAMIC(CTabCtrlEx, "
},
{
"path": "TrafficMonitor/CTabCtrlEx.h",
"chars": 592,
"preview": "#pragma once\n\n\n// CTabCtrlEx\n\nclass CTabCtrlEx : public CTabCtrl\n{\n\tDECLARE_DYNAMIC(CTabCtrlEx)\n\npublic:\n\tCTabCtrlEx();\n"
},
{
"path": "TrafficMonitor/CVariant.cpp",
"chars": 1047,
"preview": "#include \"stdafx.h\"\n#include \"CVariant.h\"\n\n\nCVariant::CVariant(int value)\n{\n\tm_value_int = value;\n\tm_type = eType::INT;\n"
},
{
"path": "TrafficMonitor/CVariant.h",
"chars": 392,
"preview": "#pragma once\nclass CVariant\n{\npublic:\n\tCVariant(int value);\n\tCVariant(size_t value);\n\tCVariant(double value);\n\tCVariant("
},
{
"path": "TrafficMonitor/CalendarHelper.cpp",
"chars": 1310,
"preview": "#include \"stdafx.h\"\n#include \"CalendarHelper.h\"\n\n\nCCalendarHelper::CCalendarHelper()\n{\n}\n\n\nCCalendarHelper::~CCalendarHe"
},
{
"path": "TrafficMonitor/CalendarHelper.h",
"chars": 649,
"preview": "#pragma once\n#define CALENDAR_WIDTH 7\n#define CALENDAR_HEIGHT 6\n\nstruct DayTraffic\n{\n\tint day;\n\t__int64 up_traffic;\n\t__i"
},
{
"path": "TrafficMonitor/ColorSettingListCtrl.cpp",
"chars": 3480,
"preview": "#include \"stdafx.h\"\n#include \"ColorSettingListCtrl.h\"\n\nIMPLEMENT_DYNAMIC(CColorSettingListCtrl, CListCtrl)\n\nCColorSetti"
},
{
"path": "TrafficMonitor/ColorSettingListCtrl.h",
"chars": 580,
"preview": "#pragma once\n#include \"afxcmn.h\"\n#include \"DrawCommon.h\"\nclass CColorSettingListCtrl :\n\tpublic CListCtrl\n{\nDECLARE_DYNAM"
},
{
"path": "TrafficMonitor/ColorStatic.cpp",
"chars": 6136,
"preview": "// ColorStatic.cpp : 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"ColorStatic.h\"\n#include \"DrawCo"
},
{
"path": "TrafficMonitor/ColorStatic.h",
"chars": 1021,
"preview": "// CColorStatic\n//派生自CStatic,用于显示颜色的Static控件\n#pragma once\n#define WM_STATIC_CLICKED (WM_USER + 1001)\n\nclass CColorStati"
},
{
"path": "TrafficMonitor/ComboBox2.cpp",
"chars": 779,
"preview": "// ComboBox2.cpp: 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"ComboBox2.h\"\n\n\n// CComboBox2\n\nIMPLEMENT_DYNAMIC(CComboBox2, CC"
},
{
"path": "TrafficMonitor/ComboBox2.h",
"chars": 351,
"preview": "#pragma once\n\n\n// CComboBox2\n\nclass CComboBox2 : public CComboBox\n{\n\tDECLARE_DYNAMIC(CComboBox2)\n\npublic:\n\tCComboBox2()"
},
{
"path": "TrafficMonitor/Common.cpp",
"chars": 29108,
"preview": "#include \"stdafx.h\"\n#include \"Common.h\"\n#include \"TrafficMonitor.h\"\n\n\nCCommon::CCommon()\n{\n}\n\n\nCCommon::~CCommon()\n{\n}\n"
},
{
"path": "TrafficMonitor/Common.h",
"chars": 11178,
"preview": "#pragma once\n#include \"CommonData.h\"\n#include \"CVariant.h\"\n#include <set>\n#include <functional>\n\nclass CCommon\n{\npublic"
},
{
"path": "TrafficMonitor/CommonData.cpp",
"chars": 4014,
"preview": "#include \"stdafx.h\"\n#include \"CommonData.h\"\n#include \"Common.h\"\n#include \"CalendarHelper.h\"\n#include \"TrafficMonitor.h\""
},
{
"path": "TrafficMonitor/CommonData.h",
"chars": 11079,
"preview": "//此文件包含全局结构体、枚举类型的定义\n#pragma once\n#include \"stdafx.h\"\n#include \"TaskbarItemOrderHelper.h\"\n\nstruct Date\n{\n int year{}"
},
{
"path": "TrafficMonitor/DisplayTextSettingDlg.cpp",
"chars": 5178,
"preview": "// DisplayTextSettingDlg.cpp: 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"DisplayTextSettingDlg."
},
{
"path": "TrafficMonitor/DisplayTextSettingDlg.h",
"chars": 941,
"preview": "#pragma once\n#include \"BaseDialog.h\"\n#include \"CommonData.h\"\n#include \"ListCtrlEx.h\"\n\n// CDisplayTextSettingDlg 对话框\n\ncl"
},
{
"path": "TrafficMonitor/DonateDlg.cpp",
"chars": 2219,
"preview": "// DonateDlg.cpp : 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"DonateDlg.h\"\n#include \"afxdialoge"
},
{
"path": "TrafficMonitor/DonateDlg.h",
"chars": 661,
"preview": "#pragma once\n#include \"afxwin.h\"\n#include \"PictureStatic.h\"\n#include \"BaseDialog.h\"\n\n// CDonateDlg 对话框\n\nclass CDonateDl"
},
{
"path": "TrafficMonitor/DrawCommon.cpp",
"chars": 8678,
"preview": "#include \"stdafx.h\"\n#include \"DrawCommon.h\"\n\n\nCDrawCommon::CDrawCommon()\n{\n}\n\nCDrawCommon::~CDrawCommon()\n{\n}\n\nvoid CDr"
},
{
"path": "TrafficMonitor/DrawCommon.h",
"chars": 3044,
"preview": "//封装的绘图类\n#pragma once\n#include \"CommonData.h\"\nclass CDrawCommon\n{\npublic:\n\n //拉伸模式\n enum class StretchMode\n {\n"
},
{
"path": "TrafficMonitor/DrawCommonEx.cpp",
"chars": 695,
"preview": "#include \"stdafx.h\"\n#include \"DrawCommonEx.h\"\n\n\nCDrawCommonEx::CDrawCommonEx(CDC* pDC)\n{\n\tm_pDC = pDC;\n\thThm = OpenTheme"
},
{
"path": "TrafficMonitor/DrawCommonEx.h",
"chars": 243,
"preview": "#pragma once\nclass CDrawCommonEx\n{\npublic:\n\tCDrawCommonEx(CDC* pDC);\n\t~CDrawCommonEx();\n\n\tvoid DrawWindowText(CRect rect"
},
{
"path": "TrafficMonitor/FilePathHelper.cpp",
"chars": 2897,
"preview": "#include \"stdafx.h\"\n#include \"FilePathHelper.h\"\n#include \"Common.h\"\n\n\nCFilePathHelper::CFilePathHelper(const wstring & "
},
{
"path": "TrafficMonitor/FilePathHelper.h",
"chars": 832,
"preview": "#pragma once\nclass CFilePathHelper\n{\npublic:\n\tCFilePathHelper(const wstring& file_path);\n\tCFilePathHelper(){}\n\t~CFilePa"
},
{
"path": "TrafficMonitor/GeneralSettingsDlg.cpp",
"chars": 24819,
"preview": "// GeneralSettingsDlg.cpp : implementation file\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"GeneralSe"
},
{
"path": "TrafficMonitor/GeneralSettingsDlg.h",
"chars": 3645,
"preview": "#pragma once\n#include \"TabDlg.h\"\n#include \"SpinEdit.h\"\n#include \"ComboBox2.h\"\n\n// CGeneralSettingsDlg dialog\n\nclass CGe"
},
{
"path": "TrafficMonitor/HighResolutionTimer.h",
"chars": 1418,
"preview": "#include <MMSYSTEM.H>\n#pragma comment(lib, \"WINMM.LIB\")\n\nclass CHighResolutionTimer\n{\n typedef void(*TIMERCALLBACK)("
},
{
"path": "TrafficMonitor/HistoryTrafficCalendarDlg.cpp",
"chars": 17786,
"preview": "// HistoryTrafficCalendarDlg.cpp: 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"HistoryTrafficCale"
},
{
"path": "TrafficMonitor/HistoryTrafficDlg.cpp",
"chars": 3506,
"preview": "// HistoryTrafficDlg.cpp : 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"HistoryTrafficDlg.h\"\n#inc"
},
{
"path": "TrafficMonitor/HistoryTrafficDlg.h",
"chars": 1100,
"preview": "#pragma once\n#include \"afxcmn.h\"\n#include \"Common.h\"\n#include \"HistoryTrafficListDlg.h\"\n#include \"HistoryTrafficCalenda"
},
{
"path": "TrafficMonitor/HistoryTrafficFile.cpp",
"chars": 5083,
"preview": "#include \"stdafx.h\"\n#include \"HistoryTrafficFile.h\"\n#include \"Common.h\"\n\nCHistoryTrafficFile::CHistoryTrafficFile(const "
},
{
"path": "TrafficMonitor/HistoryTrafficFile.h",
"chars": 950,
"preview": "#pragma once\n#include \"CommonData.h\"\nclass CHistoryTrafficFile\n{\npublic:\n\tCHistoryTrafficFile(const wstring& file_path);"
},
{
"path": "TrafficMonitor/HistoryTrafficListCtrl.cpp",
"chars": 3007,
"preview": "#include \"stdafx.h\"\n#include \"HistoryTrafficListCtrl.h\"\n\nIMPLEMENT_DYNAMIC(CHistoryTrafficListCtrl, CListCtrl)\n\nCHistor"
},
{
"path": "TrafficMonitor/HistoryTrafficListCtrl.h",
"chars": 1043,
"preview": "#pragma once\n#include \"afxcmn.h\"\n#include \"DrawCommon.h\"\nclass CHistoryTrafficListCtrl :\n\tpublic CListCtrl\n{\nDECLARE_DYN"
},
{
"path": "TrafficMonitor/HistoryTrafficListDlg.cpp",
"chars": 11956,
"preview": "// HistoryTrafficList.cpp: 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"HistoryTrafficListDlg.h\"\n"
},
{
"path": "TrafficMonitor/IconSelectDlg.cpp",
"chars": 4361,
"preview": "// IconSelectDlg.cpp : 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"IconSelectDlg.h\"\n#include \"af"
},
{
"path": "TrafficMonitor/IconSelectDlg.h",
"chars": 1304,
"preview": "#pragma once\n#include \"afxwin.h\"\n#include \"PictureStatic.h\"\n#include \"BaseDialog.h\"\n\n// CIconSelectDlg 对话框\n\nclass CIcon"
},
{
"path": "TrafficMonitor/IniHelper.cpp",
"chars": 14053,
"preview": "#include \"stdafx.h\"\n#include \"IniHelper.h\"\n#include \"TrafficMonitor.h\"\n\n\nCIniHelper::CIniHelper(const wstring& file_pat"
},
{
"path": "TrafficMonitor/IniHelper.h",
"chars": 2985,
"preview": "//ini读写类\n//使用时将ini文件路径通过构造函数参数传递\n//在向ini文件写入数据时,需要在最后调用Save()函数以将更改保存到文件\n//默认以UTF8_BOM编码保存,如果要以ANSI保存,请调用SetSaveAsUTF8("
},
{
"path": "TrafficMonitor/ListCtrlEx.cpp",
"chars": 2450,
"preview": "#include \"stdafx.h\"\n#include \"ListCtrlEx.h\"\n\nIMPLEMENT_DYNAMIC(CListCtrlEx, CListCtrl)\n\nCListCtrlEx::CListCtrlEx()\n{\n}\n\n"
},
{
"path": "TrafficMonitor/ListCtrlEx.h",
"chars": 959,
"preview": "#pragma once\n#include \"afxcmn.h\"\n#include \"DrawCommon.h\"\n#include <set>\n\n#define IDC_ITEM_EDITBOX 1991\nclass CListCtrlEx"
},
{
"path": "TrafficMonitor/MainWndColorDlg.cpp",
"chars": 2758,
"preview": "// MainWndColorDlg.cpp : 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"MainWndColorDlg.h\"\n#include"
},
{
"path": "TrafficMonitor/MainWndColorDlg.h",
"chars": 903,
"preview": "#pragma once\n#include \"ColorStatic.h\"\n#include \"afxwin.h\"\n#include \"ColorSettingListCtrl.h\"\n#include \"BaseDialog.h\"\n\n//"
},
{
"path": "TrafficMonitor/MainWndSettingsDlg.cpp",
"chars": 18772,
"preview": "// MainWndSettingsDlg.cpp : 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"MainWndSettingsDlg.h\"\n#i"
},
{
"path": "TrafficMonitor/MainWndSettingsDlg.h",
"chars": 2502,
"preview": "#pragma once\n#include \"ColorStatic.h\"\n#include \"afxwin.h\"\n#include \"SpinEdit.h\"\n#include \"TabDlg.h\"\n#include \"MainWndCo"
},
{
"path": "TrafficMonitor/MessageDlg.cpp",
"chars": 3479,
"preview": "// HelpDlg.cpp : 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"MessageDlg.h\"\n#include \"DrawCommon."
},
{
"path": "TrafficMonitor/MessageDlg.h",
"chars": 1299,
"preview": "#pragma once\n#include \"afxwin.h\"\n\n// CMessageDlg 对话框\n\nclass CMessageDlg : public CDialog\n{\n\tDECLARE_DYNAMIC(CMessageDlg"
},
{
"path": "TrafficMonitor/NetworkInfoDlg.cpp",
"chars": 15241,
"preview": "// CNetworkInfoDlg.cpp : 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"NetworkInfoDlg.h\"\n#include "
},
{
"path": "TrafficMonitor/NetworkInfoDlg.h",
"chars": 1966,
"preview": "#pragma once\n#include\"Common.h\"\n#include \"afxcmn.h\"\n#include \"AdapterCommon.h\"\n#include \"BaseDialog.h\"\n\n// CNetworkInfo"
},
{
"path": "TrafficMonitor/OptionsDlg.cpp",
"chars": 3022,
"preview": "// OptionsDlg.cpp : 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"OptionsDlg.h\"\n#include \"afxdialo"
},
{
"path": "TrafficMonitor/OptionsDlg.h",
"chars": 1107,
"preview": "#pragma once\n#include \"MainWndSettingsDlg.h\"\n#include \"TaskBarSettingsDlg.h\"\n#include \"GeneralSettingsDlg.h\"\n#include \""
},
{
"path": "TrafficMonitor/PictureStatic.cpp",
"chars": 1404,
"preview": "#include \"stdafx.h\"\n#include \"PictureStatic.h\"\n\n\nCPictureStatic::CPictureStatic()\n{\n}\n\n\nCPictureStatic::~CPictureStatic("
},
{
"path": "TrafficMonitor/PictureStatic.h",
"chars": 439,
"preview": "/*һʾͼƬľ̬ؼ\nҪʱSetPicture()þ̬ͼƬ\nؼػʱڷWM_CONTROL_REPAINTϢ\nͨwParamݵǰؼCWndָ룬ͨlParamCDCָ\n*/\n#pragma once\n#define WM_CONTROL_REP"
},
{
"path": "TrafficMonitor/PluginInfoDlg.cpp",
"chars": 7260,
"preview": "// PluginInfoDlg.cpp: 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"PluginInfoDlg.h\"\n#include \"Fil"
},
{
"path": "TrafficMonitor/PluginInfoDlg.h",
"chars": 1377,
"preview": "#pragma once\n#include \"BaseDialog.h\"\n\n// CPluginInfoDlg 对话框\n\nclass CPluginInfoDlg : public CBaseDialog\n{\n\tDECLARE_DYNAM"
},
{
"path": "TrafficMonitor/PluginManager.cpp",
"chars": 5488,
"preview": "#include \"stdafx.h\"\n#include \"PluginManager.h\"\n#include \"Common.h\"\n#include \"TrafficMonitor.h\"\n\n#define PLUGIN_UNSUPPOR"
},
{
"path": "TrafficMonitor/PluginManager.h",
"chars": 1954,
"preview": "#pragma once\n#include \"PluginInterface.h\"\n#include <map>\n#include \"TaskbarItemOrderHelper.h\"\n#include <functional>\n\ntyp"
},
{
"path": "TrafficMonitor/PluginManagerDlg.cpp",
"chars": 9174,
"preview": "// PluginManagerDlg.cpp: 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"PluginManagerDlg.h\"\n#includ"
},
{
"path": "TrafficMonitor/PluginManagerDlg.h",
"chars": 1425,
"preview": "#pragma once\n#include \"BaseDialog.h\"\n#include \"LinkStatic.h\"\n\n// CPluginManagerDlg 对话框\n\nclass CPluginManagerDlg : publi"
},
{
"path": "TrafficMonitor/ReadMe.txt",
"chars": 2225,
"preview": "================================================================================\n MICROSOFT 基础类库 : TrafficMonitor 项目"
},
{
"path": "TrafficMonitor/SelectConnectionsDlg.cpp",
"chars": 2440,
"preview": "// SelectConnectionsDlg.cpp: 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"SelectConnectionsDlg.h\""
},
{
"path": "TrafficMonitor/SelectConnectionsDlg.h",
"chars": 834,
"preview": "#pragma once\n#include \"CommonData.h\"\n#include \"BaseDialog.h\"\n\n// CSelectConnectionsDlg 对话框\n\nclass CSelectConnectionsDlg"
},
{
"path": "TrafficMonitor/SetItemOrderDlg.cpp",
"chars": 6022,
"preview": "// SetItemOrderDlg.cpp: 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"SetItemOrderDlg.h\"\n#include "
},
{
"path": "TrafficMonitor/SetItemOrderDlg.h",
"chars": 1693,
"preview": "#pragma once\n#include \"BaseDialog.h\"\n\n// CSetItemOrderDlg 对话框\n\nclass CSetItemOrderDlg : public CBaseDialog\n{\n DECLAR"
},
{
"path": "TrafficMonitor/SimpleXML.cpp",
"chars": 1587,
"preview": "#include \"stdafx.h\"\n#include \"SimpleXML.h\"\n\n\nCSimpleXML::CSimpleXML(const wstring & xml_path)\n{\n\tifstream file_stream{ x"
},
{
"path": "TrafficMonitor/SimpleXML.h",
"chars": 454,
"preview": "//һXML\n#pragma once\n#include \"Common.h\"\n\nclass CSimpleXML\n{\npublic:\n\tCSimpleXML(const wstring& xml_path);\n\tCSimpleXML()"
},
{
"path": "TrafficMonitor/SkinDlg.cpp",
"chars": 5187,
"preview": "// SkinDlg.cpp : 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"SkinDlg.h\"\n#include \"afxdialogex.h\""
},
{
"path": "TrafficMonitor/SkinDlg.h",
"chars": 1378,
"preview": "#pragma once\n#include \"afxwin.h\"\n#include\"StaticEx.h\"\n#include \"PictureStatic.h\"\n#include \"CSkinPreviewView.h\"\n#include"
},
{
"path": "TrafficMonitor/SkinFile.cpp",
"chars": 31649,
"preview": "#include \"stdafx.h\"\n#include \"SkinFile.h\"\n#include \"Common.h\"\n#include \"FilePathHelper.h\"\n#include \"TrafficMonitor.h\"\n#"
},
{
"path": "TrafficMonitor/SkinFile.h",
"chars": 3322,
"preview": "#pragma once\n#include \"CommonData.h\"\n#include \"TinyXml2Helper.h\"\n#include \"DrawCommon.h\"\n\nclass CSkinFile\n{\npublic:\n "
},
{
"path": "TrafficMonitor/StaticEx.cpp",
"chars": 1871,
"preview": "#include \"stdafx.h\"\n#include \"StaticEx.h\"\n\n\nCStaticEx::CStaticEx()\n{\n}\n\n\nCStaticEx::~CStaticEx()\n{\n}\n\nvoid CStaticEx::Se"
},
{
"path": "TrafficMonitor/StaticEx.h",
"chars": 820,
"preview": "/*\nCStatic࣬ɫıؼ\nSetTextColorıɫ\nҪʱSetWindowTextExÿؼı\n*/\n#pragma once\n#include \"afxwin.h\"\n#include \"CommonData.h\"\nclass CSt"
},
{
"path": "TrafficMonitor/TabDlg.cpp",
"chars": 5364,
"preview": "#include \"stdafx.h\"\n#include \"TabDlg.h\"\n#include \"TrafficMonitor.h\"\n\nIMPLEMENT_DYNAMIC(CTabDlg, CDialogEx)\n\nCTabDlg::CT"
},
{
"path": "TrafficMonitor/TabDlg.h",
"chars": 1073,
"preview": "//这是用于Tab标签中的子对话框类\n#pragma once\nclass CTabDlg : public CDialogEx\n{\n\tDECLARE_DYNAMIC(CTabDlg)\npublic:\n\tCTabDlg(UINT nIDT"
},
{
"path": "TrafficMonitor/TaskBarDlg.cpp",
"chars": 47164,
"preview": "// TaskBarDlg.cpp : 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"TaskBarDlg.h\"\n#include \"afxdialo"
},
{
"path": "TrafficMonitor/TaskBarDlg.h",
"chars": 5303,
"preview": "#pragma once\n#include \"Common.h\"\n#include \"afxwin.h\"\n#include \"DrawCommon.h\"\n#include \"IniHelper.h\"\n#include \"CommonDat"
},
{
"path": "TrafficMonitor/TaskBarSettingsDlg.cpp",
"chars": 29366,
"preview": "// TaskBarSettingsDlg.cpp : 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"TaskBarSettingsDlg.h\"\n#i"
},
{
"path": "TrafficMonitor/TaskBarSettingsDlg.h",
"chars": 3975,
"preview": "#pragma once\r\n#include \"ColorStatic.h\"\r\n#include \"afxwin.h\"\r\n#include \"SpinEdit.h\"\r\n#include \"TabDlg.h\"\r\n#include \"Task"
},
{
"path": "TrafficMonitor/TaskbarColorDlg.cpp",
"chars": 3204,
"preview": "// TaskbarColorDlg.cpp : 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"TaskbarColorDlg.h\"\n#include"
},
{
"path": "TrafficMonitor/TaskbarColorDlg.h",
"chars": 932,
"preview": "#pragma once\n#include \"ColorStatic.h\"\n#include \"afxwin.h\"\n#include \"ColorSettingListCtrl.h\"\n#include \"BaseDialog.h\"\n\n//"
},
{
"path": "TrafficMonitor/TaskbarDefaultStyle.cpp",
"chars": 5975,
"preview": "#include \"stdafx.h\"\n#include \"TaskbarDefaultStyle.h\"\n#include \"IniHelper.h\"\n#include \"TrafficMonitor.h\"\n#include \"Windo"
},
{
"path": "TrafficMonitor/TaskbarDefaultStyle.h",
"chars": 1051,
"preview": "#pragma once\n#include \"CommonData.h\"\n\n#define TASKBAR_DEFAULT_STYLE_NUM 4\n#define TASKBAR_DEFAULT_LIGHT_STYLE_INDEX 3\n\n"
},
{
"path": "TrafficMonitor/TaskbarItemOrderHelper.cpp",
"chars": 7766,
"preview": "#include \"stdafx.h\"\n#include \"TaskbarItemOrderHelper.h\"\n#include \"Common.h\"\n#include \"TrafficMonitor.h\"\n\nCommonDisplayI"
},
{
"path": "TrafficMonitor/TaskbarItemOrderHelper.h",
"chars": 1913,
"preview": "#pragma once\n#include \"PluginInterface.h\"\n\n//显示的项目\nenum DisplayItem\n{\n TDI_UP = 1 << 0,\n TDI_DOWN = 1 << 1,\n T"
},
{
"path": "TrafficMonitor/Test.cpp",
"chars": 1557,
"preview": "#include \"stdafx.h\"\n#include \"Test.h\"\n#include \"Common.h\"\n#include \"SkinFile.h\"\n#include \"TrafficMonitor.h\"\n\nCTest::CTe"
},
{
"path": "TrafficMonitor/Test.h",
"chars": 316,
"preview": "#pragma once\nclass CTest\n{\npublic:\n CTest();\n ~CTest();\n\n static void Test();\n static void TestCommand();\n\n"
},
{
"path": "TrafficMonitor/TinyXml2Helper.cpp",
"chars": 1711,
"preview": "#include \"stdafx.h\"\n#include \"TinyXml2Helper.h\"\n#include \"Common.h\"\n\nbool CTinyXml2Helper::LoadXmlFile(tinyxml2::XMLDoc"
},
{
"path": "TrafficMonitor/TinyXml2Helper.h",
"chars": 761,
"preview": "#pragma once\n#include \"tinyxml2/tinyxml2.h\"\n#include <string>\n#include <functional>\n\nclass CTinyXml2Helper\n{\npublic:\n\n "
},
{
"path": "TrafficMonitor/TrafficMonitor.cpp",
"chars": 62567,
"preview": "\n// TrafficMonitor.cpp : 定义应用程序的类行为。\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"TrafficMonitorDlg.h\""
},
{
"path": "TrafficMonitor/TrafficMonitor.h",
"chars": 5283,
"preview": "\n// TrafficMonitor.h : PROJECT_NAME 应用程序的主头文件\n//\n\n#pragma once\n\n#ifndef __AFXWIN_H__\n#error \"在包含此文件之前包含“stdafx.h”以生成 PC"
},
{
"path": "TrafficMonitor/TrafficMonitor.vcxproj",
"chars": 32085,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.micro"
},
{
"path": "TrafficMonitor/TrafficMonitor.vcxproj.filters",
"chars": 28412,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
},
{
"path": "TrafficMonitor/TrafficMonitorDlg.cpp",
"chars": 94137,
"preview": "\n// TrafficMonitorDlg.cpp : 实现文件\n//\n\n#include \"stdafx.h\"\n#include \"TrafficMonitor.h\"\n#include \"TrafficMonitorDlg.h\"\n#in"
},
{
"path": "TrafficMonitor/TrafficMonitorDlg.h",
"chars": 8400,
"preview": "\n// TrafficMonitorDlg.h : 头文件\n//\n\n#pragma once\n#pragma comment (lib, \"iphlpapi.lib\")\n\n#include \"NetworkInfoDlg.h\"\n#incl"
},
{
"path": "TrafficMonitor/UpdateHelper.cpp",
"chars": 3388,
"preview": "#include \"stdafx.h\"\n#include \"UpdateHelper.h\"\n#include \"SimpleXML.h\"\n#include \"Common.h\"\n\n\nCUpdateHelper::CUpdateHelper"
},
{
"path": "TrafficMonitor/UpdateHelper.h",
"chars": 896,
"preview": "#pragma once\nclass CUpdateHelper\n{\npublic:\n CUpdateHelper();\n ~CUpdateHelper();\n\n enum class UpdateSource\n "
},
{
"path": "TrafficMonitor/WIC.cpp",
"chars": 3663,
"preview": "#include \"stdafx.h\"\n#include \"WIC.h\"\n\nCWICFactory CWICFactory::m_instance;\n\nCWICFactory::CWICFactory()\n{\n //ʼm_pWICFa"
},
{
"path": "TrafficMonitor/WIC.h",
"chars": 932,
"preview": "//ʹ Windows ӳWICͼ꣨HICONתΪȵPARGB32λͼӵ˵\n//https://docs.microsoft.com/en-us/previous-versions/bb757020(v=msdn.10)\n\n#pragma"
},
{
"path": "TrafficMonitor/WinVersionHelper.cpp",
"chars": 1981,
"preview": "#include \"stdafx.h\"\n#include \"WinVersionHelper.h\"\n#include \"WindowsSettingHelper.h\"\n\n\nCWinVersionHelper::CWinVersionHel"
},
{
"path": "TrafficMonitor/WinVersionHelper.h",
"chars": 699,
"preview": "#pragma once\nclass CWinVersionHelper\n{\npublic:\n\tCWinVersionHelper();\n\t~CWinVersionHelper();\n\n\tbool IsWindows11OrLater()"
},
{
"path": "TrafficMonitor/WindowsSettingHelper.cpp",
"chars": 3182,
"preview": "#include \"stdafx.h\"\n#include \"WindowsSettingHelper.h\"\n#include \"TrafficMonitor.h\"\n\nbool CWindowsSettingHelper::m_light_t"
},
{
"path": "TrafficMonitor/WindowsSettingHelper.h",
"chars": 958,
"preview": "#pragma once\nclass CWindowsSettingHelper\n{\npublic:\n static bool IsWindows10LightTheme();\t\t\t\t//жWindowsǷΪdzɫ\n static"
},
{
"path": "TrafficMonitor/auto_start_helper.cpp",
"chars": 14818,
"preview": "#include \"stdafx.h\"\n#include \"auto_start_helper.h\"\n\n#include <Lmcons.h>\n\n#include <comdef.h>\n#include <taskschd.h>\n#inc"
},
{
"path": "TrafficMonitor/auto_start_helper.h",
"chars": 186,
"preview": "#pragma once\n\nbool is_auto_start_task_active_for_this_user(std::wstring* path);\nbool create_auto_start_task_for_this_use"
},
{
"path": "TrafficMonitor/crashtool.cpp",
"chars": 3333,
"preview": "#include \"StdAfx.h\"\n#include \"crashtool.h\"\n\n#include <strsafe.h>\n#include <DbgHelp.h>\n#include <tchar.h>\n#include \"Mess"
},
{
"path": "TrafficMonitor/crashtool.h",
"chars": 227,
"preview": "#pragma once\n\nnamespace CRASHREPORT\n{\n /**@brief\n dmupģʽ\n ʱһdumpļļC:\\Users\\<û>\\AppData\\Local\\TempĿ¼\n "
},
{
"path": "TrafficMonitor/print_compile_time.bat",
"chars": 128,
"preview": "REM ǰںʱ䣬浽compile_time.txtļ\ndel /F /Q compile_time.txt\necho %date:~0,10% >> compile_time.txt\necho %time:~0,8% >> compile_"
},
{
"path": "TrafficMonitor/resource.h",
"chars": 27753,
"preview": "//{{NO_DEPENDENCIES}}\n// Microsoft Visual C++ ɵİļ\n// TrafficMonitor.rc ʹ\n//\n#define IDD_TRAFFICMONITOR_DIALOG 102"
},
{
"path": "TrafficMonitor/skins/0默认皮肤/skin.ini",
"chars": 38,
"preview": "[skin]\ntext_color=16384\nskin_author=zy"
},
{
"path": "TrafficMonitor/skins/xml_test/skin.xml",
"chars": 1718,
"preview": "<root>\n\t<skin>\n\t\t<text_color>16768959,10022341,16777215,16777215,16777215,16770992,16770992,16770992,16770992</text_col"
},
{
"path": "TrafficMonitor/skins/皮肤01/skin.ini",
"chars": 40,
"preview": "[skin]\ntext_color=3803808\nskin_author=zy"
},
{
"path": "TrafficMonitor/skins/皮肤02/skin.ini",
"chars": 40,
"preview": "[skin]\ntext_color=9844741\nskin_author=zy"
},
{
"path": "TrafficMonitor/skins/皮肤03/skin.ini",
"chars": 41,
"preview": "[skin]\ntext_color=16777215\nskin_author=zy"
},
{
"path": "TrafficMonitor/skins/皮肤04/skin.ini",
"chars": 41,
"preview": "[skin]\ntext_color=16777215\nskin_author=zy"
},
{
"path": "TrafficMonitor/skins/皮肤05/skin.ini",
"chars": 39,
"preview": "[skin]\ntext_color=335674\nskin_author=zy"
},
{
"path": "TrafficMonitor/skins/皮肤06/skin.ini",
"chars": 41,
"preview": "[skin]\ntext_color=16773870\nskin_author=zy"
},
{
"path": "TrafficMonitor/skins/皮肤07/skin.ini",
"chars": 41,
"preview": "[skin]\ntext_color=14547455\nskin_author=zy"
},
{
"path": "TrafficMonitor/skins/皮肤08/skin.ini",
"chars": 41,
"preview": "[skin]\ntext_color=16763528\nskin_author=zy"
},
{
"path": "TrafficMonitor/skins/皮肤09/skin.ini",
"chars": 38,
"preview": "[skin]\ntext_color=16384\nskin_author=zy"
},
{
"path": "TrafficMonitor/skins/皮肤10/skin.ini",
"chars": 754,
"preview": "[skin]\ntext_color=9586944\nskin_author=\"zy\"\n[layout]\ntext_height=20\nno_text=1\npreview_width=238\npreview_height=110\nwidth_"
},
{
"path": "TrafficMonitor/skins/皮肤10(竖排)/skin.ini",
"chars": 635,
"preview": "[skin]\ntext_color=9586944\nskin_author=\"zy\"\n[layout]\ntext_height=20\nno_text=1\npreview_width=238\npreview_height=79\nwidth_l"
},
{
"path": "TrafficMonitor/skins/皮肤11/skin.ini",
"chars": 843,
"preview": "[skin]\ntext_color=16777215,0,0,0,\nspecify_each_item_color=0\nskin_author=\"zy\"\nfont_name=\"Segoe UI Semibold\"\nfont_size=10\n"
},
{
"path": "TrafficMonitor/skins/默认皮肤2/skin.ini",
"chars": 494,
"preview": "[skin]\ntext_color=16384\nskin_author=zy\n[layout]\ntext_height=20\nwidth_l=220\nheight_l=43\nup_x_l=6\nup_y_l=2\nup_width_l=108\n"
},
{
"path": "TrafficMonitor/stdafx.cpp",
"chars": 89,
"preview": "\n// stdafx.cpp : ֻļԴļ\n// TrafficMonitor.pch ΪԤͷ\n// stdafx.obj ԤϢ\n\n#include \"stdafx.h\"\n\n\n"
},
{
"path": "TrafficMonitor/stdafx.h",
"chars": 3340,
"preview": "\n// stdafx.h : 标准系统包含文件的包含文件,\n// 或是经常使用但不常更改的\n// 特定于项目的包含文件\n\n#pragma once\n\n#ifndef VC_EXTRALEAN\n#define VC_EXTRALEAN "
},
{
"path": "TrafficMonitor/targetver.h",
"chars": 140,
"preview": "#pragma once\n\n// SDKDDKVer.h õ߰汾 Windows ƽ̨\n\n// ҪΪǰ Windows ƽ̨Ӧó WinSDKVer.h\n// _WIN32_WINNT ΪҪֵ֧ƽ̨Ȼٰ SDKDDKVer.h\n\n#in"
},
{
"path": "TrafficMonitor/tinyxml2/tinyxml2.cpp",
"chars": 73876,
"preview": "/*\nOriginal code by Lee Thomason (www.grinninglizard.com)\n\nThis software is provided 'as-is', without any express or im"
},
{
"path": "TrafficMonitor/tinyxml2/tinyxml2.h",
"chars": 71322,
"preview": "/*\nOriginal code by Lee Thomason (www.grinninglizard.com)\n\nThis software is provided 'as-is', without any express or imp"
},
{
"path": "TrafficMonitor.sln",
"chars": 4980,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 16\nVisualStudioVersion = 16.0.3151"
},
{
"path": "UpdateLog/update_log.md",
"chars": 7311,
"preview": "**简体中文 | [繁體中文](./update_log_zh-tw.md) | [English](./update_log_en-us.md)**\n\n# TrafficMonitor 更新日志\n## V1.83 (2022/02/03)"
},
{
"path": "UpdateLog/update_log_en-us.md",
"chars": 9050,
"preview": "**[简体中文](./update_log.md) | [繁體中文](./update_log_zh-tw.md) | English**<br>\n\n# TrafficMonitor Update log\n## V1.83 (2022/02"
},
{
"path": "UpdateLog/update_log_zh-tw.md",
"chars": 3068,
"preview": "**[简体中文](./update_log.md) | 繁體中文 | [English](./update_log_en-us.md)**<br>\n\n# TrafficMonitor 更新日誌\n## V1.82 (2021/12/12)\n\n"
},
{
"path": "include/OpenHardwareMonitor/OpenHardwareMonitorApi.h",
"chars": 1327,
"preview": "#pragma once\n#include <memory>\n#include \"OpenHardwareMonitorGlobal.h\"\n#include <map>\n#include <string>\n\nnamespace OpenH"
},
{
"path": "include/OpenHardwareMonitor/OpenHardwareMonitorGlobal.h",
"chars": 171,
"preview": "#pragma once\n\n#ifdef OPENHARDWAREMONITOR_EXPORTS\n#define OPENHARDWAREMONITOR_API __declspec(dllexport)\n#else\n#define OP"
},
{
"path": "include/PluginInterface.h",
"chars": 7871,
"preview": "/*********************************************************\n* TrafficMonitor 插件接口\n* Copyright (C) by Zhong Yang 2021\n* z"
},
{
"path": "version.info",
"chars": 413,
"preview": "<version>1.83</version>\n<link>https://gitee.com/zhongyang219/TrafficMonitor/attach_files/958687/download/TrafficMonitor_"
},
{
"path": "version_utf8.info",
"chars": 3127,
"preview": "<version>1.83</version>\n<GitHub>\n\t<link>https://github.com/zhongyang219/TrafficMonitor/releases/download/V1.83/TrafficM"
},
{
"path": "皮肤制作教程.md",
"chars": 141,
"preview": "**皮肤制作教程已经移至Wiki页面:**\n\n[皮肤制作教程 · zhongyang219/TrafficMonitor Wiki (github.com)](https://github.com/zhongyang219/TrafficM"
}
]
// ... and 11 more files (download for full content)
About this extraction
This page contains the full source code of the peng-zhihui/TrafficMonitor GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 205 files (1.1 MB), approximately 336.7k tokens, and a symbol index with 481 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.