• 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 > BHO问题,在DISPID_NEWWINDOW2中创建CLSID_InternetExplorer问题,请教高手

BHO问题,在DISPID_NEWWINDOW2中创建CLSID_InternetExplorer问题,请教高手

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

佚名通过本文主要向大家介绍了 BHO问题,在DISPID_NEWWINDOW2中创建CLSID_InternetExplorer问题,请教高手等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: BHO问题,在DISPID_NEWWINDOW2中创建CLSID_InternetExplorer问题,请教高手
描述:

我在BHO的Invoke函数中有这么一段代码;
case DISPID_NEWWINDOW2:
{
// break;
HRESULT   hr;   
IWebBrowser2*   pWebBrowser   =   NULL;   
HRESULT   comInit   =     CoInitializeEx(NULL,COINIT_MULTITHREADED);   
hr = CoCreateInstance(CLSID_InternetExplorer, NULL,CLSCTX_LOCAL_SERVER  ,IID_IWebBrowser2,
(LPVOID*)&pWebBrowser);   
if   (SUCCEEDED   (hr)   &&   (pWebBrowser   !=   NULL))   
{   
CComQIPtr<IDispatch> piDisp;
pWebBrowser->get_Application(&piDisp);
piDisp.CopyTo(pDispParams->rgvarg[1].ppdispVal);
//2 获取新创建WebBrowe  窗口的句柄
long hWnd = 0;
pWebBrowser->get_HWND(&hWnd);
DbgPrint("添加窗口指针 %u %d",hWnd,GetCurrentProcessId());
//3 添加到vector中
if( hWnd != NULL )
{
AddToWndList(hWnd);
}
}
break;
}
每次有新窗口打开的时候,都会调用CoCreateInstance函数创建一个对象,但是我发现有一个问题,假设现在我打开2个IE,IE1和IE2,IE1先打开,IE2后打开,在IE2中有新窗口打开,新打开的窗口却是IE1进程的新窗口,却不是IE2进程的窗口,我上网找了资料,网上说:CoCreateInstance函数的CLSCTX_LOCAL_SERVER  参数是使得在其他进程中创建对象,而参数CLSCTX_INPROC_SERVER是在本进程中创建对象。但是我试过,同时使用CLSCTX_INPROC_SERVER和CLSID_InternetExplorer参数的话,CoCreateInstance函数会失败请问:有没有办法,使得我在DISPID_NEWWINDOW2中创建的对象,是在IE2进程中的窗口,而不是IE1进程的窗口。


解决方案1:

hr = CoCreateInstance(CLSID_InternetExplorer, NULL,CLSCTX_LOCAL_SERVER  ,IID_IWebBrowser2,
(LPVOID*)&pWebBrowser);  
改成:
CoCreateInstance(CLSID_WebBrowser, NULL,CLSCTX_INPROC,
IID_IWebBrowser2, (void**)&pWebBrowser);


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

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

  • BHO问题,在DISPID_NEWWINDOW2中创建CLSID_InternetExplorer问题,请教高手

相关文章

  • 2017-06-04 在MFC中,怎么打开Excel的文件哦?
  • 2017-06-04 C++下的这样一条函数,如何写成ACTIVEX接口并可以用JS调用?非常感谢
  • 2017-06-05 关于dll中MessageBox的问题?
  • 2017-06-04 debug和release编译环境的区别的问题
  • 2017-06-04 com的回调事件应用
  • 2017-06-04 请教关于用“多线程实现数据采集”的实时性问题!大分相送!决不食言)
  • 2017-06-04 ATL中设置字体,设置后字体大小不是所设大小,郁闷!!
  • 2017-06-05 WaitForMultipleObjects的问题??
  • 2017-06-04 mobile下使用CMWAP接入网络
  • 2017-06-05 98下怎样检测一个进程是否结束

文章分类

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

最近更新的内容

    • 请问一下哦:创建消息、发送消息和接收消息的过程是怎样的?它和进程、线程有什么关系。
    • 急问VC如何实现控制条码打印机???在线等大家帮忙
    • 请教:如何使用IHTMLWindow2的put_onloadVARIANTv方法来设置接收event的IDispatchobject?
    • 我的控件有问题!!
    • 在网页中复制内容后,粘贴到word中去,还能保持内容的各种属性,比如大小,链接,颜色等,这是基于什么原理?有没有实现的代码?
    • 标准DLL中如何返回字符串数组给VB????
    • 在ATL中怎么读取本地的cookies?
    • #pragmahdrstopcannotbeinsidean#ifblock
    • 求救:ActiveX中使用CImage::Save导致IE进程不能正常结束
    • IWebBrowser2腾讯企业邮箱写信的页面动态产生

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

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