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);没发现不正常现象,
请问怎么才能解决?
如果不支持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);没发现不正常现象,
请问怎么才能解决?
解决方案 »
- 关于Winsock2 connect函数返回错误,使用WSAGetLastError得到10035,10037,是什么原因
- 求救,使用DoModal()后,对话框的hwnd始终是0x000
- VC中CTREECTRL中数据保存的问题
- 请教:当读串口缓冲区的时候,我能不能只读缓冲区的前面几个字符,谢谢!
- VC写的DLL能否反编译?
- 怎么调用dll中的类?
- 关于图象刷新的问题
- 一个很菜的关于菜单的问题?
- 关于文件的读取
- 请问各位高手,IE地址栏这种动态提示的效果(记录输入的网址,动态显示)是怎么做的?
- 怎样使用SetROP2(R2_XORPEN)
- 谁有可以保存到服务器的DSO Framer ActiveX !!!
{
TCHAR pszLoader[MAX_PATH];
GetModuleFileName(NULL, pszLoader, MAX_PATH);
_tcslwr(pszLoader);
if (_tcsstr(pszLoader, _T("explorer.exe")))
return FALSE;
}
m_hInstance 为 0 ?
可能m_hInstance还没赋值
请问是哪一个编译选项呢?to: firmbird(firmbird): 支持mFC的没有dllMain()!!!!to:yongdu() 怎么赋值呢?