Unicode字符集下代码
在Unicode字符集下,以下代码可用,代码来自网络,修改后增加了个测试函数。在此对代码贡献者表示感谢!?
HMODULE GetSelfModuleHandle()
{
MEMORY_BASIC_INFORMATION mbi;
return ((::VirtualQuery(GetSelfModuleHandle, &mbi, sizeof(mbi)) != 0) ? (HMODULE)mbi.AllocationBase : NULL);
}
void TCHAR2Char(const TCHAR* tchar, char* _char)
{
int iLength;
//获取字节长度
iLength = WideCharToMultiByte(CP_ACP, 0, LPCWSTR(tchar), -1, NULL, 0, NULL, NULL);
//将tchar值赋给_char
WideCharToMultiByte(CP_ACP, 0, LPCWSTR(tchar), -1, _char, iLength, NULL, NULL);
}
string GetInstanceFolderPath()
{
string exePath = "";
TCHAR tcFullPath[MAX_PATH];
char* pChPath = new char[MAX_PATH];
memset(pChPath, '\0', MAX_PATH);
/** 获取当前程序的执行路径exe路径 */
GetModuleFileName(GetSelfModuleHandle(),tcFullPath,MAX_PATH);
//GetModuleFileName(NULL, tcFullPath, MAX_PATH);
/** 将tchar转为char */
TCHAR2Char(tcFullPath, pChPath);
exePath = string(pChPath);
string dirPath = "";
size_t iPos = exePath.rfind("\\")

这篇博客探讨了在Unicode和多字节字符集中获取exe或DLL地址的方法。作者分享了从网络获取并修改的代码,并遇到了在多字节字符集下地址显示为乱码的问题。通过深入研究字符集差异,最终解决了问题。

678

被折叠的 条评论
为什么被折叠?



