华为的SMEIDLL.DLL中SubmitAExEx(短信接口)
声明:
int WINAPI SubmitAExEx(
  unsigned char OrgTON, //源地址号码类型
  unsigned char OrgNPI, //源地址编码方案
  LPCTSTR OrgAddr, //源地址 char[MAX_ADDR_LEN]
  unsigned char DestTON, //目标地址号码类型
  unsigned char DestNPI, //目标地址编码方案
  LPCTSTR DestAddr,/*update*/           //最多支持100个目的地址
  unsigned char PRI, //SM优先级
  unsigned char RD, //当源地址和目的地址相同时,是否替换存在的短消息。
  unsigned char RP, //回应路径
  unsigned char SRR, //是否需要状态报告
  unsigned char MR, //消息索引
  unsigned char DCS, //数据编码方案
  unsigned char PID, //协议类型
  LPCTSTR Schedule, //定时 char[MAX_TIMESTAMP_LEN]
  LPCTSTR Expire, //超时时间 char[MAX_TIMESTAMP_LEN]
  unsigned long Default_ID, //缺省短消息
  unsigned char UDHI, //1表示UD为一个结构,0表示缺省
  unsigned long UDLen, //表示UD的长度
  LPCTSTR UserData, //用户信息,短消息正文
  LPCTSTR sServiceType,                 //业务子类型 by ycl 2001.7.9
  unsigned char* byMsgID,/*new*/        //MAX_MSG_ID,CMPP的字段,消息ID
  unsigned char byPKTotal,/*new*/                  //相同Msg_id的消息总条数,从1开始
     unsigned char byPKNumber,/*new*/                 //相同Msg_id的消息序号,从1开始
  unsigned char byMsglevel,/*new*/                 //信息级别
  unsigned char byFeeUserType,/*new*/              //计费用户类型字段,0:对目的终端MSISDN计费;1:对源终端MSISDN计费;2:对SP计费;3:表示本字段无效   
  LPCTSTR sSPID,/*new*/                 //MAX_SPID_LEN,信息内容来源
  LPCTSTR sFeeType,/*new*/              //MAX_FEE_TYPE_LEN,资费类别
  LPCTSTR sFeeAddr,/*new*/              //MAX_ADDR_LEN,被计费用户地址
  LPCTSTR sFeeCode,/*new*/              //MAX_FEE_CODE_LEN,资费代码
  unsigned char byUserNum,/*new*/                  //接收消息的用户数量
  LPCTSTR sDestAddrs,/*new*/      //目的地址,最多100个
  unsigned long* SM_ID, //返回:短消息ID
  unsigned char* FCS //返回:失败原因
  );调用:
int iRet;
unsigned long SM_ID; //返回:短消息I
unsigned char FCS;
unsigned long UDLen;
LPCTSTR UserData;
UserData="This is a test send";
UDLen=strlen(UserData);    unsigned char byMsgID[MAX_MSG_ID];               //CMPP的字段,消息ID
    memset(byMsgID, 0, MAX_MSG_ID);    iRet = SubmitAExEx(2,
                       1,
                       m_sOrgAddr,
                       2,
                       1,
                       m_sDestAddr,
                       0,
                       0,
                       0,
                       0,
                       0,
                       0,
                       0,
                       NULL,
                       NULL,
                       0, 
                       0, 
                       UDLen, 
                       (LPCTSTR)UserData, 
                       "icp",
                       byMsgID, 
                       1,  
                       1, 
                       0,
                       1,
                       "spid",
                       "1", 
                       "", 
                       "11",
                       1, 
                       m_sDestAddr,
                       &SM_ID,
                       &FCS);  请问,在Delphi中如何声明,如何调用?

