SetCurrentDirectory(),GetCurrentDirectory(),GetModuleFileName()的區別

用於設置程序的目錄地址,但EXE文件不會放在這個地方

 BOOL SetCurrentDirectory(
  LPCTSTR
lpPathName   // 程序的目錄設置到地址
);

得到SetCurrentDirectory()設置的位置,如果沒有設置則得到的是當前工程的位置

DWORD GetCurrentDirectory(
  DWORD
nBufferLength// 緩衝區大小
  LPTSTR lpBuffer              // 存放地址的緩衝區

);

得到EXE的位置

DWORD GetModuleFileName(
  HMODULE
hModule,    // 所要得到的EXE的應用程序句柄

  LPTSTR lpFilename,     // 存放地址的緩衝區
  DWORD nSize             // 緩衝區大小
);

 

注:"..//filename.*"這得到的是工程目錄

例:

 

當前工程建在:"D:/", 工程名爲:"Test"

 

char *lpPath= new char [MAX_PATH];

 

strcpy(lpPath,"..//filename.*");                   //最終的目錄爲"D:/filename.*"

 

GetModuleFileName(NULL, p, MAX_PATH);  //得到的是"D:/Test/Debug/Test.exe"

 

GetCurrentDirectory(MAX_PATH, lpPath);   //得到的是"D:/Test"

 

SetCurrentDirectory("C://");                       //把目錄設到"C:/"

 

GetCurrentDirectory(MAX_PATH, lpPath);   //得到的是"C:/Test"

GetModuleFileName(NULL, p, MAX_PATH); //得到的是"D:/Test/Debug/Test.exe"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章