精华内容
下载资源
问答
  • setcurrentdirectory
    2013-04-12 18:34:21
    http://baike.baidu.com/view/1295803.htm
    更多相关内容
  • 第二个参数 返回值 代码实现 SetCurrentDirectory 函数功能 函数声明 第一个参数: 返回值: 注意: 代码实现 `CreateDirectory`和`SetCurrentDirectory`相结合使用(打了一套组合拳):实现代码下: CreateDirectory...

    CreateDirectory

    函数功能

    创建一个新目录

    函数声明

    BOOL CreateDirectory(
    
    LPCTSTR lpPathName,
    
    LPSECURITY_ATTRIBUTES lpSecurityAttributes
    
    );
    

    第一个参数(第一种情况绝对路径)

    lpNewDirectory String,新目录的名字。举例:LPCSTR str = "c:\\TEST"

    第一个参数(第二种情况当前目录)

    lpNewDirectory String,新目录的名字。举例:LPCSTR str = "TEST"

    第二个参数

    lpSecurityAttributes SECURITY_ATTRIBUTES,这个结构定义了目录的安全特性——如果操作系统支持的话,安全属性,一般设置为NULL即可

    返回值

    Long,如果正确创建,返回值为1,如果没有正常创建文件夹,则返回0。会设置GetLastError

    注意:

    特别的:该函数每次调用时都只能创建一级文件夹,即文件夹中不能再包含子文件夹

    当希望创建含有子文件夹的文件夹时,可以先使用该函数创建一级文件夹,然后再使用该函数在一级文件夹下创建子文件夹。如:

    希望创建:d:\\TEST\\temp

    则:

     	LPCSTR str = "c:\\TEST";
        CreateDirectory(str, NULL);
        LPCSTR std = "c:\\TEST\\temp";
        CreateDirectory(std, NULL);
    

    代码实现

    绝对路径

     LPTSTR szDirPath = LPTSTR("c:\\dog");
        if (!CreateDirectory(szDirPath, NULL)) {
            LPCSTR a = "创建失败";
            LPCSTR  b = "再接再厉";
            MessageBox(NULL,a,b,MB_OK);
            return 0;
       }
        LPCSTR a = "创建成功";
        LPCSTR  b = "厉害";
        MessageBox(NULL, a, b, MB_OK);
    
        LPCSTR str = "c:\\TEST";
        CreateDirectory(str, NULL);
        LPCSTR std = "c:\\TEST\\temp";
        CreateDirectory(std, NULL);
        
    

    当前目录

      LPCSTR str1 = "TEST";
        CreateDirectory(str1, NULL);
        if (!CreateDirectory(szDirPath, NULL)) {
            LPCSTR a = "创建失败";
            LPCSTR  b = "再接再厉";
            MessageBox(NULL, a, b, MB_OK);
            return 0;
        }
        LPCSTR a = "在当前目录创建成功";
        LPCSTR  b = "厉害";
        MessageBox(NULL, a, b, MB_OK);
    
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    GetCurrentDirectory

    函数功能

    在一个缓冲区中装载当前目录

    函数声明

    因为此时我是用的是多字节字符集,所以 GetCurrentDirectory自动转变为 GetCurrentDirectoryA

    GetCurrentDirectoryA(
        _In_ DWORD nBufferLength,
        _Out_writes_to_opt_(nBufferLength,return + 1) LPSTR lpBuffer
        );
    

    第一个参数

    nBufferLength LonglpBuffer缓冲区的长度

    第二个参数

    lpBuffer String,指定一个预定义字串,用于装载当前目录

    返回值

    Long,装载到lpBuffer的字节数。如nBufferLength的长度不够,不足以容纳目录,则返回值是必要的缓冲区长度(要求至少这个长度),其中包括空中止字符。零表示失败。会设置GetLastError

    代码实现

      TCHAR szCurrentDirectory[MAX_PATH];
        DWORD  dwCurDirPathlen;
        dwCurDirPathlen=GetCurrentDirectory(MAX_PATH, szCurrentDirectory);
        printf("%d", dwCurDirPathlen);
        if (dwCurDirPathlen == 0) {
            LPCSTR a = "获取当前目录失败";
            LPCSTR  b = "再接再厉";
            MessageBox(NULL, a, b, MB_OK);
            return 0;
        }
        LPCSTR a = "获取当前目录成功";
        LPCSTR  b = "厉害";
        MessageBox(NULL, szCurrentDirectory, b, MB_OK);
    
    
    

    在这里插入图片描述

    SetCurrentDirectory

    函数功能

    在开发软件里,常常碰到要读取当前目录下的配置参数文件,或者打开当前目录下别的程序来运行,那么就需要获取当前进程的目录位置,这就需要使用函数GetCurrentDirectory获取当前进程所有在的目录。同时也可以使用setcurrentdirectory函数来改变进程的当前目录。

    函数声明

    SetCurrentDirectoryA(
        _In_ LPCSTR lpPathName
        );
    

    第一个参数:

    LPCTSTR lpPathName程序的目录设置到地址

    返回值:

    此函数的返回值类型为Long,非零表示成功,零表示失败。会设置GetLastError

    注意:

    应用程序终止时,工作目录被还原为其原始位置(从其开始进程的目录)。

    允许 path 参数指定相对或绝对路径信息。 相对路径信息被解释为相对于当前工作目录。 若要获取当前工作目录,请参见 GetCurrentDirectory

    尾随空格从 path 参数的结尾。CONFIG 目录中的已取消。

    path 参数不区分大小写。

    如果您要将目录设置为装有可移动媒体的驱动器(例如对于软盘驱动器,为“A:”,对于 CD-ROM 驱动器,为“E:”),则可以通过使用 IsReady 属性确定该驱动器是否已就绪。

    代码实现

        LPCSTR a = "c:\\";
        if (!SetCurrentDirectory(a)) {
            LPCSTR a = "设置当前目录失败";
            LPCSTR  b = "再接再厉";
            MessageBox(NULL, a, b, MB_OK);
           }
        LPCSTR a1 = "设置当前目录成功";
        LPCSTR  b = "厉害";
        MessageBox(NULL, a1, b, MB_OK);
    
    

    在这里插入图片描述

    CreateDirectorySetCurrentDirectory相结合使用(打了一套组合拳):实现代码下:

      LPCSTR CurrentDirectory = "c:\\";
        if (!SetCurrentDirectory(CurrentDirectory)) {
            LPCSTR a = "设置当前目录失败";
            LPCSTR  b = "再接再厉";
            MessageBox(NULL, a, b, MB_OK);
           }
        LPCSTR CurrentDirectory1 = "设置当前目录成功";
        LPCSTR  CurrentDirectoryTable = "厉害";
        MessageBox(NULL, CurrentDirectory1, CurrentDirectoryTable, MB_OK);
    
    
    
        LPCSTR str1 = "TEST";
        if (!CreateDirectory(str1, NULL)) {
            LPCSTR a = "创建失败";
            LPCSTR  b = "再接再厉";
            MessageBox(NULL, a, b, MB_OK);
            return 0;
        }
        LPCSTR createDirectory = "在当前目录创建成功";
        LPCSTR  b = "厉害";
        MessageBox(NULL, createDirectory, b, MB_OK);
    

    在这里插入图片描述
    备注:
    2021年坚持学写博客第10天(学习两个windows API) 寻梦SS

    明日目标:
    windows核心编程API函数

    展开全文
  • 本质原因是::SetCurrentDirectory的路径是有问题的; 采用如下的方法:分解路径,在设置当前路径,才可以;  strConfigFile.assign(szModuleFileName); strConfigFile = strConfigFile.substr(0, ...

    1.程序设置成开机启动,通过注册表启动,导致程序崩溃;
    分析是日志这块出问题了:
    分析:是log4cppLIB库中,FileAppender 打开相对路径的日志文件,失败导致的。写文件的时候程序崩溃的问题;

    原因:

       std::string strConfigFile;
        std::string strLogPath;
        TCHAR szModuleFileName[BUFSIZE] = { 0 };
        TCHAR szCurrentDir[BUFSIZE] = { 0 };


        ::GetModuleFileName(NULL, szModuleFileName, 1024);
        ::PathRemoveExtension(szModuleFileName); // 
        ::SetCurrentDirectory(szModuleFileName);

        ::GetCurrentDirectory(BUFSIZE, szCurrentDir);
    获取的GetCurrentDirectory路径是:C:\Windows\System32 路径,不是程序的路径导致的;
    本质原因是::SetCurrentDirectory的路径是有问题的;

    采用如下的方法:分解路径,在设置当前路径,才可以;    
    strConfigFile.assign(szModuleFileName);
    strConfigFile = strConfigFile.substr(0, strConfigFile.find_last_of('\\'));

     


    展开全文
  • GetCurrentDirectory函数 SetCurrentDirectory函数 原文链接:https://blog.csdn.net/foreverhuylee/article/details/22082311 SetCurrentDirectory: 切换当前进程的当前工作目录。 什么情形下会有这种进程的切换...

    GetCurrentDirectory函数 SetCurrentDirectory函数
    原文链接:https://blog.csdn.net/foreverhuylee/article/details/22082311

    SetCurrentDirectory: 切换当前进程的当前工作目录。
    什么情形下会有这种进程的切换?

    情形1 解决使用CFileDialog造成的访问相对路径文件出错
    现象:程序中使用CFileDialog选择一个文件后,无法访问相对路径下的文件,Debug没有出错,EXE启动出错!
    原因:CFileDialog通过DoModal() == IDOK后,会造成当前程序的路径的改变,所以无法访问。
    解决:在调用CFileDialog DoModal前先使用GetCurrentDirectory()保存当前路径,调用DoModal()后使用SetCurrentDirectory()重新设定当前目录即可。
    情形2 LoadLibrary失败。
    http://blog.csdn.net/woyaowenzi/article/details/4332187
    情形3 LoadLibrary加载动态库失败的解决办法.
    方式一 采用LoadLibraryEx
    若DLL不在调用方的同一目录下,可以用LoadLibrary(L"DLL绝对路径")加载。
    但若调用的DLL内部又调用另外一个DLL,此时调用仍会失败。解决办法是用LoadLibraryEx:

    LoadLibraryEx("DLL绝对路径", NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
    

    通过指定LOAD_WITH_ALTERED_SEARCH_PATH,让系统DLL搜索顺序从DLL所在目录开始。
    方式二 采用SetCurrentDir
    跨目录调用dll,你应该这样
    1 用GetCurrentDir保存当前的工作目录
    2 用SetCurrentDir将当前的工作目录,设置为你的DLL所在的路径,需要使用绝对路径
    3 用LoadLibrary你的DLL
    4 使用SetCurrentDir恢复到原来的工作路径

    	 TCHAR chCurDir[MAX_PATH] = {0};
     	 GetCurrentDirectory(MAX_PATH, chCurDir);
         SetCurrentDirectory(_T("E:\\test\\"));
         m_hDLL = LoadLibrary(_T("MyTest.dll"));
         SetCurrentDirectory(chCurDir);
    

    展开全文
  • SetCurrentDirectory(chCurDir);    总结:dll的加载顺序: (1)EXE所在目录; (2)当前目录GetCurrentDirectory(); (3)系统目录GetSystemDirectory(); (4)WINDOWS目录...
  • #include "stdafx.h" #include #include #include int main() { TCHAR TPath[MAX_PATH]; DWORD dwRet; dwRet = GetModuleFileName(NULL, TPath, MAX_PATH);... SetCurrentDirectory(A2W(strPath.c_str())); }
  • SetCurrentDirectory的用法

    万次阅读 2016-06-12 14:58:32
    SetCurrentDirectory切换当前进程的当前工作目录。 设置当前路径,然后就可以以相对路径访问一些你程序相关的文件,不需要绝对路径 code: TCHAR chCurDir[MAX_PATH] = {0}; GetCurrentDirectory(MAX_PATH, ...
  • BOOL SetCurrentDirectory(  LPCTSTR lpPathName ); 函数是设置当前路径,函数的返回值如果是0,表示设置失败,如果不是0,表示设置成功; GetModuleFileName函数原型 DWORD GetModuleFileName( ...
  • FTP站点目录是C:\\Data,...使用CreateDirectory、GetCurrentDirectory、SetCurrentDirectory函数就可以很好的实现。一下省略掉FTP其它的一些连接操作: 方法一: CString strFtpPath,strUP; pFtpConnection->GetC
  • 3. setcurrentdirectory, 修改程序的工作目录。  三种方法各显神通地解决了这个问题,但解决的方法各有不同,下面说说各自的特点和注意事项。 第一种方法,个人首推的一种方法,特点是可以不需要调用额外的...
  • SetCurrentDirectory()切换当前进程的当前工作目录。 头文件:#include<Windows.h> 函数原型: DWORDGetCurrentDirectory( DWORDnBufferLength, // size of directory buffer 缓冲区的长度 LPTSTRlpBuffer ...
  • 在开发软件里,常常碰到要读取当前目录下的配置参数文件,或者打开当前目录下别的...同时也可以使用SetCurrentDirectory函数来改变进程的当前目录。 函数GetCurrentDirectory和SetCurrentDirectory声明如下: ...
  • BOOL SetCurrentDirectory( LPCTSTR lpPathName // new directory name  ); 举例说明:   char szDir1[MAX_PATH] = { 0 };   DWORD dwLen1 = GetCurrentDirectoryA (MAX_PATH, szDir1);  WCHAR *pDir2 = ...
  • 在开发软件里,常常碰到要读取当前目录下的配置参数文件,或者打开当前目录下别的程序来运行,那么就需要获取当前进程的目录位置,这就需要使用函数...同时也可以使用SetCurrentDirectory函数来改变进程的
  • GetCurrentDirectory,SetCurrentDirectory

    千次阅读 2015-07-09 18:40:53
    在开发软件里,常常碰到要读取当前目录下的配置参数文件,或者打开当前目录下别的程序来运行...同时也可以使用SetCurrentDirectory函数来改变进程的当前目录。 TCHAR szExePath[MAX_PATH + 1] = { 0 }; GetCurrentDire
  • BOOL SetCurrentDirectory(  LPCTSTR lpPathName // 程序的目录设置到地址 ); DWORD GetCurrentDirectory(  DWORD nBufferLength, // 缓冲区大小  LPTSTR lpBuffer // 存放地址的缓冲区 ); ...
  • 作者答疑 1.SetCurrentDirectoryA函数 BOOL SetCurrentDirectory([in] LPCTSTR lpPathName); 设置当前应用程序新当前目录的路径。此参数可以指定相对路径或完整路径。无论哪种情况,都会计算指定目录的完整路径并将...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,703
精华内容 1,881
关键字:

setcurrentdirectory

友情链接: Accountant.rar