运行C#代码片段

【注意】请勿设计任何可能侵犯Quicker软件或第三方权益的代码或其他恶意代码。如有违反将直接停用Quicker帐号,请知悉。



通过运行C#代码实现更高级的功能。

此功能仅限对C#熟悉的用户谨慎使用。

此功能使用cs-script组件实现,参考:https://github.com/oleg-shilo/cs-script 为减小安装包,仅引用了CS-Script.lib,支持C#6.0语法。


参数

【脚本内容】要运行的c#代码。


image.png


C#代码中必须包含一个Exec静态函数,接受IStepContext类型的参数,参考如下示例:


// 引用必要的命名空间
using System.Windows.Forms;

// Quicker将会调用的函数
public static void Exec(Quicker.Public.IStepContext context){
  var oldValue = context.GetVarValue("varName");  // 读取动作里的变量值
  MessageBox.Show(oldValue as string);
  context.SetVarValue("varName", "从脚本输出的内容。"); // 向变量里输出值
}


【引用DLL库】脚本内容需要引用(reference)的其他.Net库文件的完整路径。 每行写一个。

【允许缓存程序集】是否允许缓存代码编译后的程序集,以方便下次运行时直接加载程序集,提升启动速度。

  • 程序集缓存每次升级版本会丢弃。
  • 缓存目录为Windows临时文件目录。


【失败后停止】c#运行错误时,停止当前动作。





调用


IStepContext 接口

Exec函数需要接收一个IStepContext接口类型的参数,从而实现Quicker动作变量的读写。

接口的声明如下:

namespace Quicker.Public
{
    /// <summary>
    /// 脚本参数接口
    /// </summary>
    public interface IStepContext
    {
        /// <summary>
        /// 获取变量值
        /// </summary>
        /// <param name="varName">变量名</param>
        /// <returns>返回的结果类型,根据需要进行类型转换。</returns>
        object GetVarValue(string varName);

        /// <summary>
        /// 设置变量值
        /// </summary>
        /// <param name="varName">变量名</param>
        /// <param name="value">值,需要根据变量的类型传入合适类型的值</param>
        void SetVarValue(string varName, object value);
    }
}


GetVarValue读取变量值,SetVarValue输出变量值。请在必要时进行类型转换。


错误处理

如果遇到了错误,直接抛出异常即可。


引用外部dll文件


//css_reference office.dll;
//css_reference  C:\Program Files ((x86))\TestProj\PInvoke.Kernel32.dll


所有// css_ *指令都应通过将分隔符加倍来转义任何内部CS-Script分隔符。 例如,''script(today).cs'的// css_include应该转义为括号,因为它们是指令定界符。 因此,正确的语法应如下所示:'//css_include script((today)).cs'


关于更多的指令说明文档,请参考:https://www.cs-script.net/cs-script/help-legacy/Directives.html



更新历史

  • 1.1.12 加入此模块
语雀在语雀上查看