vb里的引用如下Private Declare Function SubmitA Lib "SMEIDLL" (ByVal OrgTON As Byte, ByVal OrgNPI As Byte, OrgAddr As String, ByVal DestTON As Byte, ByVal DestNPI As Byte, DestAddr As String, ByVal PRI As Byte, ByVal RD As Byte, ByVal RP As Byte, ByVal SRR As Byte, ByVal MR As Byte, ByVal DCS As Byte, ByVal PID As Byte, ByVal Schedule As String, ByVal Expire As String, ByVal Default_ID As Long, ByVal UDHI As Byte, ByVal UDLen As Long, ByVal UserData As String, ByRef SM_ID As Long, ByRef FCS As Byte) As Long
                              |
???----->           |____如何读取返回成功提交短消息后SM_ID的IDiRet = SubmitA(2, 1, "13572183062", 2, 1, "13572848415", PRI, RD, RP, SRR, MR, DCS, PID, "2003/03/31 10:20:00", "2003/03/31 10:20:00", Default_ID, 0, UDLen, UserData, SM_ID, FCS)
                                  |___是否正确,如何得到他的idPrivate Declare Function QuerySMStatusA Lib "SMEIDLL" (ByVal SM_ID As Long, ByVal OrgTON As Byte, ByVal OrgNPI As Byte, OrgAddr As String, ByRef DestTON As Byte, ByRef DestNPI As Byte, DestAddr As String, Final_date As String, ByRef SM_Status As Byte, ByRef Error_Code As Byte)
c++里面函数QuerySMStatusA 是这样写的iRet = QuerySMStatusA (SM_ID, 
     SM_ID是submitA反回的id__________________________________|      
 &OrgTON, &OrgNPI, (LPCTSTR)OrgAddr, &DestTON, &DestNPI,(LPCTSTR)DestAddr, (LPCTSTR)Final_date, &SM_Status, &Error_Code);
着句话如何写成vb的api判断iRet的真假(注 SM_ID为SubmitA返回的 查询是通过SubmitA发送的短消息ID,短消息ID是SMSC返回的短消息的一个句柄。SubmitSMA函数返回提交短消息的ID,通过函数QuerySMS也可以查到短消息ID。)

解决方案 »

  1.   

    不知你的dll函数返回值的定义具体是怎样的,根据一般WinAPI的惯例
    iRet = SubmitA(...)
    if iRet>0 then
      iRet = QuerySMStatusA (iRet,...)
    else
      msgbox "fault"
    end if
      

  2.   

    iRet = SubmitA(2, 1, "13572183062", 2, 1, "13572848415", PRI, RD, RP, SRR, MR, DCS, PID, "2003/03/31 10:20:00", "2003/03/31 10:20:00", Default_ID, 0, UDLen, UserData, SM_ID, FCS)
    ByRef SM_ID As Long中的SM_ID是返回的该数据的id号
    iRet是返回的该函数执行是否成功!
    在VB我现在该如何读取SM_ID的值呢
      

  3.   

    直接写
    dim a as longiret = query...( a, ... )a就是返回的