using OxfordExtenderWrapper; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Ipc; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace OTSMeasureApp.ServiceCenter.OxfordExtender { static class ExtenderWrapperIpc { static ExtenderIpcUI extenderRemoteObj =null; public static ExtenderIpcUI GetExtenderWrapper() { if (extenderRemoteObj == null) { Process[] processes = Process.GetProcessesByName("OxfordExtenderWrapper"); System.Diagnostics.Process p; if (processes.Length == 0) { p = System.Diagnostics.Process.Start(Application.StartupPath + "\\OxfordExtender\\OxfordExtenderWrapper.exe", "hide"); Thread.Sleep(800); IpcClientChannel channel = new IpcClientChannel(); //Register the channel with ChannelServices. ChannelServices.RegisterChannel(channel, false); extenderRemoteObj = (ExtenderIpcUI)Activator.GetObject(typeof(ExtenderIpcUI), "ipc://ExtenderServerChannel/ExtenderIpcUI"); extenderRemoteObj.ConnectToEDSHardware(); } else { IpcClientChannel channel = new IpcClientChannel(); //Register the channel with ChannelServices. ChannelServices.RegisterChannel(channel, false); extenderRemoteObj = (ExtenderIpcUI)Activator.GetObject(typeof(ExtenderIpcUI), "ipc://ExtenderServerChannel/ExtenderIpcUI"); extenderRemoteObj.ConnectToEDSHardware(); } } return extenderRemoteObj; } internal static void KillExtenderWrapperProcess() { Process[] processes = Process.GetProcessesByName("OxfordExtenderWrapper"); //if (processes.Length!=0) //{ // processes[0].Kill(); //} extenderRemoteObj.CloseExtender(); } } }