zoukankan      html  css  js  c++  java
  • C#: 通过html调用WinForm 。。。。。

    完整测试代码:
    Form1.cs

    代码
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;

    namespace test
    {
        [System.Runtime.InteropServices.ComVisibleAttribute(
    true)]
        
    public partial class Form1 : Form
        {
            
    public Form1()
            {
                InitializeComponent();
            }

            
    private void Form1_Load(object sender, EventArgs e)
            {
                System.IO.FileInfo file 
    = new System.IO.FileInfo(Application.StartupPath+@"\test1.htm");
                webBrowser1.Url 
    = new Uri(file.FullName);
                webBrowser1.ObjectForScripting 
    = this;
            }

            
    private void button1_Click(object sender, EventArgs e)
            {
                
    object[] objects = new object[1];
                objects[
    0]="C#访问javascript脚本";
                webBrowser1.Document.InvokeScript(
    "messageBox", objects);
            }

            
    public void MyMessageBox(string message)
            {
                MessageBox.Show(message);
            }
        }
    }

    类WinOper

    代码
    [System.Runtime.InteropServices.ComVisibleAttribute(true)]
        
    public class WinOperationClass
        {
            
    public void MyMessageBox1()
            {
                MessageBox.Show(message);
            }

            
    public void ShowForm()
            {
                Form2 f2 
    = new Form2();
                f2.WindowState 
    = FormWindowState.Normal;
                f2.Show();
            }

        }

    网页

    代码
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
        
    <head>
            
    <title></title>
            
    <script language="javascript" type="text/javascript">
                
    function messageBox(message)
                {
                    alert(message);
                }
            
    </script>
        
    </head>
        
    <body>
        
            
    <button onclick="window.external.MyMessageBox('javascript访问C#代码')">javascript访问C#代码</button>
                
    <href="javascript:window.external.MyMessageBox1()">javascript访问C#代码</a>
            
    <href="javascript:window.external.ShowForm()">javascript访问C#代码</a>
        
    </body>
    </html>

    补充:

    webBrowser1.ObjectForScripting = this;
    这句话的意思是webBrowser1的脚本执行的Com绑定的方法是 从Form1 来的,

    而MyMessageBox1和ShowForm
    却是在WinOperationClass

    类里面的,肯定是不行的
    第一个可以是因为form1里面有MyMessageBox这个方法
    你吧MyMessageBox1和ShowForm移动到form1中或者把MyMessageBox移动到WinOperationClass里面,再把 webBrowser1.ObjectForScripting = this;这句改成
    WinOperationClass w=new WinOperationClass();
    webBrowser1.ObjectForScripting = w;

    就可以了
    推荐第二种……把所有的 Com可见的方法放在一个类里面好维护 

  • 相关阅读:
    全面监测网站信息
    linux 将Mysql的一张表导出至Excel格式文件
    渗透测试人员发现用户可无限输入密码次数,超过5次未锁定用户,存在暴力破解风险。解放方案:限制每个输入的用户名(不管存不存在该账户)登陆失败次数不超过5次,超过则锁定该用户
    mysql linux下数据库导出 常用操作
    find php.ini 和 php的执行目录 bin目录
    解决:The “https://packagist.laravel-china.org/packages.json” file could not be downloaded
    如何上传代码至GitHub
    7. Jmeter-逻辑控制器介绍与使用
    19、Linux命令对服务器内存进行监控
    20、Linux命令对服务器磁盘进行监控
  • 原文地址:https://www.cnblogs.com/Fooo/p/1701273.html
Copyright © 2011-2022 走看看