解决方案 »

  1.   

    CString m_sOrgAddr;
    CString m_sDestAddr;忘了这两个变量的声明!
    这个函数是用来发送短信的!
      

  2.   

    不好意思楼主我中午回答的那个贴没有删除.say sorry
      

  3.   

    大概的修改了下,30多个参数,快累死我了。
    function SubmitAExEx(
      OrgTON: BYTE; //源地址号码类型
      OrgNPI: BYTE; //源地址编码方案
      const OrgAddr: PChar; //源地址 char[MAX_ADDR_LEN]
      DestTON: BYTE; //目标地址号码类型
      DestNPI: BYTE; //目标地址编码方案
      const DestAddr: PChar;    //最多支持100个目的地址
      PRI: BYTE; //SM优先级
      RD: BYTE; //当源地址和目的地址相同时,是否替换存在的短消息。
      RP: BYTE; //回应路径
      SRR: BYTE; //是否需要状态报告
      MR: BYTE; //消息索引
      DCS: BYTE; //数据编码方案
      PID: BYTE; //协议类型
      const Schedule: PChar; //定时 char[MAX_TIMESTAMP_LEN]
      const Expire: PChar; //超时时间 char[MAX_TIMESTAMP_LEN]
      Default_ID: DWORD; //缺省短消息
      UDHI: BYTE; //1表示UD为一个结构,0表示缺省
      UDLen: DWORD; //表示UD的长度
      const UserData: PChar; //用户信息,短消息正文
      const sServiceType: PChar;                 //业务子类型 by ycl 2001.7.9
      byMsgID: PBYTE;        //MAX_MSG_ID,CMPP的字段,消息ID
      byPKTotal: BYTE;                 //相同Msg_id的消息总条数,从1开始
         byPKNumber: BYTE;                 //相同Msg_id的消息序号,从1开始
      byMsglevel: BYTE;                //信息级别
      byFeeUserType: BYTE;              //计费用户类型字段,0:对目的终端MSISDN计费;1:对源终端MSISDN计费;2:对SP计费;3:表示本字段无效   
      const sSPID: PChar;                 //MAX_SPID_LEN,信息内容来源
      const sFeeType: PChar;              //MAX_FEE_TYPE_LEN,资费类别
      const sFeeAddr: PChar;              //MAX_ADDR_LEN,被计费用户地址
      const sFeeCode: PChar;              //MAX_FEE_CODE_LEN,资费代码
      byUserNum: BYTE;                  //接收消息的用户数量
      const sDestAddrs: PChar;      //目的地址,最多100个
      SM_ID: PDWORD; //返回:短消息ID
      FCS: PBYTE //返回:失败原因
      ):integer; stdcall; external 'xxx.dll';
    procedure TMainForm.Button1Click(Sender: TObject);
    var
        iRet: Integer;
    SM_ID: DWORD; //返回:短消息I
    FCS: BYTE;
    UDLen: DWORD;
        byMsgID: array [0..MAX_MSG_ID] of BYTE;               //CMPP的字段,消息ID
    const
        UserData: PChar = 'This is a test send';
        m_sOrgAddr: PChar = 'xx';
        m_sDestAddr: PChar = 'yy';
    begin
    UDLen := strlen(UserData);
        ZeroMemory(@byMsgID, MAX_MSG_ID);    iRet := SubmitAExEx(
                            2,
                           1,
                           m_sOrgAddr,
                           2,
                           1,
                           m_sDestAddr,
                           0,
                           0,
                           0,
                           0,
                           0,
                           0,
                           0,
                           nil,
                           nil,
                           0,
                           0, 
                           UDLen, 
                           UserData,
                           'icp',
                           @byMsgID,
                           1,
                           1,
                           0,
                           1,
                           'spid',
                           '1',
                           '',
                           '11',
                           1,
                           m_sDestAddr,
                           @SM_ID,
                           @FCS);
    end;
      

  4.   

    请楼上的老大再次出手,感激不尽。前面的那个声明和调用是正确的声明:
    int WINAPI GetDeliverSMExEx(
    ULONG* sm_ID, //返回:短讯ID
    unsigned char* DestTON, //返回:目标地址号码类型
    unsigned char* DestNPI, //返回:目标地址编码方案
    char* DestAddr, //返回:目标地址
    unsigned char* OrgTON, //返回:源地址号码类型
    unsigned char* OrgNPI, //返回:源地址编码方案
    char* OrgAddr, //返回:源地址
    unsigned char* PRI, //返回:优先权
                               unsigned char* RP,
                               unsigned char* UDHI,
                unsigned char* PID, //返回:协议类型
    unsigned char* DCS, //返回:编码方案
    char* TimeStamp, //返回:下发时间
                               unsigned long * UDLen,
    char* UserData, //返回:用户数据
                            unsigned char* StatusReport             //返回:状态报告标志,0表示不是状态报告,1:表示为状态报告
    );调用:ULONG ulsm_ID;
    char sDestAddr[MAX_ADDR_LEN];
    memset(sDestAddr, 0, MAX_ADDR_LEN);
    nsigned char byDestNPI;
    ULONG ulsm_ID;
    unsigned char byDestTON, byDestNPI, byOrgTON, byOrgNPI, byPRI, byPID, byDCS;
    char sDestAddr[MAX_ADDR_LEN];
    memset(sDestAddr, 0, MAX_ADDR_LEN);
    char sOrgAddr[MAX_ADDR_LEN];
    memset(sOrgAddr, 0, MAX_ADDR_LEN);
    char sTimeStamp[MAX_TIMESTAMP_LEN];
    memset(sTimeStamp, 0, MAX_TIMESTAMP_LEN);
    char sUserData[MAX_UD_LEN];
    memset(sUserData, 0, MAX_UD_LEN);int iRet;
    unsigned char byRP;
    unsigned char byUDHI;
    unsigned long ulUDLen;
    unsigned char byStatusReport = 0;
    iRet = GetDeliverSMExEx(&ulsm_ID, &byDestTON, &byDestNPI, sDestAddr, &byOrgTON,
                            &byOrgNPI, sOrgAddr, &byPRI, &byRP, &byUDHI, &byPID, &byDCS,
                            sTimeStamp, &ulUDLen, sUserData, &byStatusReport);
    if(iRet == 0)
    {
            CString sGetData;
            sGetData.Format("接收成功!\n接受到数据:%s", sUserData);
    MessageBox(sGetData,MB_OK,0); }
    else
    MessageBox("接收失败!",MB_OK,0);
      

  5.   

    新贴见http://community.csdn.net/Expert/topic/4464/4464488.xml?temp=.2463037