解决方案 »

  1.   

    这个主要还是自己调试.
    1, sendmessage 和 postmessage.
    2. 能不能找到要接收消息的窗口; 接收端 是否能接受到消息; 消息中附带的数据能否正常解析.
      

  2.   

    长见识了,从来没用过这种方式进行进程间通信。我一般使用共享内存、命名管理和Socket。
      

  3.   

    问题是出在接收端“CopyDataStruct vCopyDataStruct = (CopyDataStruct)Marshal.PtrToStructure(
                            m.LParam, typeof(CopyDataStruct));”  Out of Memory,但是我不知道为什么会出现这样的问题。
      

  4.   

    用BSTR是错的。因为BSTR指针指向的字符串前面有长度信息(就是那个05 00 00 00):          BSTR指针
                 |
                 v
    05 00 00 00 'h' 'e' 'l' 'l' 'o' 00
    当WM_COPYDATA帮你把数据(BSTR指针指向的数据)拷贝到其他进程时,只会拷贝'hello\0',并不会把前置长度05 00 00 00拷贝过去。
    当目标进程还原BSTR时,‘'hello\0'前面可以是任意的垃圾,比如长度变成789272521等。这可能导致你内存溢出或非法访问。