ExtenderWrapperIpc.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using OxfordExtenderWrapper;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Diagnostics;
  5. using System.Linq;
  6. using System.Runtime.Remoting.Channels;
  7. using System.Runtime.Remoting.Channels.Ipc;
  8. using System.Text;
  9. using System.Threading;
  10. using System.Threading.Tasks;
  11. using System.Windows.Forms;
  12. namespace OTSMeasureApp.ServiceCenter.OxfordExtender
  13. {
  14. static class ExtenderWrapperIpc
  15. {
  16. static ExtenderIpcUI extenderRemoteObj =null;
  17. public static ExtenderIpcUI GetExtenderWrapper()
  18. {
  19. if (extenderRemoteObj == null)
  20. {
  21. Process[] processes = Process.GetProcessesByName("OxfordExtenderWrapper");
  22. System.Diagnostics.Process p;
  23. if (processes.Length == 0)
  24. {
  25. p = System.Diagnostics.Process.Start(Application.StartupPath + "\\OxfordExtender\\OxfordExtenderWrapper.exe", "hide");
  26. Thread.Sleep(800);
  27. IpcClientChannel channel = new IpcClientChannel();
  28. //Register the channel with ChannelServices.
  29. ChannelServices.RegisterChannel(channel, false);
  30. extenderRemoteObj = (ExtenderIpcUI)Activator.GetObject(typeof(ExtenderIpcUI), "ipc://ExtenderServerChannel/ExtenderIpcUI");
  31. extenderRemoteObj.ConnectToEDSHardware();
  32. }
  33. else
  34. {
  35. IpcClientChannel channel = new IpcClientChannel();
  36. //Register the channel with ChannelServices.
  37. ChannelServices.RegisterChannel(channel, false);
  38. extenderRemoteObj = (ExtenderIpcUI)Activator.GetObject(typeof(ExtenderIpcUI), "ipc://ExtenderServerChannel/ExtenderIpcUI");
  39. extenderRemoteObj.ConnectToEDSHardware();
  40. }
  41. }
  42. return extenderRemoteObj;
  43. }
  44. internal static void KillExtenderWrapperProcess()
  45. {
  46. Process[] processes = Process.GetProcessesByName("OxfordExtenderWrapper");
  47. //if (processes.Length!=0)
  48. //{
  49. // processes[0].Kill();
  50. //}
  51. extenderRemoteObj.CloseExtender();
  52. }
  53. }
  54. }