📄 empp.pas
字号:
unit empp;
interface
type
{!多线程程序注意!
此api只保证在主线程里调用才是安全的,其他线程不要直接调用!如果需要调用请先交给主线程
,由主程序提交消息.
api提交接收消息速度很快,不必担心性能问题.
}
{跟踪回调涵数,用于api输出信息,此涵数线程是主线程}
TTraceProc = procedure(Msg: PChar); stdcall;
{当api接收到一条短信(以下简称mo)时的回调涵数,此涵数执行时将阻塞api的消息处理,
因此需要保证此涵数尽快完成操作,否则影响api的收发流程.此涵数线程是主线程
}
TMOProc = procedure(SrcAddr: PChar; Msg: PChar); stdcall;
{以下是api提供的涵数}
{初试化api,传入短信服务器的ip,port,用户名,密码,持久性海量存储使用的队列文件名,
队列最大容量,api跟踪回调涵数,mo回调涵数
api提供由文件实现的海量队列,队列大小由调用者配置,如果程序退出时还有短信未发送完毕,
则下次启动时将继续自动提交;如果队列大小跟上次设置的不同,队列将被清空,未发送短信将丢失,
队列大小与发送效率几乎无关,只是占用硬盘空间,因此可以将队列设置为可能提交的最大值,
如50000.队列文件如果不存在会自动生成,如果存在则重细腻打开.
此涵数在进程生命期只需要调用一次.
返回:0成功,其他失败.
}
function Init(ip: PChar; Port: Word; User: PChar; Pswd: PChar; Queue: PChar; QueueSize: Integer; Trace: TTraceProc; MO: TMOProc): Integer; stdcall;
{提交短信到api对列,api将自动后台处理.
输入:
DestAddr:目的号码,手机不加0,如13812345678,小灵通或固话加区号,如07178765432
Msg:短信内容,不超过70字符,数字字母汉字都算一个.如果超长调用者需要分割后再发送.api不分割.
返回:
0:成功提交.
其他:失败.
}
function SendSMS(DestAddr: PChar; Msg: PChar): Integer; stdcall;
{
查询余额
返回:
如果未登录状态,返回0
}
function GetBalance: Integer; stdcall;
{
设置api是否调试状态,调试状态下输出更多协议信息
输入:
0:不调试.
其他:调试状态
}
procedure SetDebug(Value: Integer); stdcall;
{
查询api队列待发短信数量
}
function GetUnSend: Integer; stdcall;
{
查询api状态
返回:
0:未正确初试化.
1:'连接断开'
2:'连接已建立'
3:'正在登录'
4:'已登录'
5:'已退出登录'
}
function GetState: Integer; stdcall;
{
释放api资源.
}
procedure Uninit(); stdcall;
implementation
const
DLLNAME = 'empp.dll';
function Init; external DLLNAME;
function SendSMS; external DLLNAME;
function GetBalance; external DLLNAME;
procedure SetDebug; external DLLNAME;
function GetUnSend; external DLLNAME;
function GetState; external DLLNAME;
procedure Uninit; external DLLNAME;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -