zoukankan      html  css  js  c++  java
  • C# 执行js

    原文链接:https://www.cnblogs.com/Ehtan/p/4361986.html#undefined

    添加COM引用: Microsoft Script Control 1.0

    1、添加帮助类

    using MSScriptControl;
    using System;
    using System.IO;
    
    namespace Javascript
    {
        /// <summary>
        /// JavascriptHelper
        /// </summary>
        public class JavascriptHelper
        {
            /// <summary>
            /// ScriptControl
            /// </summary>
            private ScriptControl jsControl = null;
    
            /// <summary>
            /// 构造方法
            /// </summary>
            public JavascriptHelper()
            {
                this.jsControl = new ScriptControl();
                this.jsControl.UseSafeSubset = true;
                this.jsControl.Language = "JScript";
            }
    
            /// <summary>
            /// 添加js文件
            /// </summary>
            /// <param name="filePath">js文件路径</param>
            public void AddJavaScriptFile(string filePath)
            {
                if (!File.Exists(filePath))
                {
                    throw new Exception("文件" + filePath + "不存在。");
                }
    
                string jsCode = File.ReadAllText(filePath);
                this.jsControl.AddCode(jsCode);
            }
    
            /// <summary>
            /// 添加js代码
            /// </summary>
            /// <param name="jsCode">js代码</param>
            public void AddJavascriptCode(string jsCode)
            {
                this.jsControl.AddCode(jsCode);
            }
    
            /// <summary>
            /// 执行js
            /// </summary>
            /// <param name="method">方法名</param>
            /// <returns>结果</returns>
            public dynamic Excecute(string method)
            {
                return this.jsControl.Eval(method);
            }
        }
    }
    

      

    2、测试代码

    using System;
    using System.IO;
    
    namespace Javascript
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                string plantext = "123456";
                string ciphertext = Rsa(plantext);
                Console.WriteLine(ciphertext);
                Console.ReadLine();
            }
    
            /// <summary>
            /// rsa加密算法
            /// </summary>
            /// <param name="plantext">明文</param>
            /// <returns>密文</returns>
            private static string Rsa(string plantext)
            {
                JavascriptHelper jsHelper = new JavascriptHelper();
                AddJSFile(jsHelper);
                string method = string.Format("encrypt('{0}');", plantext);
                string ciphertext = jsHelper.Excecute(method).ToString();
                return ciphertext;
            }
    
            /// <summary>
            /// 添加js文件
            /// </summary>
            /// <param name="jsHelper">JavascriptHelper</param>
            private static void AddJSFile(JavascriptHelper jsHelper)
            {
                string path = string.Empty;
                path = AppDomain.CurrentDomain.BaseDirectory + @"jssecurity.js";
                jsHelper.AddJavaScriptFile(path);
    
                path = AppDomain.CurrentDomain.BaseDirectory + @"js
    sa.js";
                jsHelper.AddJavaScriptFile(path);
            }
        }
    }

      

  • 相关阅读:
    在 Android 4.1上,分析 input -- android framework 部分 2
    Linux内核spin_lock、spin_lock_irq 和 spin_lock_irqsave 分析
    module_init 和 late_initcall 区别
    在 Android 4.4.4 上,分析 input -- android framework 部分
    Android 输入系统 与 按键
    INIT_WORK和INIT_DELAYED_WORK详解
    Android 中多点触摸协议
    android 电容屏(四):驱动调试之驱动程序分析篇 -- FocalTech
    android 电容屏(三):驱动调试之驱动程序分析篇
    android 电容屏(二):驱动调试之基本概念篇
  • 原文地址:https://www.cnblogs.com/xiao-sheng/p/10008550.html
Copyright © 2011-2022 走看看