Example #1
0
        /// <summary>
        /// 跨进程,向指定窗口发送WM_COPYDATA消息
        /// </summary>
        /// <param name="lpWindowName">窗口标题</param>
        /// <param name="flag">区分标记</param>
        /// <param name="data">要发送的字符串数据</param>
        public static void SendCopyData(string lpWindowName, int flag, string data)
        {
            IntPtr hWnd = UnsafeNativeMethods.FindWindow(null, lpWindowName);

            if (hWnd == IntPtr.Zero)
            {
                return;
            }

            byte[] arr = Encoding.UTF8.GetBytes(data);
            NativeMethods.COPYDATASTRUCT cds = new NativeMethods.COPYDATASTRUCT();
            cds.dwData = flag;
            cds.cbData = arr.Length + 1;
            cds.lpData = data;
            UnsafeNativeMethods.SendMessage(hWnd, NativeMethods.WM_COPYDATA, IntPtr.Zero, ref cds);
        }