1. 程式人生 > >MFC 獲得當前程式所在目錄

MFC 獲得當前程式所在目錄

原文網址:http://yeahyuanqing.blog.163.com/blog/static/118025091201149480818/

MFC獲得當前應用程式目錄的GetCurrentDirectory()和GetModuleFileName()函式,GetCurrentDirectory只是返回當前程序的當前目錄,而並不是程序的映象檔案(.exe)所在的目錄,GetCurrentDirectory()適用於XP等系統,,在WinCE上不能使用,GetModuleFileName()適用於WinCE2.0以後. 
函式說明:

DWORD WINAPI GetModuleFileName(
HMODULE hModule,
LPTSTR lpFileName,
DWORD nSize
);
函式功能
  此函式得到當前應用程式的執行目錄,還包括應用程式的檔名。 
引數說明
  hModule:要獲取檔名的模組名柄,可以是運用LoadLiberary得到的控制代碼,null表示當前模組 
  lpFileName:輸出引數,存放取得的檔名 
  nSize:lpFileName引數的長度

DWORD GetCurrentDirectory(
   DWORD nBufferLength, // size of directory buffer
   LPTSTR lpBuffer // directory buffer 
   ); 
函式功能
 找到當前程序的當前目錄 
引數說明
  nBufferLength:lpBuffer緩衝區的長度 
  lpBuffer:指定一個預定義字串,用於裝載當前目錄 
返回值 
 呼叫成功 返回裝載到lpBuffer的位元組數。

使用方法:
//下面的一段程式碼主要是獲得當前程式的執行目錄(.exe)所在的目錄
{
    CString path; 
    GetModuleFileName(NULL,path.GetBufferSetLength(MAX_PATH+1),MAX_PATH); 
    path.ReleaseBuffer(); 
    int pos = path.ReverseFind('\\'); 
    path = path.Left(pos); 
}

CString   CXXXXXXApp::GetCurDir()   
  {   
    TCHAR   sDrive[_MAX_DRIVE];   
    TCHAR   sDir[_MAX_DIR];   
    TCHAR   sFilename[_MAX_FNAME],Filename[_MAX_FNAME];   
    TCHAR   sExt[_MAX_EXT];   
    GetModuleFileName(AfxGetInstanceHandle(),   Filename,   _MAX_PATH);   
    _tsplitpath(Filename,   sDrive,   sDir,   sFilename,   sExt);   


    CString   homeDir(CString(sDrive)   +   CString(sDir));   
    int   nLen   =   homeDir.GetLength();   
    if(homeDir.GetAt(nLen-1)   !=   _T('//'))   
      homeDir   +=   _T('//');   
    return   homeDir;   
  }   

GetModuleFileName函式
 

WINAPI DWORD GetModuleFileName( 
HMODULE hModule,
LPWSTR lpFilename, 
DWORD nSize
);

    GetBuffer和ReleaseBuffer是一套需要配合使用的函式, 與GetBufferSetLength相比, 優點是如果分配的空間大於實際儲存的字串(0結尾),ReleaseBuffer會把多餘申請的空間釋放, 歸還給系統。

附加示例:

 CString m_TempFile;
 //獲取應用程式的全路徑 
 char exeFullPath[MAX_PATH];  
 GetModuleFileName(NULL, (LPWCH)exeFullPath, MAX_PATH);  
 //將其格式化為字串  
 m_TempFile.Format(L"%s", exeFullPath); 
 //去掉應用程式的全名(15為應用程式檔案全名的長度)  
 exeFullPath[m_TempFile.GetLength()-15]='\0';  
 //得到應用程式所在路徑  
 m_TempFile.Format(L"%s", exeFullPath); 
 //得到程式中檔案的全路徑  
 m_TempFile+="xxx.exe";

相關推薦

MFC 獲得當前程式所在目錄

原文網址:http://yeahyuanqing.blog.163.com/blog/static/118025091201149480818/ MFC獲得當前應用程式目錄的GetCurrentDirectory()和GetModuleFileName()函式,GetCurrentDirectory只是返回

java中獲得當前程式的工作目錄

轉載 http://blog.csdn.net/kongqz/article/details/3987198 java的System.getProperty()方法可以獲取的值。 java.version Java 執行時環境版本 java.ven

python 獲得當前程式的絕對路徑

. 以前的方法如果是要獲得程式執行的當前目錄所在位置,那麼可以使用os模組的os.getcwd()函式。如果是要獲得當前執行的指令碼的所在目錄位置,那麼需要使用sys模組的sys.path[0]變數或者sys.argv[0]來獲得。實際上sys.path是Python會去尋找

