Skip to content

Commit

Permalink
新增显示硬盘利用率的功能
Browse files Browse the repository at this point in the history
  • Loading branch information
zhongyang219 committed Jul 20, 2021
1 parent 588b37a commit 7fd2b65
Show file tree
Hide file tree
Showing 18 changed files with 115 additions and 5 deletions.
24 changes: 24 additions & 0 deletions OpenHardwareMonitorApi/OpenHardwareMonitorImp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,11 @@ namespace OpenHardwareMonitorApi
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;
Expand Down Expand Up @@ -174,7 +179,23 @@ namespace OpenHardwareMonitorApi
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;
}
Expand Down Expand Up @@ -232,6 +253,9 @@ namespace OpenHardwareMonitorApi
float cur_hdd_temperature = -1;
GetHardwareTemperature(computer->Hardware[i], cur_hdd_temperature);
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;
if (m_hdd_temperature < 0)
m_hdd_temperature = cur_hdd_temperature;
}
Expand Down
3 changes: 3 additions & 0 deletions OpenHardwareMonitorApi/OpenHardwareMonitorImp.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ namespace OpenHardwareMonitorApi {
virtual float GpuUsage() 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;
Expand All @@ -35,6 +36,7 @@ namespace OpenHardwareMonitorApi {
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);

void ResetAllValues();

Expand All @@ -48,6 +50,7 @@ namespace OpenHardwareMonitorApi {
float m_gpu_ati_usage{};
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_hdd_usage;
};

//一个单实例类
Expand Down
8 changes: 7 additions & 1 deletion TrafficMonitor/DisplayTextSettingDlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,9 @@ BOOL CDisplayTextSettingDlg::OnInitDialog()
case TDI_MAIN_BOARD_TEMP:
item_name = CCommon::LoadText(IDS_MAINBOARD_TEMPERATURE);
break;
case TDI_HDD_USAGE:
item_name = CCommon::LoadText(IDS_HDD_USAGE);
break;
#endif
default:
break;
Expand All @@ -116,7 +119,7 @@ BOOL CDisplayTextSettingDlg::OnInitDialog()
void CDisplayTextSettingDlg::OnOK()
{
// TODO: 在此添加专用代码和/或调用基类

int item_count = m_list_ctrl.GetItemCount();
for (int i{}; i < item_count; i++)
{
Expand Down Expand Up @@ -173,6 +176,9 @@ void CDisplayTextSettingDlg::OnBnClickedRestoreDefaultButton()
case TDI_MAIN_BOARD_TEMP:
default_text = CCommon::LoadText(IDS_MAINBOARD_DISP, _T(": "));
break;
case TDI_HDD_USAGE:
default_text = CCommon::LoadText(IDS_HDD_DISP, _T(": "));
break;
default:
break;
}
Expand Down
3 changes: 3 additions & 0 deletions TrafficMonitor/GeneralSettingsDlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,10 @@ void CGeneralSettingsDlg::OnOK()
theApp.m_cfg_data.m_tbar_display_item &= ~TDI_GPU_TEMP;
}
if (!m_data.IsHardwareEnable(HI_HDD))
{
theApp.m_cfg_data.m_tbar_display_item &= ~TDI_HDD_TEMP;
theApp.m_cfg_data.m_tbar_display_item &= ~TDI_HDD_USAGE;
}
if (!m_data.IsHardwareEnable(HI_MBD))
theApp.m_cfg_data.m_tbar_display_item &= ~TDI_MAIN_BOARD_TEMP;
m_taskbar_item_modified = (theApp.m_cfg_data.m_tbar_display_item != taskbar_displat_item_ori);
Expand Down
3 changes: 3 additions & 0 deletions TrafficMonitor/MainWndColorDlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,9 @@ BOOL CMainWndColorDlg::OnInitDialog()
case TDI_MAIN_BOARD_TEMP:
item_name = CCommon::LoadText(IDS_MAINBOARD_TEMPERATURE);
break;
case TDI_HDD_USAGE:
item_name = CCommon::LoadText(IDS_HDD_USAGE);
break;
#endif
default:
break;
Expand Down
4 changes: 4 additions & 0 deletions TrafficMonitor/SkinFile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,7 @@ void CSkinFile::DrawInfo(CDC* pDC, bool show_more_info, CFont& font)
str_memory_value = CCommon::UsageToString(theApp.m_memory_usage, theApp.m_main_wnd_data);
map_str[TDI_MEMORY] = (m_layout_info.no_label ? _T("") : theApp.m_main_wnd_data.disp_str.Get(TDI_MEMORY).c_str()) + str_memory_value;
map_str[TDI_GPU_USAGE] = (m_layout_info.no_label ? _T("") : theApp.m_main_wnd_data.disp_str.Get(TDI_GPU_USAGE).c_str()) + CCommon::UsageToString(theApp.m_gpu_usage, theApp.m_main_wnd_data);
map_str[TDI_HDD_USAGE] = (m_layout_info.no_label ? _T("") : theApp.m_main_wnd_data.disp_str.Get(TDI_HDD_USAGE).c_str()) + CCommon::UsageToString(theApp.m_hdd_usage, theApp.m_main_wnd_data);

//温度
auto getTemperatureStr = [&](DisplayItem display_item, float temperature)
Expand Down Expand Up @@ -505,6 +506,9 @@ string CSkinFile::GetDisplayItemXmlNodeName(DisplayItem display_item)
case TDI_MAIN_BOARD_TEMP:
return "main_board_temperature";
break;
case TDI_HDD_USAGE:
return "hdd";
break;
default:
return string();
break;
Expand Down
22 changes: 20 additions & 2 deletions TrafficMonitor/TaskBarDlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ void CTaskBarDlg::DrawDisplayItem(CDrawCommon& drawer, DisplayItem type, CRect r
}

// 绘制状态条
if (type == TDI_CPU || type == TDI_MEMORY || type == TDI_GPU_USAGE || type == TDI_CPU_TEMP || type == TDI_GPU_TEMP || type == TDI_HDD_TEMP || type == TDI_MAIN_BOARD_TEMP)
if (type == TDI_CPU || type == TDI_MEMORY || type == TDI_GPU_USAGE || type == TDI_CPU_TEMP || type == TDI_GPU_TEMP || type == TDI_HDD_TEMP || type == TDI_MAIN_BOARD_TEMP || type == TDI_HDD_USAGE)
{
if (theApp.m_taskbar_data.cm_graph_type)
{
Expand All @@ -200,6 +200,9 @@ void CTaskBarDlg::DrawDisplayItem(CDrawCommon& drawer, DisplayItem type, CRect r
case TDI_MAIN_BOARD_TEMP:
AddHisToList(type, theApp.m_main_board_temperature);
break;
case TDI_HDD_USAGE:
AddHisToList(type, theApp.m_hdd_usage);
break;
default:
break;
}
Expand Down Expand Up @@ -231,6 +234,9 @@ void CTaskBarDlg::DrawDisplayItem(CDrawCommon& drawer, DisplayItem type, CRect r
case TDI_MAIN_BOARD_TEMP:
value = theApp.m_main_board_temperature;
break;
case TDI_HDD_USAGE:
value = theApp.m_hdd_usage;
break;
default:
break;
}
Expand Down Expand Up @@ -288,7 +294,7 @@ void CTaskBarDlg::DrawDisplayItem(CDrawCommon& drawer, DisplayItem type, CRect r
str_value = CCommon::DataSizeToString((static_cast<unsigned long long>(theApp.m_total_memory) - static_cast<unsigned long long>(theApp.m_used_memory)) * 1024, theApp.m_taskbar_data.separate_value_unit_with_space);
}
//绘制CPU或内存利用率
else if (type == TDI_CPU || type == TDI_MEMORY || type == TDI_GPU_USAGE)
else if (type == TDI_CPU || type == TDI_MEMORY || type == TDI_GPU_USAGE || type == TDI_HDD_USAGE)
{
int usage{};
switch (type)
Expand All @@ -302,6 +308,9 @@ void CTaskBarDlg::DrawDisplayItem(CDrawCommon& drawer, DisplayItem type, CRect r
case TDI_GPU_USAGE:
usage = theApp.m_gpu_usage;
break;
case TDI_HDD_USAGE:
usage = theApp.m_hdd_usage;
break;
default:
break;
}
Expand Down Expand Up @@ -675,6 +684,7 @@ void CTaskBarDlg::CalculateWindowSize()
m_item_widths[TDI_CPU].value_width = value_width;
m_item_widths[TDI_MEMORY].value_width = memory_width;
m_item_widths[TDI_GPU_USAGE].value_width = value_width;
m_item_widths[TDI_HDD_USAGE].value_width = value_width;

//计算温度显示的宽度
if (theApp.m_taskbar_data.separate_value_unit_with_space)
Expand Down Expand Up @@ -833,6 +843,11 @@ bool CTaskBarDlg::IsShowMainboardTemperature()
return (theApp.m_cfg_data.m_tbar_display_item & TDI_MAIN_BOARD_TEMP);
}

bool CTaskBarDlg::IsShowHddUsage()
{
return (theApp.m_cfg_data.m_tbar_display_item & TDI_HDD_USAGE);
}

BOOL CTaskBarDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
Expand Down Expand Up @@ -995,6 +1010,7 @@ void CTaskBarDlg::OnInitMenu(CMenu* pMenu)
pMenu->CheckMenuItem(ID_SHOW_GPU_TEMPERATURE, MF_BYCOMMAND | ((IsShowGpuTemperature()) ? MF_CHECKED : MF_UNCHECKED));
pMenu->CheckMenuItem(ID_SHOW_HDD_TEMPERATURE, MF_BYCOMMAND | ((IsShowHddTemperature()) ? MF_CHECKED : MF_UNCHECKED));
pMenu->CheckMenuItem(ID_SHOW_MAIN_BOARD_TEMPERATURE, MF_BYCOMMAND | ((IsShowMainboardTemperature()) ? MF_CHECKED : MF_UNCHECKED));
pMenu->CheckMenuItem(ID_SHOW_HDD, MF_BYCOMMAND | ((IsShowHddUsage()) ? MF_CHECKED : MF_UNCHECKED));

//不含温度监控的版本,禁用温度监控相关菜单项
#ifdef WITHOUT_TEMPERATURE
Expand All @@ -1003,13 +1019,15 @@ void CTaskBarDlg::OnInitMenu(CMenu* pMenu)
pMenu->EnableMenuItem(ID_SHOW_GPU_TEMPERATURE, MF_BYCOMMAND | MF_GRAYED);
pMenu->EnableMenuItem(ID_SHOW_HDD_TEMPERATURE, MF_BYCOMMAND | MF_GRAYED);
pMenu->EnableMenuItem(ID_SHOW_MAIN_BOARD_TEMPERATURE, MF_BYCOMMAND | MF_GRAYED);
pMenu->EnableMenuItem(ID_SHOW_HDD, MF_BYCOMMAND | MF_GRAYED);
#else
//根据是否关闭硬件监控禁用对应的菜单项
pMenu->EnableMenuItem(ID_SHOW_GPU, MF_BYCOMMAND | (theApp.m_general_data.IsHardwareEnable(HI_GPU) ? MF_ENABLED : MF_GRAYED));
pMenu->EnableMenuItem(ID_SHOW_CPU_TEMPERATURE, MF_BYCOMMAND | (theApp.m_general_data.IsHardwareEnable(HI_CPU) ? MF_ENABLED : MF_GRAYED));
pMenu->EnableMenuItem(ID_SHOW_GPU_TEMPERATURE, MF_BYCOMMAND | (theApp.m_general_data.IsHardwareEnable(HI_GPU) ? MF_ENABLED : MF_GRAYED));
pMenu->EnableMenuItem(ID_SHOW_HDD_TEMPERATURE, MF_BYCOMMAND | (theApp.m_general_data.IsHardwareEnable(HI_HDD) ? MF_ENABLED : MF_GRAYED));
pMenu->EnableMenuItem(ID_SHOW_MAIN_BOARD_TEMPERATURE, MF_BYCOMMAND | (theApp.m_general_data.IsHardwareEnable(HI_MBD) ? MF_ENABLED : MF_GRAYED));
pMenu->EnableMenuItem(ID_SHOW_HDD, MF_BYCOMMAND | (theApp.m_general_data.IsHardwareEnable(HI_HDD) ? MF_ENABLED : MF_GRAYED));
#endif

pMenu->EnableMenuItem(ID_SELECT_ALL_CONNECTION, MF_BYCOMMAND | (theApp.m_general_data.show_all_interface ? MF_GRAYED : MF_ENABLED));
Expand Down
1 change: 1 addition & 0 deletions TrafficMonitor/TaskBarDlg.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ class CTaskBarDlg : public CDialogEx
static bool IsShowGpuTemperature();
static bool IsShowHddTemperature();
static bool IsShowMainboardTemperature();
static bool IsShowHddUsage();

DECLARE_MESSAGE_MAP()

Expand Down
3 changes: 3 additions & 0 deletions TrafficMonitor/TaskbarColorDlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@ BOOL CTaskbarColorDlg::OnInitDialog()
case TDI_MAIN_BOARD_TEMP:
item_name = CCommon::LoadText(IDS_MAINBOARD_TEMPERATURE);
break;
case TDI_HDD_USAGE:
item_name = CCommon::LoadText(IDS_HDD_USAGE);
break;
#endif
default:
break;
Expand Down
2 changes: 2 additions & 0 deletions TrafficMonitor/TaskbarItemOrderHelper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,8 @@ CString CTaskbarItemOrderHelper::GetItemDisplayName(DisplayItem item)
return CCommon::LoadText(IDS_HDD_TEMPERATURE);
case TDI_MAIN_BOARD_TEMP:
return CCommon::LoadText(IDS_MAINBOARD_TEMPERATURE);
case TDI_HDD_USAGE:
return CCommon::LoadText(IDS_HDD_USAGE);
default:
break;
}
Expand Down
5 changes: 3 additions & 2 deletions TrafficMonitor/TaskbarItemOrderHelper.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,16 @@ enum DisplayItem
TDI_CPU_TEMP = 1 << 5,
TDI_GPU_TEMP = 1 << 6,
TDI_HDD_TEMP = 1 << 7,
TDI_MAIN_BOARD_TEMP = 1 << 8
TDI_MAIN_BOARD_TEMP = 1 << 8,
TDI_HDD_USAGE = 1 << 9
};

//所有显示项目的集合
const std::set<DisplayItem> AllDisplayItems
{
TDI_UP, TDI_DOWN, TDI_CPU, TDI_MEMORY
#ifndef WITHOUT_TEMPERATURE
, TDI_GPU_USAGE, TDI_CPU_TEMP, TDI_GPU_TEMP, TDI_HDD_TEMP, TDI_MAIN_BOARD_TEMP
, TDI_GPU_USAGE, TDI_CPU_TEMP, TDI_GPU_TEMP, TDI_HDD_TEMP, TDI_MAIN_BOARD_TEMP, TDI_HDD_USAGE
#endif
};

Expand Down
10 changes: 10 additions & 0 deletions TrafficMonitor/TrafficMonitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ void CTrafficMonitorApp::LoadConfig()
m_main_wnd_data.disp_str.Get(TDI_GPU_TEMP) = ini.GetString(L"config", L"gpu_temp_string", CCommon::LoadText(IDS_GPU_DISP, _T(": $")));
m_main_wnd_data.disp_str.Get(TDI_HDD_TEMP) = ini.GetString(L"config", L"hdd_temp_string", CCommon::LoadText(IDS_HDD_DISP, _T(": $")));
m_main_wnd_data.disp_str.Get(TDI_MAIN_BOARD_TEMP) = ini.GetString(L"config", L"main_board_temp_string", CCommon::LoadText(IDS_MAINBOARD_DISP, _T(": $")));
m_main_wnd_data.disp_str.Get(TDI_HDD_USAGE) = ini.GetString(L"config", L"hdd_string", CCommon::LoadText(IDS_HDD_DISP, _T(": $")));

m_main_wnd_data.speed_short_mode = ini.GetBool(_T("config"), _T("speed_short_mode"), false);
m_main_wnd_data.separate_value_unit_with_space = ini.GetBool(_T("config"), _T("separate_value_unit_with_space"), true);
Expand Down Expand Up @@ -169,6 +170,7 @@ void CTrafficMonitorApp::LoadConfig()
m_cfg_data.m_tbar_display_item &= ~TDI_GPU_TEMP;
m_cfg_data.m_tbar_display_item &= ~TDI_HDD_TEMP;
m_cfg_data.m_tbar_display_item &= ~TDI_MAIN_BOARD_TEMP;
m_cfg_data.m_tbar_display_item &= ~TDI_HDD_USAGE;
#endif

//如果选项设置中关闭了某个硬件监控,则不显示对应的温度监控相关项目
Expand All @@ -180,7 +182,10 @@ void CTrafficMonitorApp::LoadConfig()
m_cfg_data.m_tbar_display_item &= ~TDI_GPU_TEMP;
}
if (!m_general_data.IsHardwareEnable(HI_HDD))
{
m_cfg_data.m_tbar_display_item &= ~TDI_HDD_TEMP;
m_cfg_data.m_tbar_display_item &= ~TDI_HDD_USAGE;
}
if (!m_general_data.IsHardwareEnable(HI_MBD))
m_cfg_data.m_tbar_display_item &= ~TDI_MAIN_BOARD_TEMP;

