1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | int pathGetContainer(const char *path, string &dir) { const char *p; for (p = path + strlen(path); p >= path; p--) { if (*p == '/' || *p == '\\') break; } dir = string(path).substr(0, p - path + 1); return 1; } ... char curPath[1024]; GetModuleFileNameA(AfxGetApp()->m_hInstance, curPath, sizeof(curPath)); string curDir; pathGetContainer(curPath, curDir); SetCurrentDirectoryA(curDir.c_str()); ... |
注:此方法对于Windows shell编程不适用,因为是运行在资源管理器进程里的插件,返回的都是explorer.exe所在路径,此种情况下,一般是通过注册表里写死的配置获取进程路径。