CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  硬件/系统

如何编程取得浏览器的地址栏里的东西?

楼主gujianfei1979(谷谷)2003-12-03 20:45:46 在 VC/MFC / 硬件/系统 提问

比如“http://www.aaa.com” 问题点数:100、回复次数:2Top

1 楼Semigod()回复于 2003-12-04 10:18:19 得分 30

使用DDE,     通过接收   WWW_UrlEcho或   WWW_GetInfo   等Notify可以获取Top

2 楼yintongshun(左岸思雨)回复于 2003-12-04 11:01:26 得分 70

以下就是你想要的,顺便我再给你贴些相关的:  
  让应用程序从IE中获取键入的网址            
        HWND   hwnd=::FindWindow(_T("IEFrame"),NULL);  
     if(hwnd)  
   {  
         HWND   hwnd2=::FindWindowEx(hwnd,NULL,_T("Edit"),NULL);  
   
   
        char   sz[255];  
      ::SendMessage(hwnd2,WM_GETTEXT,255,(LPARAM)sz);  
      AfxMessageBox(sz);  
   }  
   
  结果发现不能得到正确的结果,从SPY上看,类名也全部是正确的,为什么不能得到正确的结果呢?看了他的代码后,我进行了如下改动,就可以得到正确的结果了:  
   
  HWND   hwnd=::FindWindow(_T("IEFrame"),NULL);  
    if(hwnd)  
    {  
      HWND   hwnd2=::FindWindowEx(hwnd,NULL,_T("WorkerW"),NULL);  
      HWND   hwnd3=::FindWindowEx(hwnd2,NULL,_T("ReBarWindow32"),NULL);  
      HWND   hwnd4=::FindWindowEx(hwnd3,NULL,_T("ComboBoxEx32"),NULL);  
      HWND   hwnd5=::FindWindowEx(hwnd4,NULL,_T("ComboBox"),NULL);  
      HWND   hwnd6=::FindWindowEx(hwnd5,NULL,_T("Edit"),NULL);  
   
        char   sz[255];  
      ::SendMessage(hwnd6,WM_GETTEXT,255,(LPARAM)sz);  
      AfxMessageBox(sz);  
    }  
  }  
   
  下面是相关的:  
  IE编程技巧1.实现Ctrl+C:    
          ExecWB(OLECMDID_COPY,OLECMDEXECOPT_DONTPROMPTUSER,NULL,NULL);    
   
  2.实现Ctrl+V:  
   
          ExecWB(OLECMDID_PASTE,OLECMDEXECOPT_DONTPROMPTUSER,NULL,NULL);    
   
  3.实现查找:  
   
  MSHTML::IHTMLDocument2Ptr   pdoc;  
  _variant_t   varinput,varoutput;  
  IOleCommandTarget   *pCmd;  
  HRESULT   hr;  
  pdoc=GetHtmlDocument();  
  hr=pdoc.QueryInterface(IID_IOleCommandTarget,&pCmd);  
  if(SUCCEEDED(hr))  
  {  
  varinput=_T("");  
  hr=pCmd->Exec(&CGID_MSHTML,IDM_FIND,OLECMDEXECOPT_DODEFAULT,&varinput,&varoutput);  
  }  
   
  4.实现显示源程序:  
   
  MSHTML::IHTMLDocument2Ptr   pdoc;  
  _variant_t   varinput,varoutput;  
  IOleCommandTarget   *pCmd;  
  HRESULT   hr;  
  pdoc=GetHtmlDocument();  
  hr=pdoc.QueryInterface(IID_IOleCommandTarget,&pCmd);  
  if(SUCCEEDED(hr))  
  {  
  varinput=_T("");  
  hr=pCmd->Exec(&CGID_MSHTML,IDM_VIEWSOURCE,OLECMDEXECOPT_DODEFAULT,&varinput,&varoutput);  
  }  
   
  5.实现显示Internet选项:  
   
  MSHTML::IHTMLDocument2Ptr   pdoc;  
  _variant_t   varinput,varoutput;  
  IOleCommandTarget   *pCmd;  
  HRESULT   hr;  
  pdoc=GetHtmlDocument();  
  hr=pdoc.QueryInterface(IID_IOleCommandTarget,&pCmd);  
  if(SUCCEEDED(hr))  
  {  
  varinput=_T("");  
  hr=pCmd->Exec(&CGID_MSHTML,IDM_OPTIONS,OLECMDEXECOPT_DODEFAULT,&varinput,&varoutput);  
  }  
   
  6.下载事件说明:  
   
  OnDownloadBegin   <--开始下载  
  OnDownloadComplete   <--下载结束  
  OnDocumentComplete   <--页面下载完毕  
   
  对于每个HTML页面,顺序都是如此.如果是Frame或IFrame的文件都会当成HTML页面处理.也就是说如果一个页面中有3个IFrame,那么总共会触发4次BeforeNavigate2事件.  
   
  对于每个连接且需要显示出来的二进制文件(如*.gif,*.bmp,*.jpg...)都会触发一个DownloadBegin和DownloadComplete事件.  
   
  那我们怎么判断是否全部下载完毕呢?嘿嘿,TWebBrowser控件不是有一个Busy属性的吗?  
   
  7.点击链接产生的事件:  
   
  OnBeforeNavigate2   <--开始链接时会触发此事件  
  OnNavigateComplete2   <--成功的链接到此网页(以后才会有上面的事件)  
   
   
  8.包括相关文件:  
   
  #include   <mshtmhst.h>  
  #include   <mshtmcid.h>//这里面有很多实现IE功能的XXID,请看一看!  
  #import   <mshtml.tlb>  
     
   
     
  Top

相关问题

  • 浏览器编程
  • 如何保持浏览器地址栏的地址不变
  • 怎样隐藏浏览器的菜单栏,地址栏
  • 浏览器地址栏输入参数无效
  • 浏览器地址栏输入参数无效
  • 如何取得用户浏览器地址栏的URL?
  • 浏览器地址栏不能输入字符问题!谢谢
  • 如何删除redhat下mozilla浏览器地址栏里面的地址?
  • 如何取得访问者浏览器地址栏显示的地址?
  • 菜鸟问浏览器编程问题

关键词

  • hr
  • null
  • hwnd
  • findwindowex
  • sz
  • pcmd
  • pdoc
  • 实现
  • 得到正确的结果
  • www

得分解答快速导航

  • 帖主:gujianfei1979
  • Semigod
  • yintongshun

相关链接

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

广告也精彩

反馈

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