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"

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