• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 做过IE弹出窗口拦截的朋友请进。

做过IE弹出窗口拦截的朋友请进。

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了ie弹出窗口设置,ie浏览器弹出窗口设置,ie阻止弹出窗口,ie弹出窗口阻止程序,ie浏览器阻止弹出窗口等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 做过IE弹出窗口拦截的朋友请进。
描述:

我仿照CodeProject上的例子做了一个Popup Blocker,是可以拦截弹出窗口了,但同时也无法打开网页上的二级链接了,请问高手是怎么回事,该 如何解决。
我的环境:Windows 2000,VC++6.0
主要代码如下:
CPopKiller::CPopKiller()
{
m_bBlockNewWindow=TRUE;
m_dwBrowserCookie=0;
}
HRESULT CPopKiller::SetSite(IUnknown *pUnkSite)
{
USES_CONVERSION;
HRESULT hr=E_FAIL;
if (!pUnkSite)
{
ATLTRACE(_T("SetSite(): pUnkSite is NULL\n"));
}
else
{
m_spWebBrowser2 = pUnkSite;
if (m_spWebBrowser2)
{
hr = ManageBrowserConnection(ConnType_Advise);
if (FAILED(hr))
{
ATLTRACE(_T("Failure sinking events from IWebBrowser2\n"));
}
}
else
{
ATLTRACE(_T("QI for IWebBrowser2 failed\n"));
}
}
return hr;
}
HRESULT CPopKiller::Invoke(DISPID dispidMember,REFIID riid,LCID lcid,
WORD wflags,DISPPARAMS *pDispParams,VARIANT *pvarResult,
EXCEPINFO *pexcepinfo,UINT *puArgErr)
{   
USES_CONVERSION;
if (!pDispParams)
{
       return E_INVALIDARG;
}
switch (dispidMember)
{
case DISPID_NEWWINDOW2:
   ATLTRACE(_T("(%ld) DISPID_NEWWINDOW2\n"), ::GetCurrentThreadId());
   if (m_bBlockNewWindow)
   {
   *pDispParams->rgvarg[0].pboolVal = TRUE;
   }        
   m_bBlockNewWindow = TRUE; 
   break;
case DISPID_QUIT:
           ManageBrowserConnection(ConnType_Unadvise);
   break;
default:
   break;
}
return S_OK;
}
HRESULT CPopKiller::ManageBrowserConnection(ConnectType eConnectType)
{
ATLASSERT(m_spWebBrowser2);
if (!m_spWebBrowser2)
return S_OK;
HRESULT hr = E_FAIL;
if (eConnectType == ConnType_Advise)
{
ATLASSERT(m_dwBrowserCookie == 0);
hr = AtlAdvise (m_spWebBrowser2, (IDispatch*)this, __uuidof(DWebBrowserEvents2), &m_dwBrowserCookie);
}
else
{
hr = AtlUnadvise(m_spWebBrowser2, __uuidof(DWebBrowserEvents2), m_dwBrowserCookie);
m_dwBrowserCookie = 0;
}
ATLASSERT(SUCCEEDED(hr));
return hr;
}
呵呵,CodeProject上的那个老版本的也有这个问题,但新版本的没有这个问题了,参考了他的代码,但问题如故。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 无法获取到弹出新的IE窗口的IWebBrowser2
  • 获取IE弹出窗口的问题(DISPID_NEWWINDOW2)
  • 用带地址栏的ie调用正常,用弹出窗口方式就出错,是什么问题
  • 为什么IE和它的弹出式窗口的进程ID是一样的?
  • 做过IE弹出窗口拦截的朋友请进。
  • IE编程问题,怎么得到弹出窗口的URL?

相关文章

  • 2017-06-05 SOS,我的键盘上有个a键出了问题,一直在重复按键,帮我看看下面代码为什么屏蔽不了?
  • 2017-06-05 在线等待:为什么说我的类undeclaredidentifier??
  • 2017-06-04 关于ActiveX发布的一个问题
  • 2017-06-04 错误1053,服务不能启动,为什么?急,急
  • 2017-06-05 为什么我在程序中已经声明了#include<processh>还是不能用_beginthreadex
  • 2017-06-04 问大家一个非常初级的问题(本来刚接触ATL)
  • 2017-06-04 如何用AsynchronousPluggableProtocol异步可插入协议替换系统http协议的处理--用于网页监控
  • 2017-06-04 如何判断计算机处于锁定状态?使用哪个API?
  • 2017-06-05 extern"C"declspecdllexportbool_stdcallmypro为什么调用时成了_mypro@8
  • 2017-06-05 多线程对话框消失问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • ATLCOM如何返回一个新的自身类型的对象指针
    • ACTIVEX学习,有没有好的中文网站推荐以下,谢谢了!
    • 组件和控件是一个东西吗???ActiveX算哪类??如何把我写好的MFC程序做成一个ActiveX呢???
    • 初学COM,com和Delphi程序之间如何传字符串呀?
    • 控件里的事件问题。
    • 堆栈溢出问题非常奇怪
    • 调dll出现内存溢出
    • VC串口编程MSComm无法接收数据
    • 希望热心的朋友留下自己的MSN,以便以后多交流
    • /使用WebBrowserControl,怎样禁止弹出新浏览器窗口?/

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有