C#与VB6.0 进程间通信问题! 求救.
最近接一个任务,要求写一个接口程序,需要要与其他的Win32程序交换信息.
正在使用调用 API 发送 Win32消息的方式实现.
经过几天的查找与实验,与C#程序间的通信已经解决(十分感谢CSDN里的各位大大)
但与VB间传递字符串的时候出现问题.
描述如下:
C#方,定义要发送的消息的结构为:
/// <summary>
/// 发送WM_COPYDATA消息的数据结构
/// </summary>
internal struct MESSAGE_STRUCT
{
/// <summary>
/// 用户自定义数据
/// </summary>
public int dwData;
/// <summary>
/// 数据长度
/// </summary>
public int cbData;
/// <summary>
/// 数据首地址指针
///</summary>
[MarshalAs(UnmanagedType.LPStr)]
public string lpData;
}
发送语句为:
NativeMethods.SendMessage(this.SoftHandle, NativeMethods.WM_COPYDATA, messageType, ref data);
其中,对方句柄已知(对方能够收到消息),messageType 为自定义的数据,整数101,
data是按照上面的定义,每一项都有相应的值:
MESSAGE_STRUCT data = new MESSAGE_STRUCT();
// 自定义整形内容
data.dwData = messageType;
// 传递要发送的数据的长度 + \x00
data.cbData = System.Text.Encoding.Default.GetBytes(message).Length + 1;
// 传递要发送的数据的地址指针
data.lpData = message;
现在的问题是在VB侧,无法读出发送过来的内容.我尝试过定义这样的自定义类型:
''' 发送WM_COPYDATA消息的数据结构
Type MESSAGE_STRUCT
''' 用户自定义数据
dwData As Long
''' 数据长度
cbData As Long
''' 数据首地址指针
lpData As String * 1000
End Type
可是,读取到的前两个数值为0,第三个字符串为乱码.
请各位大大救命呀!我已经苦恼好几天了!!!