GetModuleFileName函数当前运行exe或dll的路径

来源:互联网 发布:ros绑定mac 编辑:程序博客网 时间:2024/05/17 06:40
<div style="text-align: justify;"><span style="font-family:SimSun;font-size:18px;">    获取当前运行exe或是dll的路径。假设执行程序1.exe的绝对路径为C:\Program Files\Dll\1.exe,那么使用GetModuleFileName后szFileName数组中存储的值就是C:\Program Files\Dll\1.exe。以下代码用来获取当前exe或是dll的相对路径,即获取路径C:\Program Files\Dll。同时我们可以进行延伸拓展,获取和相应exe或dll相关的其它路径。</span></div>
<span style="font-size:18px;">相关代码:</span>
<span style="font-size:18px;">char szFileName[MAX_PATH] = {0};GetModuleFileName(NULL, szFileName, sizeof(szFileName));ParamAnalyse(szFileName, ¶m);for (i = 0; i < param.num - 1; i++){if (0 == i){strcpy_s(m_szInstallPath, param.buf[i]);}else{strcat_s(m_szInstallPath, sizeof(m_szInstallPath), param.buf[i]);}if (i < param.num - 2){strcat_s(m_szInstallPath, sizeof(m_szInstallPath), "\\");}}//测试路径的有效性if (!PathFileExists(m_szInstallPath)){return 0;}return 1;}</span>


其中:

<span style="font-size:18px;">long ParamAnalyse(char* actMask, PARAM* pParam){long i, j(0), k(0), len;memset(pParam, 0, sizeof(PARAM));if (len = strlen(actMask)){for (i = 0; i < len; i++){if (actMask[i] == _T('\\') || actMask[i] == _T('/')){j++;k = 0;}else{pParam->buf[j][k] = actMask[i];k++;}}pParam->num = ++j;}return 1;}</span>

<span style="font-size:18px;">struct PARAM {char buf[SUBDIR_NUM][MAX_PATH];long num;};</span>


0 0
原创粉丝点击