请问:这个VC的二次开发接口在delphi怎样调用?(50分)

  • 主题发起人 petrelbbs
  • 开始时间
P

petrelbbs

Unregistered / Unconfirmed
GUEST, unregistred user!
手机短消息二次开发接口:(nkidll.dll)包含:

1.函数名:Sms_Init
long WINAPI Sms_Init(long lMobileType , long lConnectType , long lPort , long lTimeOut, char * pSMCA , HWND hWnd=NULL);
功能 初始化串口并与手机连接
入参 lMobType 手机类型:MOBILE_GSM/MOBILE_NOKIA
lConnectType 连接方式:CONNECT_CABLE/CONNECT_IRDA
lPort 串口号 当lConnectType == CONNECT_IRDA , 此参数无效
lTimeOut 超时时间,根据当地信号状况,值为:10-50 , 单位:秒,建议值为15
pSMCA 短消息中心
hWnd 用于返回信息的窗口句柄,如果不用可置NULL或0
返回 0 初始化成功

2.(dll中的说明是常数.如下:)
typedef struct _SMS_Recv //收到信息的通知结构
{
  long lMsgType;    //短信类型:MSGTYPE_SMS 或 MSGTYPE_REPORT
  char szSmsc[32];   //短信中心
  char szSender[32];  //发送者号码,如果lMsgType==MSGTYPE_REPORT,则是状态报告的目标手机号码
  char szTime[32];   //发送时间
  char szMsg[512];   //信息内容
}SMS_Recv;

---------问题如下:
1.Sms_Init函数调用正常.就是不知道 //typedef struct _SMS_Recv .....//这一段在delphi中怎样引用(在下是个菜鸟),
又怎样取出返回数值.
---------[:D]请大哥们帮我解析一下,最好能举个例子给小第看看.[?]



--------附带VC中的例子是这样的.
void CDemoNkiDllDlg::OnGet()
{
SMS_Recv Sms;
long l = Sms_Get(&Sms);
char szBuf[512];
if ( l>=0 )
{
wsprintf( szBuf , "取到一短信,内容如下: /n短信中心: %s /n发送者 : %s/n发送时间: %s/n短信内容: %s /n队列剩余短信数:%d" /
, Sms.szSmsc , Sms.szSender , Sms.szTime , Sms.szMsg , l);
}
else
{
wsprintf(szBuf , "取短消息失败:短信队列为空!" );
}
MessageBox(szBuf , "信息" , MB_OK );

}
 
将 _SMS_Recv 定义成 Delphi 中的 packed record
调用时传送的是结构的地址。
用值参的话,声明为记录的指针,传送记录的地址。
用变参的话,可直接传送 记录变量。

l: longint;
Sms:SMS_Recv;
l = Sms_Get(@Sms);

 
接受答案了.
 
顶部