0
点赞
收藏
分享

微信扫一扫

286-C# 插件使用和调用(内部)

//获取插件名称 
string PluginsName = "Plg_sc_GS_BIZ_LoginBrowser";

//获取插件实例并检测版本
var rs_plg = PlgManager<IGS_BIZ_LoginBrowser>.GetPlugins(PluginsName);
if (rs_plg.Success == false) throw new Exception(rs_plg.Msg);


Para[ParaName_Method] = "ShowGongShangBrowser_Cef";
Para[ParaName_KillWhenComplete] = false;

if (progressObject == null) progressObject = new progressInfoClass();

Thread t = new Thread(() =>
{
    //通过EXE_X86壳应用程序间接调用指定的方法
    var rs = WinEXEInvoke<bool>("Plg_sc_EXE_X86.exe", Para, null, 300, progressObject);

});
t.IsBackground = true;
t.SetApartmentState(ApartmentState.STA);
t.Start();

Plg_sc_EXE_X86项目里,main方法,分别根据参数执行:

        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            string debugFile = System.IO.Path.Combine(Application.StartupPath, @"textPara\debug.txt");

            if (System.IO.File.Exists(debugFile) == true)
            {
                MessageBox.Show("暂停,请附加调试代码后确认(Plg_sc_EXE_X86)。");
            }


            string CommandString = "";

            if (args.Length > 0)
            {
                CommandString = args[0];
            }


            EXEAPI.Run(MethodSet, CommandString);
        }

运行指定的方法:

        /// <summary>
        /// 运行指定的方法。
        /// </summary>
        /// <param name="Method">要运的方法名称</param>
        /// <param name="DicPara">传入的参数</param>
        /// <param name="prInfo">进度对象</param>
        /// <returns></returns>
        private static object MethodSet(string Method, Dictionary<string, object> DicPara, progressChangedEvent.progressInfoClass prInfo)
        {

            object rs = null;
            switch (Method)
            {
                case "ShowTaxBrowser_IE":
                    PluginsInterface.Tax_BIZ_LoginBrowser ShowTaxBrowser_IE = new Tax_BIZ_LoginBrowser();
                    rs = ShowTaxBrowser_IE.ShowTaxBrowser_IE(DicPara, prInfo);

                    break;
                case "ShowTaxBrowser_Cef":
                    PluginsInterface.Tax_BIZ_LoginBrowser ShowTaxBrowser_Cef = new Tax_BIZ_LoginBrowser();
                    rs = ShowTaxBrowser_Cef.ShowTaxBrowser_Cef(DicPara, prInfo);
                    break;
                case "ShowGongShangBrowser_Cef":
                    PluginsInterface.GS_BIZ_LoginBrowser ShowGongShangBrowser_Cef = new GS_BIZ_LoginBrowser();
                    rs = ShowGongShangBrowser_Cef.ShowGongShangBrowser_Cef(DicPara, prInfo);
                    break;
                default:
                    throw new Exception($"输入的方法【{Method}】不存在,请检查方法名称或在EXE_86程序中做相应设置。");

            }

            return rs;
        }
举报

相关推荐

0 条评论