今天在完善程序的时候,希望能够用到列表框来显示分区的信息,但是在网上查了一下,发现不好用,
于是,便有了下文吧,做个笔记,以后可能会用得到。。
//得到磁盘大小 的代码是这样的。。。
首先,我们当然先是获取到磁盘的信息,然后在是其他的操作:
得到磁盘信息比较简单,GetDiskFreeSpace(),就可以搞定了,
参数 1: 传入路径,默认情况是程序当前目录下的磁盘。。
2-4 都是具体的返回信息,可以参看 MSDN ,这里就不说了。。
然后就是 得到CListBox* 的指针了 ,我们在类中声明了一个这样的指针变量,
这里就是让它与 控件关联起来了。。。
最后输出就用到了格式转换了,其实挺简单的。。。
哦,对了,为了得到机器上所有的盘符,我用了一个循环 + 一个函数获取 作为判断,当不能获取信息时,我就知道
所有盘符已经得到,返回就 ok 了。。
这个系统工具还没有写完,应该还会有更好的方法。。。
期待完善。。。
void CDiskManage::GetDiskSize()
{
BOOL bRet = TRUE;
char buffer[100];
DWORD dwSector1;
DWORD dwSector2;
DWORD dwSector3;
DWORD dwSector4;
CString m_strName1 = "C";
memset(buffer, 0, sizeof(buffer));
m_pList = (CListBox*)GetDlgItem(LST_DISK);
while (bRet)
{
CString m_strName2 = "://";
m_strName2 = m_strName1 + m_strName2;
bRet = GetDiskFreeSpace(m_strName2,
&dwSector1,
&dwSector2,
&dwSector3,
&dwSector4);
if (bRet)
{
wsprintf(buffer, "%c %d %d %d %d",
m_strName2[0], dwSector1, dwSector2, dwSector3, dwSector4);
m_pList->AddString(buffer);
}
m_strName1 = m_strName1[0] + 1;
}
UpdateData(FALSE);
}