public static bool ProcessRequest(ref Message msg, IPCHost host) { bool flag = false; if (msg.Msg == IPCServer.IPCMessage) { if ((int)msg.WParam == 2) { msg.Result = (IntPtr)10; flag = true; } else if ((int)msg.WParam == 1) { IntPtr hFile = IPCServer.OpenFileMapping(6U, false, "RadControl.IPC.Server.Request"); Telerik.WinControls.CodedUI.IPCMessage serverObject = IPCServer.GetServerObject(hFile); IPCServer.CloseHandle(hFile); host.ProcessMessage(ref serverObject); host.Context = IPCServer.CreateFileMapping(new IntPtr(-1), IntPtr.Zero, 4U, 0U, 100000U, "RadControl.IPC.Server.Response"); IPCServer.SetServerObject(host.Context, serverObject); msg.Result = (IntPtr)10; flag = true; } else if ((int)msg.WParam == 3) { IPCServer.CloseHandle(host.Context); } } return(flag); }
public static Telerik.WinControls.CodedUI.IPCMessage SendRequest( IntPtr hWnd, Telerik.WinControls.CodedUI.IPCMessage request) { Telerik.WinControls.CodedUI.IPCMessage ipcMessage = (Telerik.WinControls.CodedUI.IPCMessage)null; IPCServer ipcServer = new IPCServer(); IntPtr fileMapping = IPCServer.CreateFileMapping(new IntPtr(-1), IntPtr.Zero, 4U, 0U, 100000U, "RadControl.IPC.Server.Request"); if (fileMapping != IntPtr.Zero) { if (IPCServer.SetServerObject(fileMapping, request)) { if ((int)Telerik.WinControls.NativeMethods.SendMessage(hWnd, IPCServer.IPCMessage, (IntPtr)1, IntPtr.Zero) == 10) { IntPtr hFile = IPCServer.OpenFileMapping(4U, false, "RadControl.IPC.Server.Response"); ipcMessage = IPCServer.GetServerObject(hFile); IPCServer.CloseHandle(hFile); } Telerik.WinControls.NativeMethods.SendMessage(hWnd, IPCServer.IPCMessage, (IntPtr)3, IntPtr.Zero); } IPCServer.CloseHandle(fileMapping); } return(ipcMessage); }