📄 unit1.~pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, TransoftSMSControl30_TLB, ExtCtrls;
type
TFrmDemo = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
cboMobileType: TComboBox;
Label2: TLabel;
txtCenterNo: TEdit;
Label3: TLabel;
cboRate: TComboBox;
Label4: TLabel;
cboComPort: TComboBox;
cmdConnect: TButton;
cmddisConnect: TButton;
GroupBox2: TGroupBox;
Label5: TLabel;
txtMobileNo: TEdit;
txtMsg: TMemo;
lstMobileNo: TListBox;
Label6: TLabel;
chkChinese: TCheckBox;
chkNeedReport: TCheckBox;
cmdSend: TButton;
txtinfo: TMemo;
Label7: TLabel;
cmdClose: TButton;
SMS: TSMS;
Timer1: TTimer;
procedure cmdConnectClick(Sender: TObject);
procedure cmddisConnectClick(Sender: TObject);
procedure txtMobileNoKeyPress(Sender: TObject; var Key: Char);
procedure SMSMsgReceived(ASender: TObject; const MsgSender,
Msg: WideString; ArrivedTime: TDateTime);
procedure cmdSendClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure SMSSendComplete(ASender: TObject; intMsgReference: Smallint);
procedure SMSError(ASender: TObject; Number: Smallint;
const Description: WideString);
procedure cmdCloseClick(Sender: TObject);
procedure SMSReportReceived(ASender: TObject; MsgReference: Smallint;
const Receiver: WideString; OriginSendTime, ArrivedTime: TDateTime;
Status: Smallint);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmDemo: TFrmDemo;
implementation
{$R *.dfm}
procedure TFrmDemo.cmdConnectClick(Sender: TObject);
begin
if cboMobileType.Text ='标准手机' then
SMS.MobileType :=0
else if cboMobileType.Text='Wavecom模块' then
SMS.MobileType :=1
else if cboMobileType.Text='Nokia手机' then
SMS.MobileType :=2
else
SMS.MobileType :=3;
SMS.CommPort := StrToInt(cboCOMPort.Text);
SMS.CenterNo := txtCenterNo.Text;
SMS.Settings := cboRate.Text;
//打开与手机的通讯
If SMS.CommOpen = 0 Then
ShowMessage('连接成功!')
Else
ShowMessage('连接失败!');
end;
procedure TFrmDemo.cmddisConnectClick(Sender: TObject);
begin
SMS.CommClose();
ShowMessage('断开成功!');
end;
procedure TFrmDemo.txtMobileNoKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
lstMobileNo.AddItem(txtMobileNo.Text,nil);
txtMobileNo.Text :='';
end;
end;
procedure TFrmDemo.SMSMsgReceived(ASender: TObject; const MsgSender,
Msg: WideString; ArrivedTime: TDateTime);
begin
txtInfo.text := txtInfo.text + #13#10 + MsgSender + ':' + Msg;
end;
procedure TFrmDemo.cmdSendClick(Sender: TObject);
begin
Timer1.Enabled := true;
end;
procedure TFrmDemo.Timer1Timer(Sender: TObject);
var isChinese: Boolean;
var NeedReport: Boolean;
// 这里是发送短信的核心代码,
// 注:定时触发一次,一定是只发送一条短信
// 发送之前判断控件状态是否忙
//
//
begin
if lstMobileNo.Items.Count >0 then
//下面的判断很重要
if SMS.IsBusy = false then
begin
isChinese := chkChinese.Checked;
NeedReport := chkNeedreport.Checked;
SMS.SendMsg(lstMobileNo.Items.Strings[0],txtMsg.Text, isChinese, NeedReport, false);
end;
end;
procedure TFrmDemo.SMSSendComplete(ASender: TObject;
intMsgReference: Smallint);
begin
txtInfo.Text := txtInfo.Text + '发送给' + lstMobileNo.Items.Strings[0] + '成功!' + #13#10;
If lstMobileNo.Items.Count > 0 Then
lstMobileNo.Items.Delete(0);
end;
procedure TFrmDemo.SMSError(ASender: TObject; Number: Smallint;
const Description: WideString);
begin
txtInfo.Text := txtInfo.Text + '发送给' + lstMobileNo.Items.Strings[0] + '失败!' + #13#10;
If lstMobileNo.Items.Count > 0 Then
lstMobileNo.Items.Delete(0);
end;
procedure TFrmDemo.cmdCloseClick(Sender: TObject);
begin
FrmDemo.Close;
end;
procedure TFrmDemo.SMSReportReceived(ASender: TObject;
MsgReference: Smallint; const Receiver: WideString; OriginSendTime,
ArrivedTime: TDateTime; Status: Smallint);
begin
txtInfo.text := txtInfo.text + #13#10 + Receiver + '已经接收到了短信';
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -