• 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里弹出新窗口,如何控制新窗口的大小?

BHO里弹出新窗口,如何控制新窗口的大小?

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

佚名通过本文主要向大家介绍了bho,bho插件是什么,thunder bho platform,bho美剧,bho是什么等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: BHO里弹出新窗口,如何控制新窗口的大小?
描述:

BOOL PopupWindowEx(IWebBrowser2 *pWebBrowser, BSTR bstrUrl, int top, int left, int width, int height)
{
    if (pWebBrowser == NULL) return FALSE;
    VARIANT vtFlags, vtEmpty;
    vtFlags.vt = VT_I4;
    vtFlags.lVal = navOpenInNewWindow;
    ::VariantInit(&vtEmpty);
    if (top >= 0) pWebBrowser->put_Top(top);
    if (left >= 0) pWebBrowser->put_Left(left);
    if (width >= 0) pWebBrowser->put_Width(width);
    if (height >= 0) pWebBrowser->put_Height(height);
    pWebBrowser->put_Visible(VARIANT_TRUE);
    pWebBrowser->Navigate(bstrUrl, &vtFlags, &vtEmpty, &vtEmpty, &vtEmpty);
    ::VariantClear(&vtFlags);
    ::VariantClear(&vtEmpty);
    return TRUE;
}
上面这个函数只能针对父窗口的,不能改变新窗口的大小.
而下面这个函数,如果开了MYIE,焦点会转移到MYIE,但是新窗口没有处理.
如果没开MYIE,则窗口能弹出来,但是也不能控制大小的.
BOOL PopupWindowEx(LPCTSTR lpszUrl, int top, int left, int width, int height)
{
    //::CoInitialize(NULL);
    IWebBrowser2 *pWebBrowser = NULL;
    HRESULT hr;
    hr = ::CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER, IID_IWebBrowser2, (void**)&pWebBrowser);
    if(FAILED(hr) || pWebBrowser == NULL) return FALSE;
    VARIANT vtUrl, vtFlags, vtTarget, vtEmpty;
    vtUrl.vt = VT_BSTR;
    vtUrl.bstrVal = CComBSTR(lpszUrl);
    vtFlags.vt = VT_I4;
    vtFlags.lVal = navOpenInNewWindow;
    vtTarget.vt = VT_BSTR;
    vtTarget.bstrVal = CComBSTR("_blank");
    ::VariantInit(&vtEmpty);
    if (top >= 0) pWebBrowser->put_Top(top);
    if (left >= 0) pWebBrowser->put_Left(left);
    if (width >= 0) pWebBrowser->put_Width(width);
    if (height >= 0) pWebBrowser->put_Height(height);
    //pWebBrowser->put_Visible(VARIANT_TRUE);
    hr = pWebBrowser->Navigate2(&vtUrl, &vtEmpty, &vtTarget, &vtEmpty, &vtEmpty);
    ::VariantClear(&vtFlags);
    ::VariantClear(&vtTarget);
    ::VariantClear(&vtEmpty);
    
    pWebBrowser->Quit();
    pWebBrowser->Release();
    pWebBrowser = NULL;
    //::CoUninitialize();
    return SUCCEEDED(hr);
}
请问控制新窗口的大小应该怎么做呢?


解决方案1:

你导航过去后就去得到文档。肯定没有呀。。文档没有下载下来之前IWebBrowse是没有文档对象的。
你可sleep一下。或者把连接点挂过去。响应它的文档下载完所的消息。

解决方案2:

www.codeproject.com/shell/AutomateShellWindow.asp

解决方案3:

HRESULT IWebBrowser2::get_Document(IDispatch **ppDisp);
HRESULT IHTMLDocument2::get_parentWindow(IHTMLWindow2 **p);
IHTMLWindow2::resizeBy
IHTMLWindow2::resizeTo
你可以试试


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

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

  • 基于ATL的应用(BHO中如何使用MFC的类CString,CFileDialog等)?
  • 高分求教:BHO技术拦截Flash,但写入的js代码无效!
  • 关于BHO拦截按键的问题
  • 想BHO只加载ie,不加载我的电脑,但出错atlbaseh中5668行,ATLASSERTpM->m_hInst!=NULL;
  • VC++开发BHO插件—定制你的浏览器
  • BHO的问题
  • 在一个ie(BHO,band)插件中如何控制ie的弹出窗口的。
  • 什么工具可以反编译一个DLL,这个dll是bho
  • BHO中DIID_HTMLElementEvents2在哪个头文件中定义?
  • 在BHO中的DISPID_DOCUMENTCOMPLETE事件中取不到IHTMLDocument2的属性

相关文章

  • 2017-06-04 mfc60的activexwizard的控件和activex自动化服务器差别在哪块?
  • 2017-06-04 Atl控件的显示问题?
  • 2017-06-04 ActiveX控件两问,在线等待解决方案。
  • 2017-06-04 regsvr32注册ocx控件的问题
  • 2017-06-05 讨论:进程开机自动运行,并且用户无法通过修改注册表等方法删除
  • 2017-06-04 COM_INTERFACE_ENTRY2问题
  • 2017-06-04 WebServices调用COMDLL问题。。。急!!!!
  • 2017-06-05 请教组件窗口的问题
  • 2017-06-04 200分的问题,只要有人回答
  • 2017-06-05 请问那里有vc关于串行通讯的编程资料?

文章分类

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

最近更新的内容

    • 编译能通过,但执行出错误
    • linux/unix下有DCOM的实现么?
    • ActiveX控件注册问题
    • 问下:自己写的com,其中一个接口方法返回一个variant类型的值,在net中如何接收啊
    • atl连接点事件的问题
    • 调用线程函数AfxBeginThread函数要包含什么头文件?
    • glGenTextures的一个问题
    • 经验分享(散分来了):BSTR转换成unsignedchar的最简便方法(只需三句代码)
    • 有一个全局对象,如何让一个工作线程访问它时,别的工作线程先等待,等前者访问结束后再访问?
    • 关于activex控件的问题

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

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