获取磁盘符信息
項(xiàng)目中有個(gè)子模塊是ftp客戶端,需要羅列本地各個(gè)磁盤(pán)符,比如C盤(pán)、D盤(pán)、E盤(pán)、F盤(pán)。然后進(jìn)行一些相關(guān)的上傳下載就比較方便,具體樣子如下所示:
需要利用一個(gè)Combox控件實(shí)現(xiàn)。
廢話不多說(shuō),先上代碼:
void CFTPCilentDlg::Getlocaldrv()
{//獲取所有盤(pán)符m_comlocal.ResetContent(); //清除目前所有項(xiàng)TCHAR szBuf[100];memset(szBuf,0,100);DWORD len=GetLogicalDriveStrings(sizeof(szBuf)/sizeof(TCHAR),szBuf);for (TCHAR * s= szBuf;*s;s+=_tcslen(s)+1){//MessageBox(sDrivePath);CString k = s;m_comlocal.AddString(k);}m_comlocal.SetCurSel(0); //設(shè)置0項(xiàng)為顯示的內(nèi)容
}
代碼中的m_comlocal是Combox控件關(guān)聯(lián)的控件變量,ResetContent()和AddString()是對(duì)該控件的操作。所以其中核心的函數(shù)是GetLogicalDriveStrings()函數(shù)。那我就對(duì)這個(gè)函數(shù)簡(jiǎn)單介紹一下:
定義:
DWORD GetLogicalDriveStrings(DWORD nBufferLength,LPTSTR lpBuffer);
獲取一個(gè)字串,其中包含了當(dāng)前所有邏輯驅(qū)動(dòng)器的根驅(qū)動(dòng)器路徑
返回值
返回保存所有數(shù)據(jù)所需要的字節(jié)數(shù)。應(yīng)該總是比較返回值與參數(shù)cchBuffer的大小。
參數(shù)表
參數(shù) 類型及說(shuō)明
DODOWRD cchBuffer,緩沖區(qū)的大小
LPTSTR lpszBuffer,用于裝載邏輯驅(qū)動(dòng)器名稱的字串。每個(gè)名字都用一個(gè)NULL字符分隔,在最后一個(gè)名字后面用兩個(gè)NULL表示中止(空中止) 例如A:\C:\
用法其實(shí)很簡(jiǎn)單。我的項(xiàng)目中做到這里其實(shí)就已經(jīng)可以了。關(guān)于擴(kuò)展的一些功能我引用別人的博客:http://www.cnblogs.com/qq78292959/archive/2012/06/12/2546914.html
1.獲取系統(tǒng)中邏輯驅(qū)動(dòng)器的數(shù)量
The GetLogicalDrives function retrieves a bitmask representing the currently available disk drives.
DWORD GetLogicalDrives(void);
2.獲取所有驅(qū)動(dòng)器字符串信息
The GetLogicalDriveStrings function fills a buffer with strings that specify valid drives in the system.
DWORD GetLogicalDriveStrings(
DWORD nBufferLength,
LPTSTR lpBuffer
);
3.獲取驅(qū)動(dòng)器類型
The GetDriveType function determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network drive.
UINT GetDriveType(
LPCTSTR lpRootPathName
);
- 獲取驅(qū)動(dòng)器磁盤(pán)的空間狀態(tài),函數(shù)返回的是個(gè)BOOL類型數(shù)據(jù)
The GetDiskFreeSpaceEx function retrieves information about the amount of space available on a disk volume: the total amount of space, the total amount of free space, and the total amount of free space available to the user associated with the calling thread.
BOOL GetDiskFreeSpaceEx(
LPCTSTR lpDirectoryName,
PULARGE_INTEGER lpFreeBytesAvailable,
PULARGE_INTEGER lpTotalNumberOfBytes,
PULARGE_INTEGER lpTotalNumberOfFreeBytes
);
利用上面的四五個(gè)函數(shù)基本可以實(shí)現(xiàn)對(duì)磁盤(pán)符的操作。因?yàn)槲业捻?xiàng)目中只是需要羅列磁盤(pán)符,然后根據(jù)Combox控件中選擇的磁盤(pán),羅列該磁盤(pán)目錄下的文件目錄:
關(guān)于如何羅列每個(gè)磁盤(pán)符下面的文件目錄路,我在后面的博客會(huì)寫(xiě)到。
OK,到此!
拙見(jiàn),小記!
總結(jié)
- 上一篇: VS2010使用Skin++
- 下一篇: 使用Combox控件的一个问题