`
baobeituping
  • 浏览: 1067861 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

C# WinForm程序如何与js交互

    博客分类:
  • .NET
 
阅读更多

一、建立网页
<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>
<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.初始化WebBrowser的Url与ObjectForScripting两个属性。

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;
5.C#调用JavaScript方法

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


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

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);
    }
}
******************************************
在 使用C#开发winform程序过程中,我们经常会碰到嵌入了一个WebBrowser的浏览器控件。很多时候,我们需要在程序里控制网页的显示方式,或 者调用网页当中的某个JS函数,反过来,也有可能网页也需要调用程序当中的函数来实现某些功能。下面我给大家讲解下如何互相进行交互。
    程序调用JS脚本如下:
    JS脚本代码:

 <script language=”javascript”>
 function  ShopXG(infor)
 {
  alert(‘我要开网店、携购独立网店系统,模板最全,最专业的系统!’);
  return;
 }
 </script>
 
    C#代码调用如下:
 using System.Security.Permissions;
 
    注意: 类定义前需要加上下面两行,否则调用失败!
 [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
 [System.Runtime.InteropServices.ComVisibleAttribute(true)]
 
    调用的函数:
 webBrowser1.Document.InvokeScript("ShopXG ", new string[] {‘ssss’});
 
    JS中调用C#函数示例:
    C#函数如下:
 public void ShowMessage(string message)
 {
  MessageBox.Show(“免费开网店,携购独立网店系统诚邀您的加盟!”);
 }
 
    JS里的调用方法:
 <script language=”javascript”>
 function  InvokeFunc()
 {
  window.external.ShowMessage(‘呵呵’);
 }
 </script>
 
    在使用C#开发winform程序过程中,我们经常会碰到嵌入了一个WebBrowser的浏览器控件。很多时候,我们需要在程序里控制网页的显示方式, 或者调用网页当中的某个JS函数,反过来,也有可能网页也需要调用程序当中的函数来实现某些功能。下面我给大家讲解下如何互相进行交互。
    程序调用JS脚本如下:
    JS脚本代码:
    <script language=”javascript”>
    function ShopXG(infor)
    {
        alert(‘我要开网店、携购独立网店系统,模板最全,最专业的系统!’);
        return;
    }
    </script>
    C#代码调用如下:

 using System.Security.Permissions;
 
    注意: 类定义前需要加上下面两行,否则调用失败!
 [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
 [System.Runtime.InteropServices.ComVisibleAttribute(true)]
 
    调用的函数:
 webBrowser1.Document.InvokeScript("ShopXG ", new string[] {‘ssss’});
 
    JS中调用C#函数示例:
    C#函数如下:
    public void ShowMessage(string message)
    {
        MessageBox.Show(“免费开网店,携购独立网店系统诚邀您的加盟!”);
    }
    JS里的调用方法:
    <script language=”javascript”>
    function InvokeFunc()
    {
        window.external.ShowMessage(‘呵呵’);
    }
    </script>
***********************************
说明:

webBrowser1.ObjectForScripting = this;中的this是指webbrower所在的类JsScript脚本可调用的方法必须写在webbrower所在的类(窗体)using System.Security.Permissions; 注意: 类定义前需要加上下面两行,否则调用失败! [PermissionSet(SecurityAction.Demand, Name = "FullTrust")] [System.Runtime.InteropServices.ComVisibleAttribute(true)]

分享到:
评论

相关推荐

    c# winform与html交互

    在IT领域,C# WinForm与HTML的交互是构建混合应用程序的一个重要方面,尤其是在桌面应用与Web技术结合的场景中。VS2015(Visual Studio 2015)提供了一个强大的开发环境,支持这样的跨平台交互。下面将详细阐述这个...

    WinForm下WebView2实现JS与C#交互Demo

    本示例“WinForm下WebView2实现JS与C#交互Demo”就展示了如何在C#中使用WebView2控件来实现JavaScript与C#之间的双向通信。 首先,确保已安装Microsoft Edge WebView2 SDK。可以通过NuGet包管理器安装`Microsoft....

    Unity3D与Winform交互

    为了与Winform交互,我们可以利用JavaScript和C#之间的桥接技术,如UnityWebPlayer或Unity WebGL Player。通过JavaScript接口(JSAPI)在WebGL实例中定义函数,然后在Winform应用中使用WebBrowser控件加载Unity3D...

    C# WInForm窗体嵌入外部EXE程序.zip

    在C# WinForm应用开发中,有时我们需要将外部的EXE程序集成到我们的窗体(Form)中,以便用户可以在一个统一的界面下操作多个应用程序。这个过程涉及到进程管理、控件创建以及交互技术。本篇文章将深入探讨如何在...

    C#winform调用webapi.rar

    1. **C# WinForm编程**:WinForm是.NET Framework的一部分,提供了一个用于创建交互式图形用户界面的平台。在C# WinForm应用中,我们可以创建控件、处理事件、进行数据绑定等。调用WebAPI通常会在按钮点击事件或其他...

    c#WINFORM与WEB的直接交互非webservice方法

    这样,WinForm应用可以控制WebBrowser控件执行JavaScript,与网页中的元素进行交互,甚至触发AJAX请求。 3. **Web API间接交互**:虽然不是直接与Web服务器交互,但可以创建一个本地的Web API服务,WinForm应用调用...

    c# winform webbrowser页面中js调用winform类方法

    在C# WinForm应用中,有时我们需要实现网页(HTML页面)与WinForm应用程序之间的交互,特别是在使用`WebBrowser`控件展示网页时。这个过程通常涉及到JavaScript(js)调用WinForm类的方法,以实现一些特定功能或者...

    winform窗体中嵌入网页与JS交互

    在Windows Forms(Winform)应用开发中,有时候我们需要在窗体中展示网页内容,并且能够与网页中的JavaScript代码进行交互,实现数据的双向传递。这种技术通常用于在桌面应用程序中集成Web功能,例如显示动态更新的...

    c# winform 中怎样来调用B/S中的JavaScript的方法

    在C# WinForm应用中调用B/S架构中的JavaScript方法主要涉及到的是客户端与服务器端的交互问题。在传统的Web开发中,B/S架构通常由浏览器(客户端)与服务器(后端)组成,而C# WinForm是桌面应用程序,它们之间进行...

    C# Winform 嵌入Google浏览器.zip

    同时,CefSharp提供的JavaScript交互能力使我们能够方便地在C#和JavaScript之间传递信息,增强了桌面应用的功能性和用户体验。在实际开发中,可以根据具体需求调整CefSharp的配置和功能,以满足更复杂的应用场景。

    c#winform和flash交互

    本文将深入探讨如何在C# WinForms应用程序中与Flash进行交互,实现两者之间的数据通信和功能集成。 首先,理解WinForms和Flash交互的基本原理至关重要。Flash可以通过ActionScript提供对外部接口(External ...

    C# winform cefsharp63 示例代码包含与js交互,chrome63,支持mp3,mp4,摄像头

    在本文中,我们将深入探讨如何使用C# WinForm结合CefSharp63库来创建一个功能丰富的应用程序,该程序能够实现JavaScript交互、播放MP3和MP4媒体文件以及调用摄像头。CefSharp是一个.NET封装的Chromium Embedded ...

    c# winform 里调用javascrip的方法

    在C# WinForm应用程序中调用JavaScript主要涉及以下几个步骤: 1. **添加WebBrowser控件:** 在WinForm中拖拽一个WebBrowser控件到窗体上。 2. **加载HTML文档:** 可以通过`Navigate`方法或者`DocumentText`...

    C# Winform中使用WebBroser与Html进行交互

    在C# WinForm应用开发中,我们经常需要与HTML页面进行交互,这通常是通过集成WebBrowser控件来实现的。WebBrowser控件是.NET Framework提供的一种强大工具,它允许我们在桌面应用程序中嵌入一个Web浏览器,进而实现...

    WinForm GeckoFx33 Demo JS与C#互交 窗口浏览器之间的相互调用

    描述中的"WinForm GeckoFx33 Demo JS与C#互交 窗口浏览器之间的相互调用"进一步确认了这是一个关于如何在WinForm应用中使用GeckoFX33来创建一个可与JavaScript交互的浏览器窗口的实例。这种交互性是通过特定的API...

    使用Xilium.CefGlue实现浏览器js与winform程序交互

    VS2013,.net 3.5下运行,可实现: 浏览器主动调用C#函数传参给C#并获取返回值 C#主动获取浏览器数据 C#向浏览器发送数据, 浏览器js获取到数据后alert出来 编译后在xp下可正常运行。

    WinForm与百度地图交互

    首先,要实现WinForm与百度地图的交互,我们需要做以下准备: 1. 注册百度地图API:访问百度地图开放平台(http://lbsyun.baidu.com/),注册账号并创建应用,获取API密钥。这个密钥将在之后的代码中用于验证请求...

    C#实现Winform中打开网页页面的方法

    在C#编程中,开发Windows桌面应用程序时,我们经常需要在Winform中集成网页浏览功能。这通常通过使用`WebBrowser`控件来实现。本文将详细介绍如何在C#的Winform应用程序中打开并控制网页页面。 首先,最简单直接的...

    EChartsNet-master_C#_C#winform_echarts_

    EChartsNet是一个基于C#的项目,用于在Windows应用程序(如Winform和WPF)中集成ECharts图表库。ECharts本身是百度开发的一个开源JavaScript图表库,它提供了丰富的交互式图表,包括折线图、柱状图、饼图、散点图等...

    C# winform嵌入谷歌内核浏览器,Xilium.CefGlue

    此外,`ChromiumWebBrowser`控件支持JavaScript与C#代码之间的交互。通过实现`IJavascriptCallback`接口,你可以在JavaScript中调用C#的方法,反之亦然。这使得你可以利用JavaScript的便利性来增强应用的功能,同时...

Global site tag (gtag.js) - Google Analytics