//获取插件名称
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;
}