COPYDATASTRUCT cd = new COPYDATASTRUCT();
cd.dwData = 0;
cd.lpData = Marshal.StringToHGlobalAuto(Msg).ToInt32();
cd.cbData = Msg.Length;
Marshal.StringToHGlobalAuto(Msg);
并使用SendMessage方法将其发送到另一个窗口 当我收到它并使用
读取IntPtr作为字符串COPYDATASTRUCT CD = (COPYDATASTRUCT)Marshal.PtrToStructure(lParam, typeof(COPYDATASTRUCT));
byte[] B = new byte[CD.cbData];
IntPtr lpData = new IntPtr(CD.lpData);
string temp = Marshal.PtrToStringUni(lpData);
Marshal.Copy(lpData, B, 0, CD.cbData);
string strData = Encoding.Default.GetString(B);
我收到这些数据 M!\ 0S \ 0G \ 0 \ 0 @ \ 01 \ 0 | \ 01 \ 0 | \ 0C \ 0:\ 0 \\ 0U \ 0 \ 0E \ 0R \ 0 \ 0 \\ 0F \ 0 \ 0A \ 0升\ 0 \ 0A \ 0
当我制作strData.Replace(“\ 0”,“”)
时我收到了我的消息,但它被截断了。 !MSG @ 1 | 1 | C:\用户\ f.alsa
原始邮件是MSG!@ 1 | 1 | C:\ Users \ f.alsayyed \ Desktop \ File.ktb
答案 0 :(得分:0)
对我来说,看起来你的替换函数在字符串结束之前发现零终止,因为看起来你的接收数据在字符串中也包含零。