zoukankan      html  css  js  c++  java
  • JavaScript与C# Windows应用程序交互

    一、建立网页

    <html>
    <head>
           
    <meta http-equiv="Content-Language" content="zh-cn">
           
    <script language="javascript" type="text/javascript">
                  
    <!-- 提供给C#程序调用的方法 -->
                  
    function messageBox(message)
                  
    {
                        alert(message);
                 }

           
    </script>
    </head>

    <body>
           
    <!-- 调用C#方法 -->
           
    <button onclick="window.external.MyMessageBox('javascript访问C#代码')" >
           javascript访问C#代码
    </button>
    </body>
    </html>


    二、建立Windows应用程序

    1.       创建Windows应用程序项目

    2.       Form1窗体中添加WebBrowser控件

    3.       Form1类的上方添加

    [System.Runtime.InteropServices.ComVisibleAttribute(true)]

    这是为了将该类设置为com可访问。如果不进行该声明将会出错。出错信息如下图所示:

    如:

    [System.Runtime.InteropServices.ComVisibleAttribute(true)]

    public partial class Form1 : Form

    4.初始化WebBrowserUrlObjectForScripting两个属性。

    Url属性:WebBrowser控件显示的网页路径

    ObjectForScripting属性:该对象可由显示在WebBrowser控件中的网页所包含的脚本代码访问。

    Url属性设置为需要进行操作的页的URL路径。

    JavaScript通过window.external调用C#公开的方法。即由ObjectForScripting属性设置的类的实例中所包含的公共方法。具体设置例子如下:

    System.IO.FileInfo file = new System.IO.FileInfo("index.htm");

    // WebBrowser控件显示的网页路径

    webBrowser1.Url = new Uri(file.FullName);

    // 将当前类设置为可由脚本访问

    webBrowser1.ObjectForScripting = this;

    5C#调用JavaScript方法

    通过WebBrowser类的Document属性中的InvokeScript方法调用当前网页的Javascript方法。如:

    // 调用JavaScriptmessageBox方法,并传入参数

    object[] objects = new object[1];

    objects[0] = "C#访问JavaScript脚本";

    webBrowser1.Document.InvokeScript("messageBox", objects);

    完整代码如下:

    [System.Runtime.InteropServices.ComVisibleAttribute(true)]

    public partial class Form1 : Form

    {

        
    public Form1()

        
    {

            InitializeComponent();

            System.IO.FileInfo file 
    = new System.IO.FileInfo("index.htm");

            
    // WebBrowser控件显示的网页路径

            webBrowser1.Url 
    = new Uri(file.FullName);

            
    // 将当前类设置为可由脚本访问

            webBrowser1.ObjectForScripting 
    = this;

        }


     

        
    private void button1_Click(object sender, EventArgs e)

         
    {

            
    // 调用JavaScript的messageBox方法,并传入参数

            
    object[] objects = new object[1];

            objects[
    0= "C#访问JavaScript脚本";

            webBrowser1.Document.InvokeScript(
    "messageBox", objects);

        }


        
    // 提供给JavaScript调用的方法

        
    public void MyMessageBox(string message)

        
    {

            MessageBox.Show(message);
        }

    }

  • 相关阅读:
    tiger-complier 问题记录 类型检查
    leetcode 854. K-Similar Strings
    FPO优化简介
    [转载]深入解析结构化异常处理
    再看链接-WIN
    管道控制Telnet
    管道 简介与简单使用
    Detours 简介与简单使用
    netStat逆向分析
    Fport逆向分析以及C++实现
  • 原文地址:https://www.cnblogs.com/zhaobl/p/2031382.html
Copyright © 2011-2022 走看看