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

📄 unit1.~pas

📁 支持手机在电脑平台上收发短信
💻 ~PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Send: TButton;
    Button2: TButton;
    jshm: TEdit;
    fsnr: TMemo;
    GroupBox1: TGroupBox;
    Label2: TLabel;
    Label3: TLabel;
    GroupBox2: TGroupBox;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    jsnr: TMemo;
    GroupBox3: TGroupBox;
    GroupBox4: TGroupBox;
    Button3: TButton;
    jqhm: TEdit;
    cwxx: TMemo;
    Button4: TButton;
    sqhm: TEdit;
    Label8: TLabel;
    Memo1: TMemo;
    Memo2: TMemo;
    Device: TEdit;
    Baud: TEdit;
    Label9: TLabel;
    Label10: TLabel;
    Memo3: TMemo;
    Memo4: TMemo;
    Memo5: TMemo;
    procedure Button4Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure SendClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
  { 初始化gsm modem,并连接gsm modem}
  function GSMModemInitNew(device:PChar;
                        baudrate:PChar;
                        initstring:PChar;
                        charset:PChar;
                        swHandshake:Boolean;
                        sn:PChar):Boolean;
                        stdcall; external 'dllforvc.dll' name 'GSMModemInitNew';

  { 获取短信猫授权机器码}
  function GSMModemGetSnInfoNew(device:PChar;
                        baudrate:PChar):PChar;
                        stdcall; external 'dllforvc.dll' name 'GSMModemGetSnInfoNew';

  { 获取当前通讯端口}
  function GSMModemGetDevice():PChar;
                        stdcall; external 'dllforvc.dll' name 'GSMModemGetDevice';
  { 获取当前通讯波特率}
  function GSMModemGetBaudrate():PChar;
                        stdcall; external 'dllforvc.dll' name 'GSMModemGetBaudrate';
  { 获得错误信息}
  function GSMModemGetErrorMsg():PChar;
                        stdcall; external 'dllforvc.dll' name 'GSMModemGetErrorMsg';

  { 断开连接并释放内存空间}
  procedure GSMModemRelease()
                        stdcall; external 'dllforvc.dll' name 'GSMModemRelease';

  { 连接状态}
  function GSMModemIsConn():Boolean;
                        stdcall; external 'dllforvc.dll' name 'GSMModemIsConn';

  { 发送短信息}
  function GSMModemSMSsend(serviceCenterAddress:PChar;
                        encodeval:Integer;
                        text:PChar;
                        textlen:Integer;
                        phonenumber:PChar;
                        requestStatusReport:Boolean):Boolean;
                        stdcall; external 'dllforvc.dll' name 'GSMModemSMSsend';

  { 接收短信息返回字符串格式为:手机号码|短信内容||手机号码|短信内容||}
  function GSMModemSMSReadAll(RD_opt:Integer):PChar;
                        stdcall; external 'dllforvc.dll' name 'GSMModemSMSReadAll';

{$R *.dfm}

procedure TForm1.Button4Click(Sender: TObject);
begin
  jqhm.Text := GSMModemGetSnInfoNew(PChar(Device.Text),PChar(Baud.Text));
  Device.Text  := GSMModemGetDevice();
  Baud.Text  := GSMModemGetBaudrate();
  cwxx.Text := GSMModemGetErrorMsg();
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  if GSMModemIsConn() = true then
    GSMModemRelease();
end;

procedure TForm1.SendClick(Sender: TObject);
var
  smscontent: PChar;
  number:PChar;
  smslen: Integer;
begin
  //0) 格式检查
  if jshm.Text = '' then
  begin
    showmessage('接收号码不能为空!');
    Exit;
  end;
  smslen := Length(PChar(jshm.Text));
  //if smslen <> 11 then
  //begin
  //  showmessage('接收号码的长度不对,必须为11位数字!');
  //  Exit;
  //end;
  if fsnr.Text = '' then
  begin
    showmessage('发送内容不能为空!');
    Exit;
  end;
  //1)连接设备
  if GSMModemInitNew(PChar(Device.Text),PChar(Baud.Text),nil,nil,false,PChar(sqhm.Text)) = True then
    showmessage('GSMModemInit: 连接成功!')
  else
  begin
    showmessage('GSMModemInit: 连接失败:' + GSMModemGetErrorMsg());
    Exit;
  end;
  Device.Text  := GSMModemGetDevice();
  Baud.Text  := GSMModemGetBaudrate();

  //2) 发送短信
  number :=PChar(jshm.Text);
  smscontent := PChar(fsnr.Text);
  smslen := Length(PChar(fsnr.Text));
  if GSMModemSMSsend(nil,8,smscontent,smslen,number,false) = True then
    showmessage('GSMModemSMSsend: 短信发送成功!')
  else
  begin
    showmessage('GSMModemSMSsend: 短信发送失败:' + GSMModemGetErrorMsg());
    Exit;
  end;
  //3) 显示错误信息
  cwxx.Text := GSMModemGetErrorMsg();
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
  //1)连接设备
  if GSMModemInitNew(PChar(Device.Text),PChar(Baud.Text),nil,nil,false,PChar(sqhm.Text)) = True then
    showmessage('GSMModemInit: 连接成功!')
  else
  begin
    showmessage('GSMModemInit: 连接失败:' + GSMModemGetErrorMsg());
    Exit;
  end;
  Device.Text  := GSMModemGetDevice();
  Baud.Text  := GSMModemGetBaudrate();

  //2) 读取短信
  jsnr.Text := GSMModemSMSReadAll(1);
  //3) 显示错误信息
  cwxx.Text := GSMModemGetErrorMsg();

end;
end.

⌨️ 快捷键说明

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