Expand Down Expand Up @@ -208,6 +213,7 @@ void CTrafficMonitorApp::LoadConfig()
m_taskbar_data.disp_str.Get(TDI_GPU_TEMP) = ini.GetString(L"task_bar", L"gpu_temp_string", CCommon::LoadText(IDS_GPU_DISP, _T(": ")));
m_taskbar_data.disp_str.Get(TDI_HDD_TEMP) = ini.GetString(L"task_bar", L"hdd_temp_string", CCommon::LoadText(IDS_HDD_DISP, _T(": ")));
m_taskbar_data.disp_str.Get(TDI_MAIN_BOARD_TEMP) = ini.GetString(L"task_bar", L"main_board_temp_string", CCommon::LoadText(IDS_MAINBOARD_DISP, _T(": ")));
m_taskbar_data.disp_str.Get(TDI_HDD_USAGE) = ini.GetString(L"task_bar", L"hdd_string", CCommon::LoadText(IDS_HDD_DISP, _T(": ")));

m_taskbar_data.tbar_wnd_on_left = ini.GetBool(_T("task_bar"), _T("task_bar_wnd_on_left"), false);
m_taskbar_data.speed_short_mode = ini.GetBool(_T("task_bar"), _T("task_bar_speed_short_mode"), false);
Expand Down Expand Up @@ -309,6 +315,7 @@ void CTrafficMonitorApp::SaveConfig()
ini.WriteString(_T("config"), _T("gpu_temp_string"), m_main_wnd_data.disp_str.Get(TDI_GPU_TEMP));
ini.WriteString(_T("config"), _T("hdd_temp_string"), m_main_wnd_data.disp_str.Get(TDI_HDD_TEMP));
ini.WriteString(_T("config"), _T("main_board_temp_string"), m_main_wnd_data.disp_str.Get(TDI_MAIN_BOARD_TEMP));
ini.WriteString(_T("config"), _T("hdd_string"), m_main_wnd_data.disp_str.Get(TDI_HDD_USAGE));

ini.WriteBool(L"config", L"speed_short_mode", m_main_wnd_data.speed_short_mode);
ini.WriteBool(L"config", L"separate_value_unit_with_space", m_main_wnd_data.separate_value_unit_with_space);
Expand Down Expand Up @@ -357,6 +364,7 @@ void CTrafficMonitorApp::SaveConfig()
ini.WriteString(_T("task_bar"), _T("gpu_temp_string"), m_taskbar_data.disp_str.Get(TDI_GPU_TEMP));
ini.WriteString(_T("task_bar"), _T("hdd_temp_string"), m_taskbar_data.disp_str.Get(TDI_HDD_TEMP));
ini.WriteString(_T("task_bar"), _T("main_board_temp_string"), m_taskbar_data.disp_str.Get(TDI_MAIN_BOARD_TEMP));
ini.WriteString(_T("task_bar"), _T("hdd_string"), m_taskbar_data.disp_str.Get(TDI_HDD_USAGE));

ini.WriteBool(L"task_bar", L"task_bar_wnd_on_left", m_taskbar_data.tbar_wnd_on_left);
ini.WriteBool(L"task_bar", L"task_bar_wnd_snap", m_taskbar_data.tbar_wnd_snap);
Expand Down Expand Up @@ -1034,6 +1042,8 @@ void CTrafficMonitorApp::UpdateTaskbarWndMenu()
pMenu->AppendMenu(MF_STRING | MF_ENABLED, ID_SHOW_HDD_TEMPERATURE, CCommon::LoadText(IDS_HDD_TEMPERATURE));
if (m_general_data.IsHardwareEnable(HI_MBD))
pMenu->AppendMenu(MF_STRING | MF_ENABLED, ID_SHOW_MAIN_BOARD_TEMPERATURE, CCommon::LoadText(IDS_MAINBOARD_TEMPERATURE));
if (m_general_data.IsHardwareEnable(HI_HDD))
pMenu->AppendMenu(MF_STRING | MF_ENABLED, ID_SHOW_HDD, CCommon::LoadText(IDS_HDD_USAGE));
#endif
}
}
Expand Down
1 change: 1 addition & 0 deletions TrafficMonitor/TrafficMonitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ class CTrafficMonitorApp : public CWinApp
float m_hdd_temperature{ -1 }; //硬盘温度
float m_main_board_temperature{ -1 }; //主板温度
int m_gpu_usage{ -1 }; //显卡利用率
int m_hdd_usage{ -1 }; //硬盘利用率

unsigned __int64 m_today_up_traffic{}; //今天已使用的上传流量
unsigned __int64 m_today_down_traffic{}; //今天已使用的下载流量
Expand Down
Binary file modified TrafficMonitor/TrafficMonitor.rc
Binary file not shown.
Loading

0 comments on commit 7fd2b65

Please sign in to comment.