使用CrystalDiskInfo和VS2017mfc提取硬盘数据的例子
CrystalDiskInfo是一款常用的硬盘信息查询工具,可以提供硬盘的健康状况、温度、读写速度等数据。本文介绍如何使用CrystalDiskInfo工具中提取查询硬盘数据的部分,使用VS2017mfc编写示例代码。
在使用CrystalDiskInfo工具时,我们可以调用其内部的API接口,从而提取硬盘的相关数据。以下是使用VS2017mfc编写的一个示例代码:
BOOL CDiskInfoExtendDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 获取硬盘信息
HMODULE hMod = LoadLibrary(_T("CrystalDiskInfo.exe"));
if (hMod != NULL)
{
typedef BOOL(__stdcall *LPFN_GetDiskInfo)(DISK_INFO*);
LPFN_GetDiskInfo pfnGetDiskInfo = (LPFN_GetDiskInfo)GetProcAddress(hMod, "GetDiskInfo");
if (pfnGetDiskInfo != NULL)
{
DISK_INFO diskInfo;
ZeroMemory(&diskInfo, sizeof(DISK_INFO));
diskInfo.size = sizeof(DISK_INFO);
if (pfnGetDiskInfo(&diskInfo))
{
// 显示硬盘信息
CString strTemp;
strTemp.Format(_T("Model: %s\r\n"), diskInfo.model);
m_editInfo.SetWindowText(strTemp);
strTemp.Format(_T("Firmware: %s\r\n"), diskInfo.firmware);
m_editInfo.ReplaceSel(strTemp);
strTemp.Format(_T("Serial: %s\r\n"), diskInfo.serial);
m_editInfo.ReplaceSel(strTemp);
strTemp.Format(_T("Interface: %s\r\n"), diskInfo.interface);
m_editInfo.ReplaceSel(strTemp);
strTemp.Format(_T("Capacity: %.2f GB\r\n"), diskInfo.capacity / 1024.0 / 1024.0 / 1024.0);
m_editInfo.ReplaceSel(strTemp);
strTemp.Format(_T("Health: %d/100\r\n"), diskInfo.health);
m_editInfo.ReplaceSel(strTemp);
strTemp.Format(_T("Temperature: %d ℃\r\n"), diskInfo.temperature);
m_editInfo.ReplaceSel(strTemp);
}
}
FreeLibrary(hMod);
}
return TRUE;
}
在以上示例代码中,我们首先加载了CrystalDiskInfo.exe的动态链接库,然后获取了GetDiskInfo函数的地址。通过调用该函数,我们可以获取到硬盘的相关信息,例如型号、固件版本、序列号、接口类型、容量、健康度和温度等。最后,我们将获取到的信息显示在窗口中。
下载地址
用户评论