利用新浪网关收发短信的平台
implementation
uses SendCodeInfo, RecCodeInfo;
{$R *.dfm}
function Tfrmsend.CheckCode(sCode:string):boolean;
var
i:integer;
begin
if(Trim(sCode)='') then
begin
Result:=false;
Exit;
end;
if(Length(Trim(sCode))<>11) then
begin
Result:=false;
Exit;
end;
for i:=1 to 11 do
begin
if not (Copy(sCode,i,1)[1] in ['0','1','2','3','4','5','6','7','8','9']) then
begin
Result:=false;
Exit;
end;
end;
Result:=true;
end;
procedure TfrmSend.FreeData;
var
i:integer;
begin
for i:=0 to cmbSendCode.Items.Count-1 do
begin
if(PSendCodeInfo(cmbSendCode.Items.Objects[i])<>nil) then
Dispose(PSendCodeInfo(cmbSendCode.Items.Objects[i]));
end;
for i:=0 to cmbRecCode.Items.Count-1 do
begin
if(PRecCodeInfo(cmbRecCode.Items.Objects[i])<>nil) then
Dispose(PRecCodeInfo(cmbRecCode.Items.Objects[i]));
end;
for i:=0 to cmbMsgList.Items.Count-1 do
begin
if(PMsgInfo(cmbMsgList.Items.Objects[i])<>nil) then
Dispose(PMsgInfo(cmbMsgList.Items.Objects[i]));
end;
end;
procedure TfrmSend.SaveMsgInfo;
var
i :integer; //循环使用
iMsgCount :integer; //发送号码的位数
sMsgCaption:AnsiString; //号码主人名称
sMsgContent:AnsiString; //号码
strPath :AnsiString; //路径
iniFile :TIniFile; //操作ini文件
sMsg :AnsiString; //发送的消息
begin
strPath:=ExtractFilePath(Application.ExeName)+'SendSMS.ini';
try
iniFile:=TIniFile.Create(strPath);
iniFile.EraseSection('SendMsg');
IniFile.WriteString('SendMsg','MsgCount',IntToStr(cmbMsgList.Items.Count));
for i:=0 to cmbMsgList.Items.Count-1 do
begin
sMsgCaption:=PMsgInfo(cmbMsgList.Items.Objects[i])^.sMsgCaption;
sMsgContent:=PMsgInfo(cmbMsgList.Items.Objects[i])^.sMsgContent;
sMsg:=sMsgCaption+'_CC_'+sMsgContent;
IniFile.WriteString('SendMsg','Msg'+IntToStr(i+1),sMsg);
end;
finally
if(iniFile<>nil) then
iniFile.Free;
end;
end;
procedure TfrmSend.ReadMsgInfo;
var
iMsgCount :integer;
i :integer;
iCC :integer;
sMsgCaption:AnsiString;
sMsgContent:AnsiString;
iniFile :TIniFile;
strPath :AnsiString;
sMsg :AnsiString;
MsgInfo :PMsgInfo;
begin
strPath:=ExtractFilePath(Application.ExeName)+'SendSMS.ini';
try
iniFile:=TIniFile.Create(strPath);
iMsgCount:=iniFile.ReadInteger('SendMsg','MsgCount',0);
for i:=1 to iMsgCount do
begin
sMsg:=iniFile.ReadString('SendMsg','Msg'+IntToStr(i),'');
iCC:=Pos('_CC_',sMsg);
sMsgCaption:=Copy(sMsg,1,iCC-1);
sMsgContent:=Copy(sMsg,iCC+4,Length(sMsg)-iCC-3);
New(MsgInfo);
MsgInfo.sMsgCaption:=sMsgCaption;
MsgInfo.sMsgContent:=sMsgContent;
cmbMsgList.Items.AddObject(sMsgCaption,TObject(MsgInfo));
end;
finally
if(iniFile<>nil) then
iniFile.Free;
end;
end;
procedure TfrmSend.ReadSendCodeInfo;
var
iSendCount:integer;
i :integer;
iNC :integer;
iCP :integer;
sSendName :AnsiString;
sSendCode :AnsiString;
sPassword :AnsiString;
iniFile :TIniFile;
strPath :AnsiString;
sSend :AnsiString;
SendCodeInfo:PSendCodeInfo;
begin
strPath:=ExtractFilePath(Application.ExeName)+'SendSMS.ini';
try
iniFile:=TIniFile.Create(strPath);
iSendCount:=iniFile.ReadInteger('SendCode','SendCount',0);
for i:=1 to iSendCount do
begin
sSend:=iniFile.ReadString('SendCode','SendCode'+IntToStr(i),'');
iNC:=Pos('_NC_',sSend);
iCP:=Pos('_CP_',sSend);
sSendName:=Copy(sSend,1,iNC-1);
sSendCode:=Copy(sSend,iNC+4,iCP-iNC-4);
sPassword:=Copy(sSend,iCP+4,Length(sSend)-iCP);
New(SendCodeInfo);
SendCodeInfo.sSendCode:=sSendCode;
SendCodeInfo.sSendName:=sSendName;
SendCodeInfo.sPassword:=SPassword;
cmbSendCode.Items.AddObject(sSendName,TObject(SendCodeInfo));
end;
finally
if(iniFile<>nil) then
iniFile.Free;
end;
end;
procedure TfrmSend.ReadRecCodeInfo;
var
iRecCount:integer;
i :integer;
iNC :integer;
iCP :integer;
sRecName :AnsiString;
sRecCode :AnsiString;
iniFile :TIniFile;
strPath :AnsiString;
sRec :AnsiString;
RecCodeInfo:PRecCodeInfo;
begin
strPath:=ExtractFilePath(Application.ExeName)+'SendSMS.ini';
try
iniFile:=TIniFile.Create(strPath);
iRecCount:=iniFile.ReadInteger('ReceiveCode','RecCount',0);
for i:=1 to iRecCount do
begin
sRec:=iniFile.ReadString('ReceiveCode','RecCode'+IntToStr(i),'');
iNC:=Pos('_NC_',sRec);
sRecName:=Copy(sRec,1,iNC-1);
sRecCode:=Copy(sRec,iNC+4,Length(sRec)-iNC-3);
New(RecCodeInfo);
RecCodeInfo.sRecCode:=sRecCode;
RecCodeInfo.sRecName:=sRecName;
cmbRecCode.Items.AddObject(sRecName,TObject(RecCodeInfo));
end;
finally
if(iniFile<>nil) then
iniFile.Free;
end;
end;
procedure TfrmSend.SaveSendCodeInfo;
var
i :integer; //循环使用
iSendCount:integer; //发送号码的位数
sSendName :AnsiString; //号码主人名称
sSendCode :AnsiString; //号码
sPassword :AnsiString; //密码
strPath :AnsiString; //路径
iniFile :TIniFile; //操作ini文件
sSend :AnsiString;
begin
strPath:=ExtractFilePath(Application.ExeName)+'SendSMS.ini';
try
iniFile:=TIniFile.Create(strPath);
iniFile.EraseSection('SendCode');
IniFile.WriteString('SendCode','SendCount',IntToStr(cmbSendCode.Items.Count));
for i:=0 to cmbSendCode.Items.Count-1 do
begin
sSendName:=PSendCodeInfo(cmbSendCode.Items.Objects[i])^.sSendName;
sSendCode:=PSendCodeInfo(cmbSendCode.Items.Objects[i])^.sSendCode;
sPassword:=PSendCodeInfo(cmbSendCode.Items.Objects[i])^.sPassword;
sSend:=sSendName+'_NC_'+sSendCode+'_CP_'+sPassword;
IniFile.WriteString('SendCode','SendCode'+IntToStr(i+1),sSend);
end;
finally
if(iniFile<>nil) then
iniFile.Free;
end;
end;
procedure TfrmSend.SaveRecCodeInfo;
var
i :integer; //循环使用
iRecCount:integer; //发送号码的位数
sRecName :AnsiString; //号码主人名称
sRecCode :AnsiString; //号码
strPath :AnsiString; //路径
iniFile :TIniFile; //操作ini文件
sRec :AnsiString;
begin
strPath:=ExtractFilePath(Application.ExeName)+'SendSMS.ini';
try
iniFile:=TIniFile.Create(strPath);
iniFile.EraseSection('ReceiveCode');
IniFile.WriteString('ReceiveCode','RecCount',IntToStr(cmbRecCode.Items.Count));
for i:=0 to cmbRecCode.Items.Count-1 do
begin
sRecName:=PRecCodeInfo(cmbRecCode.Items.Objects[i])^.sRecName;
sRecCode:=PRecCodeInfo(cmbRecCode.Items.Objects[i])^.sRecCode;
sRec:=sRecName+'_NC_'+sRecCode;
IniFile.WriteString('ReceiveCode','RecCode'+IntToStr(i+1),sRec);
end;
finally
if(iniFile<>nil) then
iniFile.Free;
end;
end;
function TfrmSend.DeleteCR(s:string):string;
var
i:integer; //循环使用
begin
i:=Pos(#$d,s);
while i<>0 do
begin
Delete(s,i,1);
i:=Pos(#$d,s);
end;
i:=Pos(#$a,s);
while i<>0 do
begin
Delete(s,i,1);
i:=pos(#$a,s);
end;
Result:=s;
end;
procedure TfrmSend.btnSendClick(Sender: TObject);
var
ovTargetFrameName:OleVariant;
ovPostData :OleVariant;
ovFlags :OleVariant;
ovHeads :OleVariant;
begin
if(cmbRecCode.ItemIndex=-1) then
begin
MessageBox(Handle,'选择接收的号码!','提示信息',MB_OK);
Exit;
end;
if(CheckCode(PRecCodeInfo(cmbRecCode.Items.Objects[cmbRecCode.ItemIndex])^.sRecCode)=false) then
begin
MessageBox(Handle,'接收号码不正确!','提示信息',MB_OK);
Exit;
end;
if(cmbSendCode.ItemIndex=-1) then
begin
MessageBox(Handle,'选择发送的号码!','提示信息',MB_OK);
Exit;
end;
if(CheckCode(PSendCodeInfo(cmbSendCode.Items.Objects[cmbSendCode.ItemIndex])^.sSendCode)=false) then
begin
MessageBox(Handle,'发送号码不正确!','提示信息',MB_OK);
Exit;
end;
if(Trim(memSendContent.Text)='') then
begin
MessageBox(Handle,'输入发送的内容!','提示信息',MB_OK);
memSendContent.SetFocus;
Exit;
end;
iSendSMS:=0;
ovTargetFrameName:=0;
ovPostData:=0;
ovHeads:=0;
ovFlags:=0;
wbSendSMS.Navigate('http://sms.sina.com.cn/docs/send.html',
ovFlags,ovTargetFrameName,ovPostData,ovHeads);
sbSendSMS.Panels.Items[0].Text:='正在发送...';
end;
procedure TfrmSend.btnCancelClick(Sender: TObject);
begin
wbSendSMS.Stop;
//Close;
end;