⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitsmsrecv.pas

📁 CMPP3移动短信平台400条/S 稳定版
💻 PAS
字号:
{*****短信接收线程类*****}


unit UnitSmsRecv;

interface

uses
  Classes, Windows, ADODB, SysUtils, StdCtrls, Forms, Variants, Activex;

type
  smsui = class(TThread)
  private
    { Private declarations }
    procedure LogUserSubmit(TmpQuery: TADOQuery; SimNo, Content, DestAddr: string); //记录用户提交信息日志
    procedure InsertUserSubmit(TmpQuery: TADOQuery; SimNo, Content, DestAddr: string); //插入用户提交信息表
    procedure InsertMonthFee(content: string; TmpQuery: TADOQuery); //记录移动梦网Reply信息
  protected
    procedure Execute; override;
  end;

implementation

uses UnitMain, UnitCode, CMPP;

//记录用户提交信息

procedure smsui.LogUserSubmit(TmpQuery: TADOQuery; SimNo, Content, DestAddr: string);
begin
  TmpQuery.Close;
  TmpQuery.SQL.Clear;
  TmpQuery.SQL.Add('insert into Log_Usersubmit(simno,Content,DestAddr,[time]) values(:p1,:p2,:p3,:p4)');
  TmpQuery.Parameters.ParamValues['p1'] := SimNo;
  TmpQuery.Parameters.ParamValues['p2'] := Content;
  TmpQuery.Parameters.ParamValues['p3'] := DestAddr;
  TmpQuery.Parameters.ParamValues['p4'] := datetimetostr(now());
  try
    TmpQuery.ExecSQL;
  except
    PostMessage(frmmain.Handle, ShowRunInfo, 0, Integer(PChar('记录接收日志失败!数据库失败!')));
  end;
end;
//插入用户提交信息到用户表

procedure smsui.InsertUserSubmit(TmpQuery: TADOQuery; SimNo, Content, DestAddr: string);
begin
  TmpQuery.Close;
  TmpQuery.SQL.Clear;
  TmpQuery.SQL.Add('insert into Queue_Usersubmit(simno,Content,DestAddr,submittime) values(:p1,:p2,:p3,:p4)');
  TmpQuery.Parameters.ParamValues['p1'] := SimNo;
  TmpQuery.Parameters.ParamValues['p2'] := Content;
  TmpQuery.Parameters.ParamValues['p3'] := DestAddr;
  TmpQuery.Parameters.ParamValues['p4'] := datetimetostr(now());
  try
    TmpQuery.ExecSQL;
  except
    PostMessage(frmmain.Handle, ShowRunInfo, 0, Integer(PChar('数据库失败!接收短消息写入队列表失败!')));
  end;
end;
//线程执行类重载

procedure smsui.Execute;
var
  TmpQuery: TADOQuery;
  OrgAddr_R: string;
  UserData_R: string;
  DestAddr_R: string;
  nIsReply: Boolean;
begin
  FreeOnTerminate := True;
  Activex.CoInitialize(nil);
  if InitCMPPAPI('cmppc.ini') = 0 then
    PostMessage(frmmain.Handle, ShowRunInfo, 0, Integer(PChar('Sms Center Init OK!')))
  else
  begin
    PostMessage(frmmain.Handle, ShowRunInfo, 0, Integer(PChar('Sms Center Init Error!')));
    Activex.CoUninitialize;
    Exit;
  end;
  TmpQuery := TADOQuery.Create(nil);
  TmpQuery.ConnectionString := 'FILE NAME=newsms.udl';
  try
    while not Terminated do
    begin
      if Terminated then break;
      Sleep(200);
      nIsReply := false;
      if GetSms(NTIMEOUT, OrgAddr_R, UserData_R, DestAddr_R, nIsReply) = 0 then
      begin
        PostMessage(frmmain.Handle, GetCountInfo, 0, 0);
        PostMessage(frmmain.Handle, ShowRunInfo, 0, Integer(PChar('Get SMS Ok From ' + OrgAddr_R)));
        if nIsReply then
        begin
          InsertMonthFee(userdata_R, TmpQuery);
        end
        else
        begin
          if findsensitiveWord(UserData_R) then
          begin
            PostMessage(frmmain.Handle, ShowRunInfo, 0, Integer(PChar('Find Sensitive Word!')));
            Exit;
          end;
          LogUserSubmit(TmpQuery, OrgAddr_R, UserData_R, DestAddr_R);
          InsertUserSubmit(TmpQuery, OrgAddr_R, UserData_R, DestAddr_R);
        end;
      end;
    end;
  finally
    UiActive := false;
    TmpQuery.Free;
    Activex.CoUninitialize;
  end;
end;
//状态报告分析入库

procedure smsui.InsertMonthFee(content: string; TmpQuery: TADOQuery);
var
  sTime: pchar;
  sSmcNo: pchar;
  nMSGID: integer;
  sStat: pchar;
  sSubmitTime: pchar;
  sDoneTime: pchar;
  sDestTermID: pchar;
  nSMCSequence: integer;
begin
  GetMem(sTime, 256);
  GetMem(sSmcNo, 256);
  GetMem(sStat, 256);
  GetMem(sSubmitTime, 256);
  GetMem(sDoneTime, 256);
  GetMem(sDestTermID, 256);
  try
    if CMPPAnalyzeStatusReport(pchar(Content), sTime, sSmcNo, nMSGID, sStat, sSubmitTime, sDoneTime, sDestTermID, nSMCSequence) = 0 then
    begin
      TmpQuery.Close;
      TmpQuery.SQL.Clear;
      TmpQuery.SQL.Text := 'insert into MonthFee(sTime,sSMCNo,nMSGID,sStat,sSubmitTime,sDoneTime,sDestTermID,nSMCSequence) values(' +
        '''' + sTime + '''' + ',' + '''' + sSMCNo + '''' + ',' + inttostr(nMSGID) + ',' + '''' + sStat + '''' + ',' + '''' + sSubmitTime + '''' + ','
        + '''' + sDoneTime + '''' + ',' + '''' + sDestTermID + '''' + ',' + inttostr(nSMCSequence) + ')';
      try
        TmpQuery.ExecSQL;
      except
        PostMessage(frmmain.Handle, ShowRunInfo, 0, Integer(PChar('状态报告入库失败')));
      end;
    end
    else
    begin
      PostMessage(frmmain.Handle, ShowRunInfo, 0, Integer(PChar('分析报告失败')));
    end;
  finally
    freeMem(sTime);
    freeMem(sSmcNo);
    freeMem(sStat);
    freeMem(sSubmitTime);
    freeMem(sDoneTime);
    freeMem(sDestTermID);
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -