WebBrowser

简介: 原文:WebBrowser做WEB开发的想把网页做成应用程序的界面,开发应用程序的又想把程序界面做得和WEB一样。本文介绍一下用HTML做软件UI用到的的一些技术。 其实HTML UI也不是什么新鲜事了,Norton Antivirus从几年前的版本就开始用了,vs.net2002中的开始页也用了这个技术。
原文: WebBrowser

WEB开发的想把网页做成应用程序的界面,开发应用程序的又想把程序界面做得和WEB一样。本文介绍一下用HTML做软件UI用到的的一些技术。

其实HTML UI也不是什么新鲜事了,Norton Antivirus从几年前的版本就开始用了,vs.net2002中的开始页也用了这个技术。

 from:http://wuchang.cnblogs.com/archive/2006/06/12/423978.html

 

[方案一,适用于vs2002~2005(vb/delphi等类似)]

1、导入web browser COM控件

 

 2、实现IDocHostUIHandler接口,MSDN中有介绍WebBrowser Customization

 IDocHostUIHandler接口有十几个方法,这里我们只关心这个:void IDocHostUIHandler.GetExternal(out object ppDispatch)

当在浏览器脚本中调用 window.external时就会调用这个方法,我们需要在返回一个对象。

如:



public   class  Form1 : Form, IDocHostUIHandler



        
public  Form1()

        
{

            InitializeComponent();

            
object flags=0;

            
object targetFrame=String.Empty;

            
object postData=String.Empty;

            
object headers=String.Empty;

            
this.WebBrowser.Navigate( "about:blank"ref flags, ref targetFrame, ref postData, ref headers );

            ICustomDoc cDoc
=(ICustomDoc)this.WebBrowser.Document;

            cDoc.SetUIHandler( (IDocHostUIHandler)
this );

            
this.WebBrowser.Navigate(@".",ref flags, ref targetFrame, ref postData, ref headers );

        }


              
void  IDocHostUIHandler.GetExternal( out   object  ppDispatch)

              
{

                     ppDispatch 
= new Hello ();

              }




添加

Hello 类的代码,注意:此类一定要加上 ComVisible=true 特性,或是给整个程序集加上 [assembly: ComVisible( true )]

      [ComVisible( true )]

    
public   class  Hello

       {

              
public   void  Haha( string  msg)

              {

           MessageBox.Show( msg );

               

              }

       }

 

 

这样,就可以在浏览器中用脚本这样调用

 

       < script language = " JavaScript "  id = " clientEventHandlersJS " >

       
<!--

       
function  callHostUI(msg)
       {
              window.external. Haha (msg);
       }

callHostUI(“hello wuChang”);

       
-->

       
</ script >

  [ 方案二,适用于 vs2005]

 VS2005提供的WebBrowser控件,已经实现了IDocHostUIHandler接口,使用起来就更简单了。

WebBrowser提供了public Object ObjectForScripting { get; set; }

属性,只需要这样用就行了。

webBrowser1.ObjectForScripting = new Hello ();

 

调用浏览器用的脚本可以这样

webBrowser1.Document.InvokeScript("js函数名",

            new String[] { "参数列表 " });

更多的内容在.net FW SDK (ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.chs/CPref17/html/P_System_Windows_Forms_WebBrowser_ObjectForScripting.htm)里有介绍。

 .net2.0System.Windows.Forms name spaces中提供HtmlDocumentHtmlElement等访问HTML元素的控件,使用方法在SDK里有,这里就不介绍了。

目录
相关文章
|
JavaScript 前端开发 C#
WPF技术之WebBrowser控件
WPF WebBrowser控件用于在WPF应用程序中嵌入浏览器功能。
284 0
webBrowser 加载网页
事件   webBrowser_DocumentCompleted      private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (webBrowser.
728 0
|
Web App开发 C#
C#中WebBrowser控件的使用
今天在YouTube上看了一个关于WebBrowser控件用法的小视频,做一下总结。 首先创建一个WinForm程序,拖入一个textbox控件和一个button按钮,然后拖入一个panel控件,如图所示: 拖入panel控件后,找到WebBrowser控件并双击,WebBrowser控件就...
1284 0
WebBrowser!
原文:WebBrowser! 我现在先放一些基础的文章在这里,以后再放别的上来官方范例连接http://www.microsoft.com/china/msdn/library/langtool/vcsharp/OvervwWebBrowExp.mspxQ&A    2005年5月21日 0:14:19 Q: 新键入的地址不能在新建好的窗口里打开:A:每个新窗口(或者是Tab页)新建的时候也要新建一个浏览器,然后新建的浏览器的父框架是新建的那个窗口(或者是Tab页)。
878 0
|
JavaScript
webBrowser.execWB的完整说明
原文:webBrowser.execWB的完整说明 在不是js打开的页面上按window.close(), 会有提示框,很烦,现在可以不用了,没有提示框直接关闭窗口。试试下面代码: 试着改变参数会得到其他一些功能: WebBrowser.
933 0