ExtenderWrapperIpc.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. extenderRemoteObj.ConnectToEDSHardware();
  43. return extenderRemoteObj;
  44. }
  45. internal static void KillExtenderWrapperProcess()
  46. {
  47. Process[] processes = Process.GetProcessesByName("OxfordExtenderWrapper");
  48. //if (processes.Length!=0)
  49. //{
  50. // processes[0].Kill();
  51. //}
  52. extenderRemoteObj.CloseExtender();
  53. }
  54. }
  55. }