• 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 > get_parentWindow这个函数是不是不能跨线程使用?

get_parentWindow这个函数是不是不能跨线程使用?

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

佚名通过本文主要向大家介绍了parentwindow,pb parentwindow,多线程批量getshell,get.cell函数怎么用,getvalue函数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: get_parentWindow 这个函数是不是不能跨线程使用?
描述:


CComPtr<IShellWindows> spShellWin;
    HRESULT hr = spShellWin.CoCreateInstance( CLSID_ShellWindows );
    if (FAILED(hr)) return;
    long nCount = 0;
    spShellWin->get_Count(&nCount);
    for (int i= 0; i < nCount; i++)
    {
        CComPtr<IDispatch> spDisp;
        hr = spShellWin->Item(CComVariant(i), &spDisp );
        if (FAILED(hr)) continue;
        CComQIPtr<IWebBrowser2> spBrowser = spDisp;
        if (!spBrowser) continue;
        WCHAR *Url;
        hr = spBrowser->get_LocationURL(&Url);
        if ( FAILED( hr ) ) continue;
        string sUrl = WCharToChar((LPCWSTR)Url);
        CComQIPtr<IHTMLDocument2> spDoc;
        hr = spBrowser->get_Document((IDispatch **) &spDoc );
        if ( FAILED ( hr ) ) continue;
        CComPtr <IHTMLDocument2> spIHTMLDocument2;
        if (spBrowser && SUCCEEDED(spBrowser->get_Document((IDispatch **)&spIHTMLDocument2)))
         {
                CComPtr <IHTMLWindow2> spIHTMLWindow2;
                spIHTMLDocument2->get_parentWindow(&spIHTMLWindow2);
         }

这段代码在BHO中运行是没问题的, 现在的运行环境是一个单独的外部控制台程序, 在    spIHTMLDocument2->get_parentWindow(&spIHTMLWindow2); 这句会直接崩溃
MSDN 帮助上没写, http://msdn.microsoft.com/en-us/library/aa752599%28v=vs.85%29.aspx, 但是下面别人写到
InvalidCastException Edit
Keep in mind: this property can be used only from the thread where document was created, otherwise you will get InvalidCastException.
可能真的如别人说的一样,不能在非document 创建者的线程里运行, 不知道是否还有别的解决方案.  谢谢


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

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

  • get_parentWindow这个函数是不是不能跨线程使用?

相关文章

  • 2017-06-04 我自己作了一个控件放在web页面上,我在本机上可以看,别人调用就不行,为什么阿?
  • 2017-06-04 template语法问题,解决后立刻揭帖。请稍微用1分钟,帮助一个新手。您获得的不止是感激。
  • 2017-06-05 还是DLL里显示非模态对话框的问题~送分。急急急
  • 2017-06-04 ActiveX中有直接播放音乐文件的吧,教我怎么用啊
  • 2017-06-05 怎么在程序中判断一个DLL已经注册了,如果注册了,把它UN注册,如果没有注册则注册一下,谢谢
  • 2017-06-05 主程序是用delphi做的,dll是用vc做的,在dll里面一个带有循环操作的函数如何更新主程序界面?
  • 2017-06-04 怎样调用基于IDispatch封装的类阿?
  • 2017-06-04 怎么我感觉COM和DLL那么像
  • 2017-06-04 OCX控件不能正常下载注册
  • 2017-06-05 求一道经典题的代码要用C和C++解决

文章分类

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

最近更新的内容

    • 求助:关于线程发送消息。
    • 从edit继承出来的Activex控件焦点问题
    • 请用国产编程语言
    • 求教:能不能显示调用一个扩展dll啊(导出类的),如果能怎样做,重谢
    • ADSL编程方面
    • 哪里可下载控件WEBBROWSER,谢谢
    • 网页控件参数获取问题?
    • MFC下的googleerath地图
    • 我的Inet怎么老是有错?
    • 谁能帮我提一个COM的学习计划

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

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