您的位置:首页 > 编程语言 > C语言/C++

获取EXE及Dll文件路径信息

2015-05-15 23:03 1191 查看
//-----------------------------------------------------------------------------
// 获取EXE的路径信息
//-----------------------------------------------------------------------------
//
// GetModuleFileName,第一个参数传NULL,不管是在EXE本身调用还是在EXE
// 调用的Dll中调用,获取的都是EXE文件的全路径
//

// 获取EXE文件的全路径(CString)
CString GetExeFileFullPath()
{
TCHAR szExeFullPath[MAX_PATH + 1] = { 0 };
::GetModuleFileName(NULL, szExeFullPath, MAX_PATH);
return szExeFullPath;
}

// 获取EXE文件所在文件夹的全路径(CString)
// 例如:"D:\\WangYao\\"
CString GetExeDirFullPath()
{
TCHAR szExeFullPath[MAX_PATH + 1] = { 0 };
::GetModuleFileName(NULL, szExeFullPath, MAX_PATH);
(_tcsrchr(szExeFullPath, TEXT('\\')))[1] = 0;
return szExeFullPath;
}

// 获取EXE文件的全路径(string)
string GetExeFileFullPathA()
{
char szExeFullPath[MAX_PATH + 1] = { 0 };
::GetModuleFileNameA(NULL, szExeFullPath, MAX_PATH);
return szExeFullPath;
}

// 获取EXE文件所在文件夹的全路径(string)
// 例如:"D:\\WangYao\\"
string GetExeDirFullPathA()
{
char szExeFullPath[MAX_PATH + 1] = { 0 };
::GetModuleFileNameA(NULL, szExeFullPath, MAX_PATH);
(strrchr(szExeFullPath, '\\'))[1] = 0;
return szExeFullPath;
}

// 获取EXE文件的全路径(wstring)
wstring GetExeFileFullPathW()
{
wchar_t szExeFullPath[MAX_PATH + 1] = { 0 };
::GetModuleFileNameW(NULL, szExeFullPath, MAX_PATH);
return szExeFullPath;
}

// 获取EXE文件所在文件夹的全路径(wstring)
// 例如:L"D:\\WangYao\\"
wstring GetExeDirFullPathW()
{
wchar_t szExeFullPath[MAX_PATH + 1] = { 0 };
::GetModuleFileNameW(NULL, szExeFullPath, MAX_PATH);
(wcsrchr(szExeFullPath, L'\\'))[1] = 0;
return szExeFullPath;
}

//-----------------------------------------------------------------------------
// 在Dll中获取Dll本身的路径信息
//-----------------------------------------------------------------------------
//
// GetModuleFileName的第一个参数传入Dll本身的句柄即可
// 那怎样获取Dll本身的句柄呢?
// 1. 对于MFC Dll,使用theApp.m_hInstance
// 2. 对于非MFC Dll,则Dll入口函数的第一个参数即为Dll的句柄
//    BOOL WINAPI DllMain(
//        HINSTANCE hinstDLL,  // handle to DLL module
//        DWORD fdwReason,     // reason for calling function
//        LPVOID lpReserved)
//
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ windows编程