CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  ATL/ActiveX/COM

如何再IE的控件里来关闭IE窗口?

楼主vinci(vinci)2004-11-03 08:41:59 在 VC/MFC / ATL/ActiveX/COM 提问

我的代码如下:  
  LRESULT   CPlayer::MyCloseWindow()  
  {  
  CComPtr<IOleContainer>spIE;  
  m_spClientSite->GetContainer(&spIE);  
  CComPtr<IHTMLWindow2>spWnd;  
  CComQIPtr<IHTMLDocument2,&IID_IHTMLDocument2>spDoc(spIE);  
  if(spDoc){  
  spDoc->get_parentWindow(&spWnd);  
  if(spWnd){  
  spWnd->close();  
  }  
  }  
   
  return   0;  
  }  
   
  发现m_spClientSite->GetContainer(&spIE);返回的spIE为空,不知是何原因?  
  是不是只支持IE4.0?但我用ActiveX   Container   Tester测试也不成呀  
  问题点数:0、回复次数:9Top

1 楼sdwalnut1(豆浆加油条)回复于 2004-11-03 08:55:26 得分 0

关注Top

2 楼newkey007(无限天空 www.xDrv.com)回复于 2004-11-03 09:29:54 得分 0

在   olesetclientsite   中获取  
   
  Top

3 楼dropingleaf(叶孤飞云)回复于 2004-11-03 09:35:44 得分 0

学习Top

4 楼wwwsq(wwwsq)回复于 2004-11-03 09:47:17 得分 0

gzTop

5 楼g_ongtian(奇怪吸引子)回复于 2004-11-03 10:18:06 得分 0

先得到IWebBrowser2对象然后调用Quit();  
   
  IWebBrowser2   &mWebBrowser2  
  mWebBrowser2->Quit();Top

6 楼vinci(vinci)回复于 2004-11-03 10:40:25 得分 0

现在是Container都没有获取到呀  
  有没有完整一些代码?  
   
  谢谢!Top

7 楼weiziyuner(烂人)回复于 2004-11-03 10:43:22 得分 0

最好在ACTIVEX中做一个event,在你要关闭的时候fire   这个event  
  然后在网页中响应这个event   关闭ie就可以了:)  
  我试过,还挺好用的:)  
  <SCRIPT   LANGUAGE=javascript   FOR=yourobject   EVENT="OnKillIEWnd()"   id=1>    
  <!--      
  window.close();  
  //-->    
  </SCRIPT>Top

8 楼aspnetwuxueyou(SHIP IT)回复于 2004-11-03 10:47:23 得分 0

HWND   hwnd;  
  m_spInPlaceSite->GetWindow(&hwnd);  
  then   send   message   to   the   window  
  Top

9 楼vinci(vinci)回复于 2004-11-03 11:52:44 得分 0

我已经搞定了  
  原来的代码可以的,只是我在一个独立的线程里执行它就不行,现在我是通过消息机制在主窗口里关闭。  
   
  还有另外一段代码也可以:  
  CComPtr<IWebBrowser2>   browser;  
  CComPtr<IServiceProvider>   isp;  
   
  HRESULT   hr   =   m_spClientSite->QueryInterface(IID_IServiceProvider,   reinterpret_cast<void   **>(&isp));  
  if(FAILED(hr))   return   0;  
  hr   =   isp->QueryService(IID_IWebBrowserApp,   IID_IWebBrowser2,   reinterpret_cast<void   **>(&browser));  
  if(FAILED(hr))   return   0;  
  hr   =   browser->Quit();  
   
  这个在退出时没有提示“正在关闭”,更好些Top

相关问题

  • 在IE中调用Active X控件,第一次安装使用时,没有提示就关闭了所有IE窗口。
  • 控件叠放及关闭窗口问题
  • ActiveX控件的问题,窗口不能关闭
  • UserControl中的控件能否关闭整个窗口?
  • 请问在窗口关闭时需要主动关闭TDataSet控件吗?
  • 怎样用服务器端button控件关闭客户端窗口
  • 窗口关闭了,控件却没销毁,程序出错怎么办
  • --如何用控件上的按钮控制应用窗口关闭--
  • IE 控件 如何 禁止弹出新窗口
  • 怎么关闭timer控件!

关键词

  • 代码
  • ie
  • hr
  • spwnd
  • spie
  • spclientsite
  • 关闭
  • spdoc
  • ccomptr
  • iwebbrowser

得分解答快速导航

  • 帖主:vinci

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo