假设现在有一个MFC程序 1.exe
我在调试MFC7.1的程序发现 系统会自动加载 "1CHS.dll" 这个文件
经过查找资料发现是在
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\src\mfc\appcore.cpp
里面的 CWinApp::InitInstance() 出现的 具体代码是这样的
BOOL CWinApp::InitInstance()
{
InitLibId();
m_hLangResourceDLL = LoadAppLangResourceDLL();
if(m_hLangResourceDLL != NULL)
{
AfxSetResourceHandle(m_hLangResourceDLL);
_AtlBaseModule.SetResourceInstance(m_hLangResourceDLL);
}
return TRUE;
}
HINSTANCE CWinApp::LoadAppLangResourceDLL()
{
TCHAR szFormat[MAX_PATH];
LPTSTR pszExtension;
int ret = ::GetModuleFileName(m_hInstance, szFormat, MAX_PATH);
if(ret == 0 || ret == MAX_PATH)
{
ASSERT(FALSE);
return NULL;
}
pszExtension = ::PathFindExtension(szFormat);
TCHAR szExt[] = _T("%s.dll");
if((pszExtension - szFormat + _countof(szExt)) > MAX_PATH)
{
ASSERT(FALSE);
return NULL;
}
lstrcpy(pszExtension, szExt);
return AfxLoadLangResourceDLL(szFormat);
}
现在问题是如果1.exe 当前目录没有 1CHS.dll这个问题 运行会很正常
如果我放一个空的DLL 代码很简单就return TRUE 这个时候把1.exe运行
起来 进程里面有 但是界面就不显示了 为什么?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)