獲取當前路徑的問題

2021-09-30 16:13:31 字數 2061 閱讀 5603

關於獲取當前路徑的問題

在開發軟體裡,常常碰到要讀取當前目錄下的配置引數檔案,或者開啟當前目錄下別的程式來執行,那麼就需要獲取當前程序的目錄位置,

主要有兩個函式來實現

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...