在嵌入式系统中由于硬件的限制,若使用浏览器来看普通的网站,很可能因为太多的窗口导致系统资源不足。况且可能是没有鼠标和键盘的系统,那些弹出式广告就非常的麻烦。最好是只有一个窗口进行上网浏览。
鉴于上面的原因,本人对wince的iesample进行了小小的修改。iesample 浏览器虽然可以通过注册表的修改,使其总在一个窗口打开,但会应为弹出式广告使网站总是现实广告,而且不能退回到主页,因为退了马上又回来了。修改注册表的代码如下
HKEY hKey;
DWORD dwSize = sizeof(DWORD);
if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\Internet Explorer\\Main"), 0, 0, &hKey))
{
RegQueryValueEx(hKey, TEXT("StackRes"), NULL, NULL, (LPBYTE)&g_dwMainWindowStackSize, &dwSize);
DWORD dwValue = 1;
//RegSetValueEx(hKey,TEXT("NoNewWindows"), 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD));
RegSetValueEx(hKey,TEXT("Scrollbar"), 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD));
RegCloseKey(hKey);
}
具体每项注册表的功能见http://www.vckbase.com/document/viewdoc/?id=1297
这里就介绍我的方法了。代码如下,在invoke的事件中
case DISPID_NEWWINDOW2:
{
READYSTATE m_ReadyState;
_pBrowser->get_ReadyState(&m_ReadyState);
if(m_ReadyState!=READYSTATE_COMPLETE)
{
*pdparams->rgvarg[0].pboolVal=TRUE;
}// 弹出式拦截
else
{
*pdparams->rgvarg[0].pboolVal=FALSE;
HandleNewWindow2(NULL, pdparams);
::SendMessage(_hWndBrowser,WM_CLOSE,0,0);
return S_OK;
}//target类型的弹出
}
break;
///////////////////////////////////////
这个代码可以拦截广告,但对在新窗口打开的链接采用了不是很好的处理,就是打开新窗口,关闭它的父窗口。在全屏效果下还是不错的。但就是不能退回到父窗口的内容了。若大家有好的解决方法,欢迎指教。
本文地址:http://com.8s8s.com/it/it22525.htm