📄 send.pas
字号:
unit Send;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, OleCtrls, SHDocVw, ComCtrls,IniFiles,ShellAPI,MSHTML;
type
TfrmSend = class(TForm)
gbSendSMS: TGroupBox;
wbSendSMS: TWebBrowser;
Label1: TLabel;
Label2: TLabel;
cmbSendCode: TComboBox;
memSendContent: TMemo;
Label3: TLabel;
btnSend: TBitBtn;
btnCancel: TBitBtn;
sbSendSMS: TStatusBar;
sbSaveRecCode: TSpeedButton;
cmbMsgList: TComboBox;
cmbRecCode: TComboBox;
sbDeleteRecCode: TSpeedButton;
lblMsgList: TLabel;
sbSaveSendCode: TSpeedButton;
sbDeleteSendCode: TSpeedButton;
sbSaveMsg: TSpeedButton;
sbDeleteMsg: TSpeedButton;
lblTS: TLabel;
procedure btnSendClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure wbSendSMSDocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
procedure sbSaveSendCodeClick(Sender: TObject);
procedure sbSaveRecCodeClick(Sender: TObject);
procedure memSendContentChange(Sender: TObject);
procedure sbDeleteRecCodeClick(Sender: TObject);
procedure sbDeleteSendCodeClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure cmbRecCodeChange(Sender: TObject);
procedure cmbSendCodeChange(Sender: TObject);
procedure sbDeleteMsgClick(Sender: TObject);
procedure sbSaveMsgClick(Sender: TObject);
procedure cmbMsgListChange(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure lblTSClick(Sender: TObject);
private
{ Private declarations }
iSendSMS:integer; //表明正在发送短消息
public
{ Public declarations }
function DeleteCR(s:string):string;
procedure SaveSendCodeInfo; //保存发送手机信息
procedure SaveRecCodeInfo; //保存接收手机信息
procedure SaveMsgInfo; //保存消息
procedure ReadSendCodeInfo; //读取发送手机信息
procedure ReadRecCodeInfo; //读取接收手机信息
procedure ReadMsgInfo; //读取消息
procedure FreeData; //释放指针
function CheckCode(sCode:string):boolean;//检查号码是否合法
end;
TSendCodeInfo=record
sSendCode:string; //发送手机号码
sSendName:string; //发送收机人名称
sPassword:string; //发送的密码
end;
PSendCodeInfo=^TSendCodeInfo;
TRecCodeInfo=record
sRecCode:string; //接收手机号码
sRecName:string; //接受手机人
end;
PRecCodeInfo=^TRecCodeInfo;
TMsgInfo=Record
sMsgCaption:string; //消息标题
sMsgContent:string; //消息内容
end;
PMsgInfo=^TMsgInfo;
var
frmSend: TfrmSend;
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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -