關於獲取當前路徑的問題
在開發軟體裡,常常碰到要讀取當前目錄下的配置引數檔案,或者開啟當前目錄下別的程式來執行,那麼就需要獲取當前程序的目錄位置,
主要有兩個函式來實現
1.函式getcurrentdirectory獲取當前程序所有在的目錄。同時也可以使用setcurrentdirectory函式來改變程序的當前目錄。
dword getcurrentdirectory(
dword nbufferlength, // size of directory buffer
lptstr lpbuffer // directory buffer
函式功能
找到當前程序的當前目錄
引數說明
引數 型別及說明
nbufferlength lpbuffer緩衝區的長度
lpbuffer 指定乙個預定義字串,用於裝載當前目錄
返回值
呼叫成功 返回裝載到lpbuffer的位元組數。
如nbufferlength的長度不夠,不足以容納目錄,則返回值是必要的緩衝區長度(要求至少這個長度),其中包括空中止字元。零表示失敗。使用getlasterror函式可獲得錯誤資訊
2.函式原型:
dword getmodulefilename(
hmodule hmodule,
lptstr lpfilename,
dword nsize
函式引數說明:
hmodule hmodule 裝載乙個程式例項的控制代碼。如果該引數為null,該函式返回該當前應用程式全路徑。
lpfilename lptstr 是你存放返回的名字的記憶體塊的指標,是乙個輸出引數
nsize dword ,裝載到緩衝區lpfilename的最大值
函式返回值:
如果返回為成功,將在lpfilename的緩衝區當中返回相應模組的路徑,如果所為的nsize過小,哪麼返回僅按所設定緩衝區大小返回相應字串內容。
如果函式失敗,返回值將為0,並返回getlasterror異常**。
需要的標頭檔案為:
include windows.h
兩個簡單的例子,做個對比
tcharbuffer[max_path];
dworddwret;
// 獲取當前目錄
dwret = getcurrentdirectory(bufsize, buffer);
tchar*path =new
tchar[max_path];
zeromemory(path, max_path);
// path == "d:/project/test/mfc/mfc"
getcurrentdirectory(max_path, path);
// path == "d:/project/test/mfc/debug/mfc.exe"
getmodulefilename(null,path,max_path);
可以將第二個函式加以變化一下
cstring getmoudlepath(hmoudle hmodule)
tchar buf[max_path]=;
cstring strdir,strtemp;
getmoudlefilename(hmoudle,buf,max_path);
strtemp=buf;
strdir=strtemp.left(strtemp.reversefind('//')+1);
return strdir;
另外再提到兩個函式
createdirectory和removedirectory函式
windows api函式createdirectory建立目錄,當然目錄過多時也需要呼叫函式removedirectory來刪除不需要的目錄,然而函式removedirectory只能刪除空的目錄,也就是目錄下沒有檔案和子目錄才能刪除。
當前路徑獲取的問題
函式 dword getcurrentdirectory dword nbufferlength,size,in characters,of directory buffer lptstr lpbuffer pointer to buffer for current directory 獲得可執行檔...
C C 獲取當前路徑
獲取當前工作目錄是使用函式 getcwd。cwd指的是 current working directory 這樣就好記憶了。函式說明 函式原型 char getcwd char buffer,int len 引數 buffer是指將當前工作目錄的絕對路徑copy到buffer所指的記憶體空間,len...
C C 獲取當前路徑
獲取當前工作目錄是使用函式 getcwd。cwd指的是 current working directory 這樣就好記憶了。函式說明 函式原型 char getcwd char buffer,int len 引數 buffer是指將當前工作目錄的絕對路徑copy到buffer所指的記憶體空間,len...