c#下使用WM_COPYDATA


 
        [DllImport("User32.dll")]
        public static extern int SendMessage(IntPtr hwnd, int msg, int wParam, ref COPYDATASTRUCT lParam);
 
 
        public const int WM_COPYDATA = 0x004A;
 
        /// <summary>
        /// WM_COPYDATA消息,进程间传输信息专用结构
        /// </summary>
        public struct COPYDATASTRUCT
        {
            public IntPtr dwData;//类型必须IntPtr,用来自动适应32位 64位
            public int cbData;
 
            public Intptr lpData;
 
        }

发送消息:

                string msg = "asdf";
                byte[] sarr = Encoding.Default.GetBytes(msg);
                COPYDATASTRUCT cds;
                cds.dwData = IntPtr.Zero;                                   //可以是任意值
                cds.cbData = sarr.Length;                               //指定lpData内存区域的字节数
                cds.lpData = Marshal.UnsafeAddrOfPinnedArrayElement(sarr,0);  //发送给目标窗口所在进程的数据
 
                SendMessage(hdl, WM_COPYDATA, 0, ref cds);

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM