/// <summary> /// 跨进程传递数据。 /// </summary> /// <param name="windowName">窗口名称。</param> /// <param name="data">传递数据。</param> public static void WriteProcessData(string windowName, string data) { if (!string.IsNullOrEmpty(windowName) && !string.IsNullOrEmpty(data)) { int wm_handler = FindWindow(null, windowName); if (wm_handler != 0) { byte[] array = Encoding.Default.GetBytes(data); CopyDataStruct cds = new CopyDataStruct(); cds.dwData = (IntPtr)100; cds.lpData = data; cds.cbData = array.Length + 1; SendMessage(wm_handler, WM_COPYDATA, 0, ref cds); } } }
/// <summary> /// /// </summary> /// <param name="m"></param> protected override void DefWndProc(ref Message m) { //获取进程间的通讯数据。 if (m.Msg == ProcessDataComm.WM_COPYDATA) { CopyDataStruct cds = new CopyDataStruct(); cds = (CopyDataStruct)m.GetLParam(cds.GetType()); string data = cds.lpData; if (!string.IsNullOrEmpty(data)) { this.fileUploadObserver.AddObserver(data); } } base.DefWndProc(ref m); }
private static extern int SendMessage(int hWnd, int msg, int wParam, ref CopyDataStruct lParam);