精华内容
下载资源
问答
  • VC获取当前程序文件路径,文件名以及路径+文件名,经典实用做法。欢迎大家下载学习。
  • 获取当前/上一级路径 TCHAR exeFullPath[MAX_PATH]; //定义一个TCHAR类型的数组,数组名为exeFullPath,长度为MAX_PATH GetModuleFileName(NULL,exeFullPath,MAX_PATH); // 获取当前应用程序的路径...\\projects\\...
  • VC 拖动获取文件路径

    2011-11-25 21:25:17
    拖动文件 获取路径 VC MFC 希望对初学VC的朋友有所帮助
  • #include <iostream> #include <windows.h> #include <string> using namespace std; int main() { ... //得到当前工作路径 cout<<b...
    #include <iostream>
    #include <windows.h>
    #include <string>
    using namespace std;
    int main()
    {
    	char buf[1000];
    	int i=1000;
    	GetCurrentDirectory(1000,buf);  //得到当前工作路径
    	cout<<buf<<endl;
     
    	string a;
    	a.assign(buf);
    	cout<<a<<endl;
    	//这里加入的路径必须是正确的路径,如果加入错误的路径,如大小写
    	//和目录名不一样,还有空格,名字不相同等,都会导致SetCurentDirectory
    	//设置路径不成功,从而导致GetCurrentDirectory获取不到正确的路径,这样
    	//GetCurrentDirectory获取的路径就是当前路径或者是上一次SetCurrentDirectory
    	//设置成功的那个路径,GetCurrentDirectory获取一般是不会出错的。
    	
    	/**在这里添加路径的时候,每一次都用到两个\,这样做的原因是为了防止文件
    	的目录名中出现转义字符,比如如果目录名字是以t开头的,则\t意义
    	就是制表符,而不是目录名。并且惊奇的发现,在这里使用两个/可以达到相同
    	的效果,不知道是什么原因,很可能是因为在操作系统内部就是这样做的,因为
    	在cmd dos命令行下,路径都是以/分割的,而在文件目录名显示的时候则是以\分
    	割的,而且在dos命令行下切换目录的时候这两种也都可以!甚至是两者混写都可以.
    	为了规范都写成\\***/
     
    	//设置为当前工作路径为当时的上一级
    	//a.append("//..//");
    	//a=a+"..//";
    	a.append("\\..\\");
    	//随意设置路径,只要是正确的,否则会导致SetCurrentDirectory执行错误
    	//a.append("//..//..//Service_Windows//Servic_Windows");
    	//a.append("\\..\\Service_Windows\\Service_Windows");
    	a.append("\\..\\Service_Windows//Service_Windows");
     
    	int test = SetCurrentDirectory(a.c_str());  //设置当前路径值
    	if (test == 0 )
    	{
    		cout << "execute failed\n";
    	}
    	GetCurrentDirectory(1000,buf);
    	//这里用两个反斜杠是必须得,因为这不通过操作系统来进行目录切换,
    	//只是简单的字符串拼接
    	strcat(buf,"\\Srvice_Windows\\Srvice_Windows");
    	cout << buf << endl;
    	
    	a.assign(buf);
    	test = SetCurrentDirectory(a.c_str());
    	if (test == 0 )
    	{
    		cout << "execute failed\n";
    	}
    	GetCurrentDirectory(1000,buf);
    	cout<<buf<<endl;
     
    	return 0;
    }
    

    原文转载自:https://blog.csdn.net/gukesdo/article/details/6866741#

    展开全文
  • VC获取当前文件路径---比较

    千次阅读 2013-05-30 16:32:53
    方法一: void GetAppPath(wstring &sPath) { sPath.resize(MAX_PATH); ::GetModuleFileName(GetModuleHandle(NULL), (LPTSTR)sPath.c_str(), MAX_PATH); int index = sPath.find_last_of(L'\\');...

    方法一:

    void GetAppPath(wstring &sPath)
    {
    	sPath.resize(MAX_PATH);
    	::GetModuleFileName(GetModuleHandle(NULL), (LPTSTR)sPath.c_str(), MAX_PATH);
    	int index = sPath.find_last_of(L'\\');
    	if(index >= 0) sPath = sPath.substr(0, index);
    }

    方法二:

    CString GetCurrPath()
    {
    	char fullpath[256] = {0};
    	GetModuleFileName(NULL, fullpath, MAX_PATH);
    	CString cspath(fullpath);
    	int index = cspath.ReverseFind('\\');
    	return cspath.Left(index);
    }
    方法三:

    {
        char lpFileName[MAX_PATH];    
        GetModuleFileName(NULL, lpFileName, sizeof(lpFileName));
        char* p = strrchr(lpFileName, '\\'); 
        if( p )
            *p = 0;
    }
    


    展开全文
  • 1. 获取Debug或Release所在的路径 CString GetModuleDir() { HMODULE module = GetModuleHandle(0); char pFileName[MAX_PATH]; GetModuleFileName(module, pFileName, MAX_PATH); CString csFull...
    1. 获取Debug或Release所在的路径  
    CString GetModuleDir()   
    {   
     HMODULE module = GetModuleHandle(0);   
     char pFileName[MAX_PATH];   
     GetModuleFileName(module, pFileName, MAX_PATH);   
       
     CString csFullPath(pFileName);   
     int nPos = csFullPath.ReverseFind( _T('\\') );   
     if( nPos < 0 )   
      return CString("");   
     else   
      return csFullPath.Left( nPos );   
    }  
      
       
      
    2. 获取当前工作路径(dsp所在路径)  
      
    //获取工作路径  
    CString GetWorkDir()   
    {    
     char pFileName[MAX_PATH];   
     int nPos = GetCurrentDirectory( MAX_PATH, pFileName);   
       
     CString csFullPath(pFileName);    
     if( nPos < 0 )   
      return CString("");   
     else   
      return csFullPath;   
    }  

    路径分解函数:

        char a_sFileName[256];     
        GetModuleFileName(NULL,a_sFileName,256);   
        CString sPath;  
      
        CString sDrive;//磁盘名  
        CString sDir;//文件路径  
        CString sFileName;//取出文件路径后的文件名  
        CString sExt;//文件扩展名  
      
        char drive[_MAX_DRIVE];//磁盘名  
        char dir[_MAX_DIR];//路径名  
        char fname[_MAX_FNAME];//文件名  
        char ext[_MAX_EXT];//扩展名  
      
        _splitpath(a_sFileName, drive, dir, fname, ext );  
      
        sDrive.Format("%s",drive);  
        sDir.Format("%s",dir);  
        sFileName.Format("%s",fname);  
        sExt.Format("%s",ext);  
      
        sPath= sDrive + sDir + sFileName + a_sSuffix + sExt;  
    
        CString strText;
        TCHAR exepath[MAX_PATH]={0};
        ::GetModuleFileName(NULL,exepath,MAX_PATH);
        strText=exepath;
        strText=strText.Left(strText.ReverseFind(''''));
        strText += _T("");

    GetModuleFileName是一个API函数,通过这个函数,可以获得运行的当前程序的EXE文件所在的路径。直接将这几句代码,在MFC中封装成一个函数即可。

    GetModuleFileName第一个参数是示例句柄,设为NULL则表示当前执行的EXE的。第二个参数就是接受得到的可执行路径的字符串缓冲。第三个是缓冲的大小。大小就是声明的缓冲的大小,以TCHAR为单位。

    strText.Left()是CString提供的字符串截取函数,具体的可以查看MSDN或者本站其他相关文章。

    ReverseFind()是CString提供的字符串查找函数,具体的可以查看MSDN或者本站其他相关文章。

    转自:https://blog.csdn.net/xjujun/article/details/8054990

    展开全文
  • VC 获得当前工作路径的方法

    千次阅读 2015-05-21 21:50:40
    GetCurrentDirectory函数可以获取当前进程的工作路径,函数原型如下: DWORD GetCurrentDirectory(DWORD nBufferLength, LPTSTR lpBuffer); nBufferLength:路径长度,取值要比实际路径包含的字符串长度大(存放字符...

    GetCurrentDirectory函数可以获取当前进程的工作路径,函数原型如下:

    DWORD GetCurrentDirectory(DWORD nBufferLength, LPTSTR lpBuffer);
    nBufferLength:路径长度,取值要比实际路径包含的字符串长度大(存放字符串结束标志符'\0')。lpBuffer:路径字符串缓冲区。
    函数调用成功,返回写到缓冲区字符个数,字符串结符'\0'不计算在内。如果参数nBufferLength小于路径长度,函数返回存放路径
    需要字符串的长度,字符串结束符'\0'计算在内。假设当前MFC的工程工作路径为D:\GetCurrentDirectoryTest\DirectoryTest。
    char DirectoryBuffer[1024] = {'\0'};
    int Length1 = GetCurrentDirectory(1024, DirectoryBuffer);   //Length1 = 40
    int Length2 = GetCurrentDirectory(10, DirectoryBuffer);     //Length2 = 41
    考虑如下程序:
    char DirectoryBuffer[1024] = {'\0'};
    GetCurrentDirectory(1024, DirectoryBuffer);
    AfxMessageBox(DirectoryBuffer);
    运行结果如下:


    当调用如下程序Open对话框重新选择路径后,GetCurrentDirectory得到的是最新进程的路径,不再是当前VC工程所在的路径。

    CString NewPath;
    CFileDialog NewDlg(TRUE);   //TRUE为OPEN对话框,FALSE为SAVE AS对话框
    if(NewDlg.DoModal() == IDOK)
        NewPath= NewDlg.GetPathName();
    执行上述程序后,VC会自定弹出对话框,让用户选择某个目录下的文件,如下所示:


    假如此时选择C:\Windows\System32\calc.exe,点击Open按钮后,工作路径就会变为C:\Windows\System32,不再是之前的
    D:\GetCurrentDirectoryTest\DirectoryTest。运行如下程序:

    char DirectoryBuffer[1024] = {'\0'};
    CString NewPath;
    CFileDialog NewDlg(TRUE);   //TRUE为OPEN对话框,FALSE为SAVE AS对话框
    if(NewDlg.DoModal() == IDOK)
        NewPath= NewDlg.GetPathName();
    GetCurrentDirectory(1024, DirectoryBuffer);
    AfxMessageBox(DirectoryBuffer)
    结果如下:


    解决此问题有两种方法,方法一:每次在选择新路径前首先保存当前的工作路径,新路径选择完后,再调用
    SetCurrentDirectory
    函数,将工作路径重新设置为之前的路径。考虑如下程序:

    char DirectoryBuffer[1024] = {'\0'};
    GetCurrentDirectory(1024, DirectoryBuffer);   //保存当前工作路径
    CString NewPath;
    CFileDialog NewDlg(TRUE);
    if(NewDlg.DoModal() == IDOK)
        NewPath= NewDlg.GetPathName();
    SetCurrentDirectory(DirectoryBuffer);   //恢复当前工作路径
    AfxMessageBox(DirectoryBuffer);
    运行结果如下:


    第二种方法是使用GetModuleFileName函数,该函数原型如下:
    DWORD GetModuleFileName(HMODULE hModule, LPSTR lpFilename, DWORD nSize);
    hModule:装载一个程序实例的句柄,如果为NULL,返回该当前应用程序全路径。lpFileName:存放模块缓冲区指针。nSize:
    装载到缓冲区lpFileName的最大值。函数如果调用成功,返回写入缓冲区的字符数,不包括字符串结束符'\0',lpFilename中存放
    当前进程已加载模块的文件的完整路径。函数调用失败,返回0。如果所设置的nSize过小,返回所
    置缓冲区的大小,包含字符串
    结束标志符'\0'。运行如下程序:

    char DirectoryBuffer[1024] = {'\0'};
    CString NewPath;
    CFileDialog NewDlg(TRUE);
    if(NewDlg.DoModal() == IDOK)
        NewPath= NewDlg.GetPathName();
    //Length = 64,第三个参数如果改为10,函数将返回10,DirectoryBuffer中存放的是"D:\\GetCur"。
    int Length = GetModuleFileName(NULL, DirectoryBuffer, 1024);
    AfxMessageBox(DirectoryBuffer);
    Open对话框打开后,无论选择哪个目录下的文件,运行结果都是下面的情况:


    由此可见,DirectoryBuffer中存放的是可执行文件的绝对路径,采用CString类的函数去掉字符串"\\Debug\\DirectoryTest.exe",
    即可获得当前VC工程所在的路径字符串。

    展开全文
  • 一、 TCHAR szFilePath[MAX_PATH + 1]; GetModuleFileName(NULL, ...//删除文件名,只获得路径 CString str_url = szFilePath; AfxMessageBox(str_url); 二、 String path=AfxGetApp()->m_pszHelpFilePath; S
  • DLL工程获取DLL当前路径获取DLL路径然后和配置文件拼接,读取配置文件
  • VC获取文件路径

    千次阅读 2011-06-16 11:13:00
    VC中使用GetModuleFileName获取应用程序路径 //与API函数GetModuleFileName获取应用程序目录有何不一样? --------------------------------------------------------------------------------采用.//也能获得应用...
  • VC 获得当前应用程序所在路径(exe文件路径)   TCHAR szFilePath[MAX_PATH + 1] = { 0 };  GetModuleFileName(NULL, szFilePath, MAX_PATH);  (_tcsrchr(szFilePath, _T('\\')))[1] = 0; //删除...
  • VC获取当前路径

    千次阅读 2015-04-05 21:09:53
    本文简单介绍下获取程序当前路径。 新建对话框应用程序,并且添加获取当前路径按钮 void CGetCurrentPathDlg::OnButton1() { // TODO: Add your control notification handler code here CString ...
  • 该资源为VC++获取当前路径的几个函数介绍以及对比,非常有用
  • 获取当前进程已加载模块的文件的完整路径 #define _AFXDLL #include <afx.h> CString GetHomeFolder() { TCHAR strHomeFolderBuf[MAX_PATH+1]; GetModuleFileName(NULL,strHomeFolderBuf,MAX_PATH); /...
  • 二个函数NoteTxtAddLog(打印文件),GetCurDir(获取当前目录) 首先使用的函数:NoteTxtAddLog(GetCurDir() +“日志.txt”,strFormat,strFormat.GetLength(),TRUE,FALSE); 解释函数: NoteTxtAddLog(CString ...
  • 1.方法1  charpBuf[MAX_PATH]; //存放路径的变量  GetCurrentDirectory(MAX_PATH,pBuf); //获取程序的当前目录  strcat(pBuf,"\\");  strcat(pBuf,AfxGetApp
  •  今天搞清楚了如果使用C++获取当前路径,并且已获取当前路径为基础,测试代码如下,如果有注释错误还请看到的高手指正,呵呵~~  [cpp] view plaincopy #include  #include  #include...
  • VC获取文件的相对路径与绝对路径

    千次阅读 2014-05-27 14:19:32
    如果当前打开的文件中要寻找同级的目录文件就要用到 .\或者 ./ VC编译器都可以识别。例如#define ".\XX\XX\xx.h" 如果当前打开的文件中要寻找在上级的目录文件就要用到 ..\ 或者 ../ VC编译器都...
  • vc6.0 c++获取当前文件夹路径

    千次阅读 2013-02-01 11:39:11
    TCHAR tchBuffer[MAX_PATH ]; LPTSTR lpszCurDir; lpszCurDir = tchBuffer;...下面的供测试看一下取到的路径是否正确: MessageBox(lpszCurDir); 如果不是MFC程序 MessageBox(NULL, lpszCurDi
  • 1.使用APi函数GetModuleFileName char path[MAX_PATH]; GetModuleFileName(NULL, path, MAX_PATH); //获取到完整路径如:E:\Tools\qq.exe *strrchr(path,'\\') = '\0'; 
  • //获取路径 std::string GetApplicationDir() { HMODULE hModule = GetModuleHandleW(NULL); WCHAR wpath[MAX_PATH]; GetModuleFileNameW(hModule, wpath, MAX_PATH); std::wstring wide(wp...
  • 1.方法1  char pBuf[MAX_PATH]; //存放路径的变量  GetCurrentDirectory(MAX_PATH,pBuf); //获取程序的当前目录 ...注意当前目录这东西有点坑爹,本来确实是可执行文件的所在目录,但是当用文件对话框成
  • VC MFC文件读写操作.rar

    2019-07-10 17:25:31
     //转换项目标志府列表为一个系统文件路径  SHGetPathFromIDList(lpitemidlist,path);  delete lpbi;  //获取控件指针  CWnd* pWnd=(CWnd*)GetDlgItem(IDC_dir);  //设置其标题为当前路径信息  pWnd->...
  • CString CPrintImage::GetFileTitleFromFileName(CString FileName,CString& ExtendName) //获取文件名和扩展名 { int Where; Where=FileName.ReverseFind('//'); if(Where==-1) { Where=FileNa

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,242
精华内容 8,496
关键字:

vc获取当前文件路径