一.本文程序设计和运行的软件环境  
(1).微软公司视窗2000服务器版  
(2)..Net   FrameWork   SDK   Beta   2  
二.程序设计的思路以及关键步骤的解决方法  
(1).把转换COM组件为WinForm组件:  
其实实现这种转换十分的简单,我们知道微软Web浏览器COM组件名称为“shdocvw.dll”,由于我们使用的是视窗2000,所以这个文件是存放在“c:\winnt\system32”目录中,如果你使用的是视窗98或者是视窗Me,那么此组件存放的位置是“c:\windows\system”。“Aximp.exe”文件后面有许多的参数,你可以通过“Aximp   /?”来了解,在本文中只使用下列简单的命令就可成功转换:  
Aximp   c:\winnt\system32\shdocvw.dll    
运行上述命令后就可以实现转换,并在当前目录中产生“SHDocVw.dll”和“AxSHDocVw.dll”二个文件。具体如下图:  
 
图01:转换COM组件为WinForm组件  
(2).在程序中使用转换后组件:  
在“AxSHDocVw.dll”中定义了命名空间“AxSHDocVw”,在此命名空间中定义了一个“AxWebBrowser”组件,这个组件中有若干个方法和属性,Visual   C#就是通过这些方法和属性来实现浏览器的一些基本功能的。使用此浏览器组件和使用其他的WinForm组件的过程是一样的,首先要导入命名空间,然后在程序中继承此命名空间中定义的浏览器组件,最后设定这个继承后的组件的属性和方法。具体如下:  
<   I   >   .导入命名空间,具体代码如下:  
using   AxSHDocVw   ;  
<   II>   .   继承此命名空间中定义的浏览器组件,具体代码如下:  
private   AxWebBrowser   axWebBrowser1   ;  
(3).通过转换后组件来实现浏览器的一些基本功能:  
浏览器的主要功能就是能够到指定的地址浏览信息,当然在具体的浏览中还有一些基本的功能,譬如:“前进”、“后退”、“停止”、“刷新”、“主页”等,这些功能都可以通过“AxWebBrowser”组件来实现。下面就来具体介绍:  
<   I   >   .浏览指定的地址:  
在程序中,网址是填写在组件“textbox1”中的,“浏览指定地址”功能是通过程序的按钮“转到”来实现的。下面是按钮“转到”按动后的程序代码:  
private   void   button1_Click   (   object   sender   ,   System.EventArgs   e   )  
{  
System.Object   nullObject   =   0   ;  
string   str   =   " "   ;  
System.Object   nullObjStr   =   str   ;  
Cursor.Current   =   Cursors.WaitCursor   ;  
axWebBrowser1.Navigate   (   textBox1.Text   ,   ref   nullObject   ,   ref   nullObjStr   ,   ref   nullObjStr   ,   ref   nullObjStr   )   ;  
Cursor.Current   =   Cursors.Default   ;  
}  
<   II   >   .浏览器的“前进”、“后退”、“停止”、“刷新”、“主页”功能:  
在“AxWebBrowser”组件中对这些功能都有一个具体的方法来与之对应,具体如下面代码:  
private   void   toolBar1_ButtonClick   (   object   sender   ,   ToolBarButtonClickEventArgs   e   )  
{  
//浏览器中的“后退”  
if   (   e.Button   ==   tb1   )  
{  
axWebBrowser1.GoBack   (   )   ;  
}  
//浏览器中的“前进”  
if   (   e.Button   ==   tb2   )  
{  
axWebBrowser1.GoForward   (   )   ;  
}  
//浏览器中的“停止”  
if   (   e.Button   ==   tb3   )  
{  
axWebBrowser1.Stop   (   )   ;  
}  
//浏览器中的“刷新”  
if   (   e.Button   ==   tb4   )  
{  
axWebBrowser1.Refresh   (   )   ;  
}  
//浏览器中的“主页”  
if   (   e.Button   ==   tb5   )  
{  
axWebBrowser1.GoHome   (   )   ;  
}  
 
}  
<   III   >   .当然掌握了上面的知识,你就可以用Visual   C#做出一个基本的浏览器了,但下面这些也是不可缺少的,因为下面这些代码将使得你做的浏览器更专业。下面代码的作用是使得浏览界面随着窗体的变化而变化,按钮和文本框也要随着窗体的变化而变化。  
button1.Anchor   =   (   AnchorStyles.Top   |   AnchorStyles.Right   )   ;  
//定位“转到”按钮组件与窗体的上、右边框保持一致  
textBox1.Anchor   =   (   (   AnchorStyles.Top   |   AnchorStyles.Left   )    
|   AnchorStyles.Right   )   ;  
//定位地址文本框组件与窗体的上、左、右边框保持一致  
axWebBrowser1.Anchor   =   (   (   (   AnchorStyles.Top   |   AnchorStyles.Bottom   )    
|   AnchorStyles.Left   )    
|   AnchorStyles.Right   )   ;  
//定位浏览器组件与窗体的上、下、左、右边框保持一致

三.源程序代码(brower.cs)  
了解有了上面的这些,就可以比较容易编写一个属于自己的浏览器了,下面是用Visual   C#做的浏览器源程序代码,他具备了IE浏览器的一些常用的功能。  
using   System   ;  
using   System.Drawing   ;  
using   System.Collections   ;  
using   System.ComponentModel   ;  
using   System.Windows.Forms   ;  
using   System.Data   ;  
using   AxSHDocVw   ;  
public   class   Form1   :   Form  
{  
private   ToolBar   toolBar1   ;  
private   ToolBarButton   tb1   ;  
private   ToolBarButton   tb2   ;  
private   ToolBarButton   tb3   ;  
private   ToolBarButton   tb4   ;  
private   ToolBarButton   tb5   ;  
private   Label   label1   ;  
private   TextBox   textBox1   ;  
private   Button   button1   ;  
private   AxWebBrowser   axWebBrowser1   ;  
private   System.ComponentModel.Container   components   =   null   ;  
public   Form1   (   )  
{  
InitializeComponent   (   )   ;  
}  
//清除程序中使用过的资源  
protected   override   void   Dispose   (   bool   disposing   )  
{  
if   (   disposing   )  
{  
if   (   components   !=   null   )    
{  
components.Dispose   (   )   ;  
}  
}  
base.Dispose   (   disposing   )   ;  
}  
//初始化窗体中的各个组件  
private   void   InitializeComponent   (   )  
{  
tb1   =   new   ToolBarButton   (   )   ;  
tb2   =   new   ToolBarButton   (   )   ;  
tb3   =   new   ToolBarButton   (   )   ;  
toolBar1   =   new   ToolBar   (   )   ;  
tb4   =   new   ToolBarButton   (   )   ;  
tb5   =   new   ToolBarButton   (   )   ;  
button1   =   new   Button   (   )   ;  
textBox1   =   new   TextBox   (   )   ;  
axWebBrowser1   =   new   AxWebBrowser   (   )   ;  
label1   =   new   Label   (   )   ;  
(   (   System.ComponentModel.ISupportInitialize   )   (   this.axWebBrowser1   )   ).BeginInit   (   )   ;  
this.SuspendLayout   (   )   ;  
 
tb1.Text   =   "后退 "   ;  
tb2.Text   =   "前进 "   ;  
tb3.Text   =   "停止 "   ;  
tb4.Text   =   "刷新 "   ;  
tb5.Text   =   "主页 "   ;  
 
toolBar1.Appearance   =   ToolBarAppearance.Flat   ;  
toolBar1.BorderStyle   =   System.Windows.Forms.BorderStyle.FixedSingle   ;  
//在工具栏中加入按钮  
toolBar1.Buttons.Add   (   tb1   )   ;  
toolBar1.Buttons.Add   (   tb2   )   ;  
toolBar1.Buttons.Add   (   tb3   )   ;  
toolBar1.Buttons.Add   (   tb4   )   ;  
toolBar1.Buttons.Add   (   tb5   )   ;  
toolBar1.DropDownArrows   =   true   ;  
toolBar1.Name   =   "toolBar1 "   ;  
toolBar1.ShowToolTips   =   true   ;  
toolBar1.Size   =   new   System.Drawing.Size   (   612   ,   39   )   ;  
toolBar1.TabIndex   =   0   ;  
toolBar1.ButtonClick   +=   new   ToolBarButtonClickEventHandler   (   toolBar1_ButtonClick   )   ;  
//定位“转到”按钮组件与窗体的上、右边框保持一致  
button1.Anchor   =   (   AnchorStyles.Top   |   AnchorStyles.Right   )   ;  
button1.DialogResult   =   DialogResult.OK   ;  
button1.Location   =   new   System.Drawing.Point   (   544   ,   45   )   ;  
button1.Name   =   "button1 "   ;  
button1.Size   =   new   System.Drawing.Size   (   40   ,   23   )   ;  
button1.TabIndex   =   3   ;  
button1.Text   =   "转到 "   ;  
button1.Click   +=   new   System.EventHandler   (   button1_Click   )   ;  
//定位地址文本框组件与窗体的上、左、右边框保持一致  
textBox1.Anchor   =   (   (   AnchorStyles.Top   |   AnchorStyles.Left   )    
|   AnchorStyles.Right   )   ;  
textBox1.Location   =   new   System.Drawing.Point   (   64   ,   47   )   ;  
textBox1.Name   =   "textBox1 "   ;  
textBox1.Size   =   new   System.Drawing.Size   (   464   ,   21   )   ;  
textBox1.TabIndex   =   2   ;  
textBox1.Text   =   " "   ;  
//定位浏览器组件与窗体的上、下、左、右边框保持一致  
axWebBrowser1.Anchor   =   (   (   (   AnchorStyles.Top   |   AnchorStyles.Bottom   )    
|   AnchorStyles.Left   )    
|   AnchorStyles.Right   )   ;  
axWebBrowser1.Enabled   =   true   ;  
axWebBrowser1.Location   =   new   System.Drawing.Point   (   0   ,   72   )   ;  
axWebBrowser1.Size   =   new   System.Drawing.Size   (   608   ,   358   )   ;  
axWebBrowser1.TabIndex   =   4   ;  
 
label1.Location   =   new   System.Drawing.Point   (   16   ,   48   )   ;  
label1.Name   =   "label1 "   ;  
label1.Size   =   new   System.Drawing.Size   (   48   ,   16   )   ;  
label1.TabIndex   =   1   ;  
label1.Text   =   "地址: "   ;  
 
this.AutoScaleBaseSize   =   new   System.Drawing.Size   (   6   ,   14   )   ;  
this.ClientSize   =   new   System.Drawing.Size   (   612   ,   433   )   ;  
 
this.Controls.Add   (   axWebBrowser1   )   ;  
this.Controls.Add   (   button1   )   ;  
this.Controls.Add   (   textBox1   )   ;  
this.Controls.Add   (   label1   )   ;  
this.Controls.Add   (   toolBar1   )   ;  
this.FormBorderStyle   =   FormBorderStyle.FixedSingle   ;  
this.Name   =   "Form1 "   ;  
this.Text   =   "visual   C#做浏览器 "   ;  
(   (   System.ComponentModel.ISupportInitialize   )   (   this.axWebBrowser1   )   ).EndInit   (   )   ;  
this.ResumeLayout   (   false   )   ;  
 
}  
static   void   Main   (   )    
{  
Application.Run   (   new   Form1   (   )   )   ;  
}  
//实现浏览器主要功能  
private   void   toolBar1_ButtonClick   (   object   sender   ,   ToolBarButtonClickEventArgs   e   )  
{  
//浏览器中的“后退”  
if   (   e.Button   ==   tb1   )  
{  
axWebBrowser1.GoBack   (   )   ;  
}  
//浏览器中的“前进”  
if   (   e.Button   ==   tb2   )  
{  
axWebBrowser1.GoForward   (   )   ;  
}  
//浏览器中的“停止”  
if   (   e.Button   ==   tb3   )  
{  
axWebBrowser1.Stop   (   )   ;  
}  
//浏览器中的“刷新”  
if   (   e.Button   ==   tb4   )  
{  
axWebBrowser1.Refresh   (   )   ;  
}  
//浏览器中的“主页”  
if   (   e.Button   ==   tb5   )  
{  
axWebBrowser1.GoHome   (   )   ;  
}  
 
}  
//浏览指定的Web地址  
private   void   button1_Click   (   object   sender   ,   System.EventArgs   e   )  
{  
System.Object   nullObject   =   0   ;  
string   str   =   " "   ;  
System.Object   nullObjStr   =   str   ;  
Cursor.Current   =   Cursors.WaitCursor   ;  
axWebBrowser1.Navigate   (   textBox1.Text   ,   ref   nullObject   ,   ref   nullObjStr   ,   ref   nullObjStr   ,   ref   nullObjStr   )   ;  
Cursor.Current   =   Cursors.Default   ;  
}  
}  
四.编译源程序和编译后的执行程序的运行界面  
在经过如下命令编译后,就可以得到可以自己的浏览器了  
csc   /t:winexe   /r:AxSHDocVw.dll   /r:SHDocVw.dll   /r:system.dll      
/r:system.windows.forms.dll   /r:system.drawing.dll   brower.cs    
图02:用Visual   C#做的“浏览器”的运行界面  
五.总结  
至此一个功能相对完备的“浏览器”就算完成了,其实用Visual   C#做“浏览器”的过程,也就是Visual   C#中使用COM组件的过程。掌握了COM组件在Visual   C#使用方法,就可以利用Visual   C#编写出功能更强大,适应性更强的软件来,但编写的过程又十分的简单。

转载于:https://www.cnblogs.com/freedom831215/archive/2010/08/19/1803513.html

AxWebBrowser相关推荐

  1. 关于AxWebBrowser关闭网页时的关闭提示

    有谁知道 如何在axwebbrowser关闭时提示离开页面消息:如点击ie中百度问答选项卡的关闭按钮(在回答中输入部分内容) 提示 转载于:https://www.cnblogs.com/kongll ...

  2. Customizing AxWebBrowser, make it powerful

    如你所知,AxWebBrowser所提供的功能着实有限,在实际应用当中,我们可能需要更自由的定制自己的浏览器组件. 我一直没有找到.NET下如同Delphi的WebBrowserEx或EmbedWB一 ...

  3. 包含mshtml, SHDocVw, AxSHDocVw的引用以及如何添加axWebBrowser控件到工具箱

    1.添加mshtml引用: 添加下面的引用编译时会引发后面错误 添加正确位置(C:\Program Files (x86)\Microsoft.NET\Primary Interop Assembli ...

  4. AxWebBrowser打开本地文件

    this.CurrentAxWebBrowser.Navigate("file:///"+Application.StartupPath+"/HelpPage.htm&q ...

  5. (To Me Just)c#中的WebBrowser类的使用注意事项!

    Visual C# 打造 "浏览器"      try      {       if(tabControl.SelectedIndex == 0)       {         ...

  6. Reporting Service

    研究了一下reportServices,还没有完全得其精髓,东拼西凑一个小例子如下:(实现搜索报表,保存报表,以及现实在form上),希望对初学者有些帮助. ********************* ...

  7. WebBrowser页面与WinForm交互技巧

    话说有了WebBrowser类,终于不用自己手动封装SHDocVw的AxWebBrowser这个ActiveX控件了.这个类如果仅仅作为一个和IE一模一样浏览器,那就太没意思了(还不如直接用IE呢). ...

  8. 用Visual C#打造多页面网页浏览器

    一.简介 大家都知道,目前比较流行的网络浏览器如Mozilla FireFox以及MyIE2等都具有多页面浏览功能,每打开一个新的页面都自动产生一个新的选项卡页面,页面的关闭也十分简便.这种设计思想使 ...

  9. WebBrowser控件打开https站点

    于需要重定向https类型网站,但自己的https证书是自签名的,总是提示'网站的安全证书存在问题'. 鉴此,查了些许资料,然而许多方法对我并没有什么卵用,不过以后还是可用用上的,故整理下[当然其中也 ...

最新文章

  1. java 写一个商店_Java Web开发之基于Session的购物商店实现方法
  2. 区块链 稳定币和法定数字货币简介
  3. 好消息:VS 2008 and .NET 3.5 Beta 2 发布了
  4. VS2015 vc++ 项目出现new.h找不到的错误
  5. [深度学习-实践]GAN入门例子-利用Tensorflow Keras与数据集CIFAR10生成新图片
  6. 二元函数求最小值 c语言,遗传算法C语言源代码(一元函数和二元函数)
  7. Spring Cloud Ribbon 负载均衡客户端调用示例
  8. 使用Kotlin的Android Toast
  9. 在centos linux上安装jdk7
  10. new与delete函数使用方法以及注意事项
  11. PHP正则提取超链接地址及标题,PHP正则表达式提取超链接及其标题
  12. 手把手教你win10下lex与yacc的安装
  13. 约瑟夫环(Data structure and algorithm -C language)—— #YU
  14. AutoCAD 2021 安装 详细教程
  15. 令人头秃,SaaS部署和本地部署该怎么选?
  16. 鼎捷t100架构_新合发集团借助鼎捷T100信息化全面升级!
  17. 5项基因改造让你拥抱大财富
  18. 网卡MAC地址相关信息大全(整理)(上)
  19. 怎么给Mongodb设置账号密码(跳坑版)
  20. OJ每日一练——雇佣兵

热门文章

  1. Grafana、M3DB、Prometheus 集成 关于M3DB集成的文章本就不多,快来瞅瞅吧!!!说不定有用呢?
  2. 北大mooc课程平台
  3. Python机器学习:多项式回归与模型泛化007偏差方差平衡
  4. 机器人softmove_ABB 工业机器人 SoftMove功能介绍
  5. 2018年C语言期末考试题及答案,HZNUOJ--2018年秋季学期程序设计基础(C语言)期末考试(补题)...
  6. java 时间类型添加_java date类型 怎么 插入 时间 到 数据库
  7. idea修改完jdbc文件后没有更新_JDBC+MySQL入门案例
  8. c#sql数据导出到excel
  9. hive case when语法_SQL中CASE表达式的妙用
  10. java录制pcm文件_AudioRecord录制PCM格式的语音示例