想BHO只加载ie,不加载我的电脑,但出错atlbase.h中5668行,ATLASSERT(pM->m_hInst != NULL);
BHO的实现。VC中ATL工程,支持MFC的,想只加载ie,不加载我的电脑。
如果不支持MFC,有dllMain可以控制,但是支持MFC的没有dllmain,
在initInstance中加入如下代码:
BOOL CIEProtectorApp::InitInstance()
{
TCHAR Loader[MAX_PATH];
GetModuleFileName(NULL,Loader,MAX_PATH);
for(int i = lstrlen(Loader);i>0;i--)
{
if(Loader[i]==_T('\\'))
{
lstrcpy(Loader,Loader+i+1);
break;
}
}
if(lstrcmpi(_strlwr(Loader),_T("iexplore.exe"))!=0&&lstrcmpi(_strlwr(Loader),_T("regsvr32.exe"))!=0)
{
return FALSE;
}
_Module.Init(ObjectMap, m_hInstance, &LIBID_IEPROTECTORLib);
return CWinApp::InitInstance();
}
打开ie正常,但是打开我的电脑时atlbase.h中5668行,ATLASSERT(pM->m_hInst != NULL);
出错,但是选择ignore我的电脑能正常打开?
不知道什么原因,注释掉atlbase.h中的ATLASSERT(pM->m_hInst != NULL);没发现不正常现象,
请问怎么才能解决?
问题点数:20、回复次数:5Top
1 楼goodboyws(深夜不眠者(VCMVP))回复于 2005-09-02 23:41:31 得分 0
可能是因为你没有调CWinApp::InitInstance();
Top
2 楼firmbird(firmbird)回复于 2005-09-03 17:52:50 得分 0
在DllMain()中添加
if (dwReason == DLL_PROCESS_ATTACH)
{
TCHAR pszLoader[MAX_PATH];
GetModuleFileName(NULL, pszLoader, MAX_PATH);
_tcslwr(pszLoader);
if (_tcsstr(pszLoader, _T("explorer.exe")))
return FALSE;
}
Top
3 楼lion_wing(凤之焚-业与情的纠缠,死而复生的蜕变!)回复于 2005-09-04 12:32:49 得分 0
我也遇到过这问题,去掉一个编绎选项就OK了!Top
4 楼yongdu()回复于 2005-09-04 15:07:16 得分 0
跟一下这句_Module.Init(ObjectMap, m_hInstance, &LIBID_IEPROTECTORLib);
m_hInstance 为 0 ?
可能m_hInstance还没赋值Top
5 楼hybhll(大彬)回复于 2005-09-05 09:14:58 得分 0
to: lion_wing(血舞尖刀) 我也遇到过这问题,去掉一个编绎选项就OK了!
请问是哪一个编译选项呢?
to: firmbird(firmbird): 支持mFC的没有dllMain()!!!!
to:yongdu() 怎么赋值呢?Top




