如何打造标签式IE浏览器(C#)

                              电子科技大学软件学院03级02班 周银辉

1,看看效果

2,关于Browser控件
        如果您用的IDE是VisualStudio 2005, 那么您会发现,上面有个WebBrowser控件,请 不要 使用该控件来开发这个浏览器(原因是它缺少了很多参数,将使您的工作在中途陷入困境)
       请使用axWebBrowser控件。在VisualStudio的工具箱中,右击鼠标 -----> 选择项 ----->  Com组件  ------->  "Microsoft Web 浏览器", 然后该控件就被添加到工具箱了.

3,导航到指定网页
      导航函数为Navigate(String),使用它打开指定的网页

4,“在新窗口中打开”
       首次创建网页浏览器时,都会为这样一个问题而郁闷:当“在新窗口中打开”时,新弹出的页面将在您系统默认的浏览器中打开,而不是在你所编写的浏览器中。这也是为什么不使用VisualStudio2005的WebBrowser控件的原因之一。
       注意到axWebBrowser控件的NewWindow2事件,参数DWebBrowserEvents2_NewWindow2Event  e 有一个ppDisp字段(VisualStudio2005的WebBrowser控件没有该字段),  设置e.ppDisp = myBrowser.Application; 就可以了。其中myBrowser只的是您要在其中打开网页的那个axWebBorwser对象。
      NewWindow3事件只支持XP sp2以后的版本。

5,“前进”与“后退”
       它们分别对应控件的GoBack()和GoForward()函数。
       但,如何判断但前可否前进或后退?(axWebBrowser控件没有WebBrowser控件的CanGoBack与CanGoForward属性)。
       注意到,axWebBrowser控件的CommandStateChange事件,参数DWebBrowserEvents2_CommandStateChangeEvent  e有两个字段e.command和e.enable。 e.command: 值为1时针对前进按钮,值为2时针对后退按钮;e.enable:表明所针对的按钮当前是否可用。您可以根据此来启用或停用“前进”“后退”按钮。

6,“页面另存为”,“打印”,“打印预览”,“查找”等
        它们对应axWebBrowser的同一个函数ExecWB(  )   ,只是传入的参数不同而已。

7,“Internet选项”,“参看源文件”
        在这之前,您应该添加对“msHtml.dll”的引用,添加引用-----> Com ---->"microsoft HTML object library"
  然后定义定义 IOleCommandTarget 接口:

[ComImport, Guid("b722bccb-4e68-101b-a2bc-00aa00404770"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IOleCommandTarget
    {
        void QueryStatus(ref Guid pguidCmdGroup, UInt32 cCmds,
        [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] OLECMD[] prgCmds, ref OLECMDTEXT CmdText);
        void Exec(ref Guid pguidCmdGroup, uint nCmdId, uint nCmdExecOpt, ref object pvaIn, ref object pvaOut);
    }

 并定义一个函数来取得axWebBrowser对象的当前文档(mshtml.HTMLDocument对象):

/**//// <summary>
        /// 获取当前的HtmlDocument对象
        /// </summary>
        /// <returns></returns>
        private mshtml.HTMLDocument GetCurrentHtmlDocument()
        {
            mshtml.HTMLDocument doc = null;
            AxWebBrowser browser = this.GetCurrentBrowser();
            if (browser != null)
            {
                doc = browser.Document as mshtml.HTMLDocument;
            }

            return doc;

        }

注意mshtml.HTMLDocument别忘记加mshtml限定,否则会与System.Windows.Forms.HTMLDocment产生歧义。

以及一个枚举:

 private enum MiscCommandTarget
        {
            Find = 1,
            ViewSource,
            Options
        } 

然后我们的查找函数的函数体就可以这样写了:

 //查找
            mshtml.HTMLDocument doc = this.GetCurrentHtmlDocument();
            if (doc != null)
            {
                IOleCommandTarget cmdTarget = doc as IOleCommandTarget;
                Object o = new object();
                try
                {
                    cmdTarget.Exec(ref cmdGuid, (uint)MiscCommandTarget.Find,
                       (uint)SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, ref o, ref o);
                }
                catch
                {
                }
            }

8,“收藏夹”
        “收藏夹”,没有必要去调用API,您完全可以读取“C:\Documents and Settings\UserName\Favorites”下的文件夹和文件来打造您自己的个性收藏夹
           收藏夹路径:string path = Environment.GetFolderPath(Environment.SpecialFolder.Favorites);
   收藏夹文件,也就是收藏夹目录下的那些快捷方式,其后缀名为“.url”,虽然您在操纵系统中中看不到其后缀。其实际为一个纯文本文件,将它拖到记事本中,可以看到其内容,比如:
[InternetShortcut]
URL=http://zhouyinhui.cnblogs.com/
Modified=
IconFile=
IconIndex=0
         有了这些知识,您完全可以任意操纵“收藏夹”了。
          另外,如果您希望当收藏夹中文件或文件夹有任何改动时,你的程序都能自动发现,并做出相应反应,那么请注意一个叫做“FileSystemWatcher”的控件。

--------------------------------------------

源代码下载http://files.cnblogs.com/zhouyinhui/Surfer.rar

另外,如果您有ie编程方面的电子书,望能e_mail给我,谢谢!

转载于:https://www.cnblogs.com/zhouyinhui/archive/2006/10/12/527705.html

如何打造标签式IE浏览器 (共享源码)相关推荐

  1. 仿快图系统自带图片浏览器应用源码项目

    仿快图系统自带图片浏览器应用源码,最近在做一个微博i动态模块,需要查看他人相册照片或者微博内容图片等.看到QQ空间那个效果不错,尝试了不少方法来实现,均不是怎么理想.最初是想通过自定义GroupVie ...

  2. webstack响应式网站导航html源码kyuan 本地静态化版

    介绍: webstack响应式网站导航html源码 安装方法:直接上传 一言.和风天气的api建议大家自己注册换成自己的,每个注册的人有每日免费使用次数, 自带的一起用可能最后都显示不出来了. 以上提 ...

  3. WPF如何实现一款类似360安全卫士界面的程序?(共享源码!)

    原文:WPF如何实现一款类似360安全卫士界面的程序?(共享源码!) 以前学习Windows Form编程的时候,总感觉自己做的界面很丑,看到360安全卫士.迅雷等软件的UI设计都非常美观,心里总是憧 ...

  4. html5+css3做的响应式企业网站前端源码

    大家好,今天给大家介绍一款,html5+css3做的响应式企业网站前端源码 (图1).送给大家哦,获取方式在本文末尾. 图1 首页banner幻灯片切换特效(图2) 图2 首页布局简约合理(图3) 图 ...

  5. 20款响应式bootstrap后台模板源码下载

    绿色清新的bootstrap响应式国外后台管理网站模板 蓝色简洁的响应式手机端云后台管理系统模板 扁平的html5 bootstrap手机后台管理模板源码下载 win8扁平风格响应式后台管理系统模板下 ...

  6. linux源码共享,Android之高仿飞鸽传书热点创建与共享源码

    这两天,无意中看到飞鸽传书这个小东东,然后又突然对他的wifi热点创建与共享比较感兴趣,于是乎把他的APK给反编译了,很蛋疼的还原了一下他的这一小模块代码,感觉效果差不多,所以跟大家分享一下,下面我们 ...

  7. Python语言打造智能语音助手——附完整源码

    Python语言打造智能语音助手--附完整源码 随着智能家居.智能办公等领域的逐渐兴起,实现语音控制与交互已成为了一种趋势.而Python语言是一门极具魅力的编程语言,其强大的库.简洁的语法以及易于学 ...

  8. 响应式茶叶类网站源码 HTML5茶叶茶艺茶文化养生茶网站织梦模板

    介绍 响应式茶叶类网站源码采用织梦最新内核开发的模板,这款模板使用范围极广,不仅仅局限于一类型的企业,你只需要把图片和产品内容换成你的即可,颜色都可以修改,改完让你耳目一新的感觉!布局规整,利于用户体 ...

  9. 找一个网页,用浏览器查看源码并复制,然后尝试解析一下HTML,输出Python官网发布的会议时间、名称和地点——python学习笔记

    1. 题目: 找一个网页,例如https://www.python.org/events/python-events/,用浏览器查看源码并复制,然后尝试解析一下HTML,输出Python官网发布的会议 ...

最新文章

  1. 7种不同的使用AI聊天机器人的方式
  2. Spring集成Shiro框架实战
  3. HDU 4505 小Q系列故事——电梯里的爱情
  4. 【Linux高级驱动】如何分析并移植网卡驱动
  5. 【C++】利用Visual Studio 2008编写C++,Visual Studio 2008的基本使用
  6. 12.1 Bootstrap介绍
  7. Eclipse使用Android2.3和3.0的SDK
  8. 听说容器正在吃掉整个软件世界?
  9. [APIO2018] New Home 新家(线段树,二分答案,离散化)
  10. 【区块链Go语言实现】Part 1:区块链基本原型
  11. 计算机网络学习笔记(3. 计算机网络结构)
  12. Java、SQL 十年混战史:Oracle 告 Google、“窃”IBM 往事
  13. Children’s Queue
  14. 计算机单机管理软件,小财迷电脑收银系统(收银记账软件) 单机版
  15. WordPress简约mkBlog博客主题模板v2.1
  16. PCB天线和陶瓷天线
  17. a113 智能音箱芯片方案_主流智能音箱全拆解,内部分毫必见
  18. Picasso入门教程(十二)Cache Indicators,Logging Stats
  19. 【MAVEN】maven仓库搜索功能
  20. 2021 非常火的 11 个微前端框架

热门文章

  1. 复制虚拟机/vmware中linux系统
  2. saltstack 快速入门
  3. Jenkins使用FTP进行一键部署及回滚(Windows)
  4. Cocos2d-x Tiled地图编辑器(一)基本使用
  5. Android入门 在ListView中如何进行精确的定位
  6. 李开复:拥抱美丽的网络应用模式——云计算
  7. java用poi实现对word读取和修改操作
  8. 【语音识别】语音端点检测及Python实现
  9. SSM框架-实现模糊查询-foreknow_cms
  10. mysql 非英文_非英文网站如何使用MySQL的字符集