VS2010/MFC 獲取當前程式路徑 CString型別

第一種方案:TCHAR szFilePath[MAX_PATH + 1]={0};GetModuleFileName(NULL, szFilePath, MAX_PATH);                            // C:\**\**\Test.exe(_

MFC函式GetModuleFileName():獲得應用程式目錄絕對路徑

GetModuleFileName()得到模組的完整路徑名,例如,你載入c:\windows\system32\a.dll,得到模組控制代碼h,則你可以用GetModuleFileName()得到h模組的完整路徑名。 注:直接用LoadLibrary()或AfxLoadL

C++中用 GetModuleFileName()函式 獲得程式當前的執行目錄

//獲取當前程式所在路徑。 //蔡軍生 2007/12/05 QQ:9073204 深圳 void TestGetExePath(void) { // const int nBufSize = 512; TCHAR chBuf[nBufSi

C/MFC如何獲得應用程式當前路徑(整理)

第一種方法: DWORD GetCurrentDirectory(   DWORD nBufferLength,  // size, in characters, of directory buffer   LPTSTR lpBuffer       // pointer

獲得當前應用程式目錄的GetCurrentDirectory()和GetModuleFileName()函式 .

bool CtestDlg::GetXMLMessage(void) { char cModulePath[MAX_PATH] = {0}; ::GetModuleFileName(NULL, cModulePath, MAX_PATH);

Python中獲得當前目錄和上級目錄

http 路徑 返回 path 目錄 net blog sdn style [轉]原文地址:http://blog.csdn.net/liuweiyuxiang/article/details/71154346 獲取當前文件的路徑: from os import path

java獲得當前(或輸入需年份)年、月、周的日曆

package com.dmap.plantimer.controller.api; import java.util.*; import java.text.SimpleDateFormat; public class CalendarAoo { public static void

Mac下獲取當前程式執行的目錄

NSString* getExePath() { char buf[0] = {0}; uint32_t size = 0; _NSGetExecutablePath(buf,&size); char* path = (char*)malloc(si

C++:寫一小段獲得當前應用程式所在路徑的程式

1、獲得當前執行路徑(當前檔案所在目錄) char filename[_MAX_PATH]; int num; if (GetModuleFileName(NULL, filename, _MAX_PATH) != 0) {//換成_getcwd(buffer

linux 下獲得當前目錄,上級目錄,資料夾名

$PWD  /pwd   當前目錄  dname= $(dirname "$PWD")  上級目錄 basename '$PWD'  當前資料夾名 !=====以下轉載  刪除包含特定字元的行: g/pattern/d    刪除不包含指定字元的行: v

symlink readlink link建立、讀取,使用readlink獲取當前程式目錄

symlink 函式和 readlink 函式主要是針對符號連結檔案的操作。symlink 函式用來建立符號連結檔案,和 link 檔案是對應的。readlink 函式用來讀取連結檔案本身的內容(也就是符號連結指向的檔案的檔名)。 標頭檔案: #include <un

使用database control 配置資料庫時,要求在當前oracle主目錄中配置監聽程式,必須執行Netca以配置監聽程式,然後才能繼續。或者可以選擇繼續,但是不要使用database cont

http://liu2009e.blog.163.com/blog/static/11330865820110211558689/ 在建立資料庫之前,先需要配置。 安裝完Oracle後,需要配置一系列的引數才可以執行: 1、配置NetCA cmd--NetCA(cmd

微信小程式swiper如何獲得當前頁面的index

想要實現的效果:(滑動時顯示當前頁面index)看小程式的官方文件程式碼:index.wxml <swiper class='sw-tu' circular="true" current="0" bindchange='onSlideChangeEnd'>

在Linux下如何在程式獲得當前呼叫棧資訊

主要使用backtrace和backtrace_symbols兩個函式。 #include#includeusing namespace std; //返回當前堆疊呼叫列表 string print_trace(int fd, int filter_first_lines

獲得當前日期所屬的本周第一天與最後一天

date 獲得 mkt 日期 時間 -m ech 當前 time echo ‘<br>本周起始時間:<br>‘;echo date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")

在java中怎樣獲得當前日期時間

follow 樣本 cda set mon do-while 如果 xtend div Calendar cal = Calendar.getInstance(); java.text.SimpleDateFormat sdf = new SimpleDateF

Android----獲得當前應用包名、當前activity的名字、推斷是否是系統桌面、service類

owin agen gac arr ddc add gets small cli 1、獲得當前應用包名 public static String getRunningActivityName(Context context) { ActivityManager acti