Delphi手机短信
目前大多数的企业及学校内部都建有Intranet。并建有内部网站实现资源共享。为了使用户及时的得知网上的最新信息,很多网站都采用了手机短信提醒的方式,但使用中国移动或中国联通的SP方式,会大大的增加企业的成本。故本文讨论的是利用GSM Modem和短信发送控件来实现的短信提醒。
首先,介绍一下笔者所使用环境。
服务器:Windows 2000 Advanced Server、IIS 5.0、ASP、SQL Server 2000
客户端:Windows XP 或Windows 2000
开发工具:Delphi6.0,APRO4.06
在建立项目之前先在Delphi6中安装APRO控件,这是笔者使用的方法,读者也可以用comm32。
安装APRO如图1
装好后,新建项目。
选择ActiveX Library
点击OK后。保存项目命名为jksms.dpr.
新建一个自动化对象
命名为:sms点击OK.
保存单元文件,命名为:main.pas。
新建方法:sendmsg
为该方法添加参数。
Comnumber:GSM Modem所在的串口号。
Phone:要发送的目的手机号码。
Msg:发送信息内容。
完成后单击刷新。
打开main.pas为该方法写程序。
以下是main.pas的程序清单:
unit main;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
ComObj, ActiveX, jksms_TLB, StdVcl, SysUtils,windows,ADTrmEmu,
OoMisc,registry;
type
Tsms = class(TAutoObject, Isms)
protected
procedure sendmsg(comnumber: Integer; const phone, msg: WideString);
safecall;
{ Protected declarations }
end;
implementation
uses ComServ , adport;//这里需手工添加
function SEncodeMobNO(SmobNO: string): string;
//要想发送中文短信必须使用Modem的PDU方式。这个函数是将手机号码进行PDU编码。
var
TempPchar: Pchar;
i: integer;
Str: string;
begin
if (copy(smobno, 1, 1) = ’+’) then //判断是否包含国家编码
SmobNO := copy(smobno, 2, length(smobno) - 1); //去掉手机号码中的’+’
if ((length(SmobNO) mod 2) = 1) then
SmobNO := SmobNO + ’F’;
TempPchar := Pchar(SmobNO); //将字符串 Char数组化
i := 0;
Str := ’’;
while i < length(TempPchar) do begin
Str := Str + TempPchar[i + 1] + TempPchar[i];
i := i + 2;
end;
result := Str;
end;
function EncodeChinese(Input: WideString): string;//将信息内容进行PDU编码
var
i: Integer;
begin
Result := ’’;
for i := 1 to Length(Input) do
Result := Result + Format(’%4.4X’, [ord(Input[i])]);
end;
procedure Tsms.sendmsg(comnumber: Integer; const phone, msg: WideString);
//发送短信的方法
var
apdcomport:Tapdcomport;
r,s,s2,s3,s4,s5:string;
cmdlong,tmp:integer;
msgs:WideString;
begin
apdcomport:=TApdComPort.Create(nil);//创建串口通信对象
apdcomport.AutoOpen:=false;//关闭自动打开属性
apdcomport.Open:=false;
apdcomport.ComNumber:=comnumber;//设置串行通信口
apdcomport.Baud:=19200;//设置串口波特率
msgs:=msg;
s:=’0031000D9168’ ;
//PDU编码属性,这种方法是不需要设置短信中心号码的,因为现的手机SIM卡已经写好了
s2:=SEncodeMobNO(phone);//对手机号码进行PDU编码
s3:=’0008A7’;
s4:=’’;
s5:=EnCodeChinese(msgs);
tmp:=length(s5)div 2;
s4:=format(’%X’,[tmp]);
if length(s4)<2 then
s4:=’0’+s4;
//计算PDU编码长度
r:=s+s2+s3+s4+s5+^Z;
cmdlong:=(length(r)-2) div 2;
apdcomport.Open:=true;//打开串行口
apdcomport.Output:=’AT+CMGF=0’#13;//设置Modem为PDU模式
delayticks(7,true);//延时
apdcomport.Output:=’AT+CMGS=’+inttostr(cmdlong)+#13;//设置信息长度,这里应为PDU编码长度的1/2.
delayticks(7,true);
apdcomport.Output:=r;//发送短信。
delayticks(9,true);
apdcomport.Open:=false;
apdcomport.Free;
end;
initialization
TAutoObjectFactory.Create(ComServer, Tsms, Class_sms,ciMultiInstance, tmApartment);
end.
以上程序编译后生成jksms.dll文件。Copy到web服务器上d:\。运行:regsvr32 d:\jksms.dll。在ASP程序中这样使用。
Set sms=Server.CreateObject("jksms.sms")
Msg="您好!测试一下好不好用!"
Phone="手机号码"
Port=Modem所在端口号
Sms.sendmsg port,phone,msg
至此,控件制作完成。此控件在笔者单位已运行半年,一切正常。
转载于:https://blog.51cto.com/rosehacker/455881
Delphi手机短信相关推荐
- 开发一个发送手机短信的计算机软件
开发一个发送手机短信的计算机软件 很久以前就有这个想法了,无奈时间有限,资料不足,一直没有成功.昨天突然意念再生,没想到还真搞成功了.接下来我将对这方面的技术做一个总结,并详细介绍我使用的方法细节.我 ...
- 为 Asp.net 网站新增发送手机短信功能
本文旨在帮助那些为网站发送手机短信正在寻求解决方案还未最终找到解决方案的朋友提供参考. 适合人群 须满足一下条件之一,如果以下3个条件您都不满足,为节约您宝贵的时间,请终止阅读本篇文章. 条件如下: ...
- php中短信验证大致流程,实现php手机短信验证功能的基本思路
现在很多网站为了避免用户烂注册,都在注册环节添加有手机短信验证功能,用户注册时需要短信验证码才可以,那么这种手机短信验证功能是如何实现的呢?其基本思路是什么呢?下面乐信小编就来为大家介绍下: 实现手机 ...
- Nagios借助yahoo.cn邮箱实现手机短信报警功能
Nagios借助yahoo.cn邮箱实现手机短信报警功能<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:offic ...
- 手机短信验证码真的安全吗?
手机的蓬勃发展,衍生出来众多行业,也让原本功能单一的手机号做出极大的改变.如今似乎每个人的手机号都绑定了或多或少的各种账号,手机绑定的东西越来越多,涉及到的重要的东西也越来越多,例如像银行卡绑定手机号 ...
- 推荐一个用Java实现监控手机短信、来电、App的开源项目
平日小伙伴有没有遇到过这样一个情况,玩着ipad或电脑,结果要求手机上的验证码,然后手忙脚乱的找手机在哪里? TJ君就一直想着是不是搞一个短信转发器,让这种短信直接转到我用的设备上,方便快速!可惜啊, ...
- 删除的页面怎么恢复_手机短信删除了怎么恢复?手机短信恢复最新教程
手机短信删除了怎么恢复? 时至今日,PC端互联网日渐饱和,移动互联网正在蓬勃发展,当然也有很多渐入末路.意料之外的是,像短信验证码仍在行业中占着举足轻重的地位.相信很多小伙伴都有定期清理手机短信的习惯 ...
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用...
近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口,下面我把我在项目中用到的记录一下,以便给大家提供个思路,由于本人的文采有限, ...
- 编写了一个通过手机短信平台收发短信的软件
看过我写的"使用Ajax技术编写的一个网站"这篇博客的网友也许已经知道我现在是做什么工作的了.由于工作的原因,需要在网络上从事一些进行商业营销的活动,以帮助工作的开展.比如:介绍公 ...
最新文章
- 当支持向量机遇上神经网络......
- ASP.NET程序中常用的三十三种代码(转载)
- python ln2怎么写_Python2和3切换默认
- 在windows下安装python包管理器pip及使用
- Spring Cloud Gateway介绍(一)
- iPhone13真香了?苹果官网被抢崩了,连夜补货!粉色或成爆款..
- HDU 1281 棋盘游戏 【二分图最大匹配】
- 荣耀赵明 “Diss” 5G 手机;甲骨文创始人埃里森:Uber 一文不值;Chrome 77 发布 | 极客头条...
- 腾讯游戏人脸识别系统更新!刷脸的同时语音提示付款成功_游侠网 Ali213.net
- 关于max(X,Y),min(X,Y)
- 剧情介绍:“遗愿清单”
- QQ所有文件和目录详细分析
- xmpp 即时通讯
- 一英寸芯片大小_晶圆和芯片的关系_一个芯片有多少晶圆
- GPU编程3--GPU内存深入了解
- 李宏毅2022机器学习hw5
- 使用beautiful soup解析xml
- zabbix5.0监控esxi和vcenter
- 云存储Java客户端上传文件
- QQ可以用十六进制登录哦
热门文章
- viper4android2.3.1.1,【资源】ViPER4Android FX 音效驱动 v2.3.0.1
- 华为c语言中static的作用,C语言编程规范(华为、林锐、MISRAC).pdf
- 中文分词第三方库_Python计算生态jieba库和random库的综合运用之爬山篇
- mpAndroidchart 坐标和图表距离_几个小细节--图表那些事
- 东京大学计算机专业研究生好吗,东北大学计算机类研究生个人考研经历以及感受...
- Java中提取字符串中的数字
- Oracle触发器1-介绍
- abcde依次进入一个队列_数据结构与算法 | 一文掌握队列Queue(真题讲解)
- 细胞自动机 c语言程序,Processing精彩例程之细胞自动机
- 优雅的使用springboot集成任务调度