我现在有一个用delphi写的带指针的dll 接口说明是这样的:
方法ReceiveSM
若ReceiveSMCounter接收短消息数返回值N大于1,则调用函数ReceiveSM(char * PMsgs) API接口。注意:分配的Buffer size=1067*N字节,该函数将返回N条MO消息的结构体内容。
参数名 IN/OUT 数据类型 描述
Msgs OUT *Pchar 接收短信内容,1067*N个字节大小,N为返回的消息条数每条短消息的结构定义(C语言)如下:
typedef TShortMsg struct
{
ulong SM_ID ; //短消息的ID,4个字节长度的无符号整数
char DestAddr[21] ; //短消息的目的地址,应该是等同于InitConnection设ServiceNO
char OrgAddr[21]; //短消息的源地址
uchar Prior ; //短消息的优先级,1个字节长度的无符号整数
char TimeStamp[20] ; //短消息的下发时间
char Content[1000] ; //短消息的内容
}
因此一条短消息的长度为:4+21+21+1+20+1000=1067 字节
注意:需要分配一片足够大的内存区1067*N字节,该内存区由pMsgs指向首位置
然后我的C#代码里调用:
public static class MobileOpen
//接收短消息
[DllImport("MobileOpen.dll")]
public static extern int ReceiveSM([MarshalAs(UnmanagedType.LPStr)] StringBuilder PMsgs);
点接收按钮的时候调用ReceiveSM方法:
StringBuilder msgs = new StringBuilder("".PadLeft(1067 * res, '\0'), 1067 * res);
MobileOpen.ReceiveSM(msgs);
string shormsg = msgs.ToString();
MessageBox.Show("接收短信:" + shormsg);可以取到有收到短消息,但调用ReceiveSM取短消息内容的时候就取不到了,最后那句弹出来是空的哪位知道这个方法应该怎么调用啊
方法ReceiveSM
若ReceiveSMCounter接收短消息数返回值N大于1,则调用函数ReceiveSM(char * PMsgs) API接口。注意:分配的Buffer size=1067*N字节,该函数将返回N条MO消息的结构体内容。
参数名 IN/OUT 数据类型 描述
Msgs OUT *Pchar 接收短信内容,1067*N个字节大小,N为返回的消息条数每条短消息的结构定义(C语言)如下:
typedef TShortMsg struct
{
ulong SM_ID ; //短消息的ID,4个字节长度的无符号整数
char DestAddr[21] ; //短消息的目的地址,应该是等同于InitConnection设ServiceNO
char OrgAddr[21]; //短消息的源地址
uchar Prior ; //短消息的优先级,1个字节长度的无符号整数
char TimeStamp[20] ; //短消息的下发时间
char Content[1000] ; //短消息的内容
}
因此一条短消息的长度为:4+21+21+1+20+1000=1067 字节
注意:需要分配一片足够大的内存区1067*N字节,该内存区由pMsgs指向首位置
然后我的C#代码里调用:
public static class MobileOpen
//接收短消息
[DllImport("MobileOpen.dll")]
public static extern int ReceiveSM([MarshalAs(UnmanagedType.LPStr)] StringBuilder PMsgs);
点接收按钮的时候调用ReceiveSM方法:
StringBuilder msgs = new StringBuilder("".PadLeft(1067 * res, '\0'), 1067 * res);
MobileOpen.ReceiveSM(msgs);
string shormsg = msgs.ToString();
MessageBox.Show("接收短信:" + shormsg);可以取到有收到短消息,但调用ReceiveSM取短消息内容的时候就取不到了,最后那句弹出来是空的哪位知道这个方法应该怎么调用啊
具体我也不太清楚PMsgs里到底是什么,按照说明的话应该是多个TShortMsg实例,但说明上给了一段C++的代码,传进去的是一个字符型指针char*
http://www.csframework.com/archive/2/arc-2-20110324-1226.htmC/S框架网欢迎您!