GetTempPath函數(shù)
功能 獲取為臨時(shí)文件指定的路徑
API中函數(shù)原形為: DWORD GetTempPath(DWORD nBufferLength, LPTSTR lpBuffer)
參數(shù):
StrLen = GetTempPath(NAME_LEN, OutPath)
其中:
OutPath:是輸出臨時(shí)文件夾名稱的變量,它的初始值為NAME_LEN個(gè)空格,函數(shù)調(diào)用后,就不是空格了,它會(huì)把取得的臨時(shí)文件夾名稱存入此變量。
NAME_LEN:是告訴函數(shù)OutPath變量的長度。
StrLen:是取得的臨時(shí)文件夾名稱的長度。
返回值 Long,裝載到lpBuffer的字符數(shù)。如當(dāng)前緩沖區(qū)的長度不夠,不能容下整個(gè)路徑,則返回lpBuffer需要的長度。
零表示失敗。會(huì)設(shè)置GetLastError
應(yīng)用小例:
CHAR OutPath[MAX_PATH];
int StrLen = GetTempPath(MAX_PATH, OutPath);
printf("輸出臨時(shí)文件夾名稱 = %s\n",OutPath);
printf("臨時(shí)文件夾名稱的長度= 0x%x\n",StrLen);
//輸出臨時(shí)文件夾名稱 = C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ (環(huán)境變量里有)
//臨時(shí)文件夾名稱的長度= 0x23
注解臨時(shí)路徑是由TMP環(huán)境變量指定的一個(gè)路徑。如TMP不存在,則是由TEMP環(huán)境變量指定的路徑。
如果這兩個(gè)環(huán)境變量都不存在,就是當(dāng)前目錄
如果查看當(dāng)前用戶的臨時(shí)文件夾,可以在開始-運(yùn)行里面輸入%temp%,回車即可(一般為隱藏的)
GetTempFileName函數(shù)
這個(gè)函數(shù)包含了一個(gè)臨時(shí)文件的名字,它可由應(yīng)用程序使用
UINT GetTempFileName(
PChar lpPathName:; {路徑}
PChar lpPrefixString:; {前綴}
UINT uUnique:; {指定生成文件名的數(shù)字,文件名將根據(jù)參數(shù)2、參數(shù)3來生成}
PChar lpTempFileName: {文件名需要的緩沖區(qū)}
) {指定生成文件名的數(shù)字,如果參數(shù)3是0,則返回文件名長度}
應(yīng)用舉例:
CHAR OutPath[MAX_PATH];
int StrLen = GetTempPath(MAX_PATH, OutPath);
CHAR Name[100];
GetTempFileNameA(OutPath,"~xx",16,Name);
printf("自定義唯一臨時(shí)文件夾名稱 = %s\n",Name);
//因?yàn)?/span>16的十六進(jìn)制是10,文件名會(huì)是: ~xx10.tmp
//Name = C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\~xx10.tmp
GetWindowsDirectory函數(shù)與GetSystemDirectory函數(shù)用法一樣
GetWindowsDirectory是獲取Windows文件夾的路徑。GetSystemDirectory是獲取systrm32文件夾的路徑
下面是講解GetSystemDirectory函數(shù)
GetSystemDirectory 函數(shù)
獲取systrm32文件夾的路徑。系統(tǒng)文件夾包含了諸如動(dòng)態(tài)鏈接庫和驅(qū)動(dòng)的系統(tǒng)文件。
該函數(shù)最初是為了兼容問題而提供的。應(yīng)用程序應(yīng)該在Program File文件夾內(nèi)存儲(chǔ)代碼和常駐數(shù)據(jù)。
UINT WINAPI GetSystemDirectory(
__out LPTSTR lpBuffer,
__in UINT uSize
);
參數(shù)
lpBuffer String,用于裝載系統(tǒng)目錄路徑名的一個(gè)字串緩沖區(qū)。它應(yīng)事先初始化成“路徑”字符串的長度+1。
通常至少要為這個(gè)緩沖區(qū)分配MAX_PATH個(gè)字符的長度
nSize Long,lpBuffer字串的最大長度
返回值
如果函數(shù)成功,返回值是緩沖內(nèi)容副本的長度,但該長度不包含結(jié)尾的NULL字符。如果該長度大于給定的長度,則返回值是所需的緩沖大小,且包含結(jié)尾的NULL字符。
如果函數(shù)失敗,返回零值。
備注
應(yīng)用程序不應(yīng)該在系統(tǒng)目錄內(nèi)創(chuàng)建文件。如果用戶運(yùn)行在一個(gè)共享版本的Windows操作系統(tǒng)上,應(yīng)用程序是不能訪問系統(tǒng)目錄的
應(yīng)用小例:
string str;
UINT size=GetSystemDirectory(NULL,0);
CHAR *path=new CHAR[size];
if (GetSystemDirectory(path,size) != 0)
{
str = path;
}
delete[] path;