📄 vc»
字号:
SMS客户程序:指需要调用SMSCLIENT.DLL中的函数来收发短消息的程序。
SMS服务程序: 指提供短消息服务的程序。
SMS客户程序通过引入SMSCLIENT.DLL 中的4个函数,来获得短消息收发能力
int InitConnect(char *hostname);
功能:初始化SMS客户程序与SMS服务程序的连接
参数说明:hostname--指运行SMS服务程序的计算机的网络标识
返回:-1--失败 0--成功
int SendMsg(char *SCA,char *DA,char *UD);
功能:发送一条短消息(实际上是提交一条消息给SMS服务程序,由SMS服务程序发出去)
参数说明:SCA--短消息中心号码(如成都移动就是:"13800280500")
DA--接收方手机号码(如"13980711226")
UD--消息内容(如"你好!");
返回:-1:提交给SMS服务程序失败
0:提交给SMS服务程序成功
int QueryMsg();
功能:查询SMS服务程序
参数说明:无
返回:-1--查询失败,SMS服务程序无响应。
0--查询成功,SMS服务程序端没有收到的消息。
N(1,2,...)--查询成功,SMS服务程序有N条收到的消息。
char *ReadMsg();
功能:读取一条消息
参数说明:无
返回:""--读取失败,SMS服务程序无响应
"EMPTY"--读取成功,但SMS服务程序内没有收到的消息。
"OA:..."--读取成功,而且SMS服务程序有收到的消息。
具体格式
"OA:发送方号码 TIME:接收到该消息的时间 UD:消息内容"
在VC中的使用示例:
首先在欲调用DLL函数的cpp文件前部先声明函数指针,定义函数类型:
typedef int (* _INITCONNECT)(char *hostname);
typedef int (* _SENDMSG)(char *SCA,char *DA,char *UD);
typedef int (* _QUERYMSG)();
typedef char * (* _READMSG)();
然后定义如下变量∶
HINSTANCE hLibrary;
_INITCONNECT InitConnect;
_SENDMSG SendMsg;
_QUERYMSG QueryMsg;
_READMSG ReadMsg;
在调用DLL处加入如下语句进行DLL装载:
int i;
char *s;
//首先装载DLL库
hLibrary=LoadLibrary("SMSCLIENT.dll");
//函数定位
InitConnect=(_INITCONNECT)GetProcAddress(hLibrary,"InitConnect");
SendMsg=(_SENDMSG)GetProcAddress(hLibrary,"SendMsg");
QueryMsg=(_QUERYMSG)GetProcAddress(hLibrary,"QueryMsg");
ReadMsg=(_READMSG)GetProcAddress(hLibrary,"ReadMsg");
//在程序启动后,应当进行初始化连接操作:
r=(*InitConnect)("xtpad"); //xtpad是运行sms服务程序的计算机网络名称,这里是举例。
if(r==-1){
MessageBox("","初始化连接失败:SMS服务器没有响应",MB_OK);
return;
}
//需要发送消息时:
r=SendMsg("13800280500","13980711226","你好!");
if(r==-1){MessageBox("","消息发送失败:SMS服务器没有响应",MB_OK);return;}
if(r==0) {MessageBox("","消息发送成功!",MB_OK);}
//查询SMS服务程序中有几条未读取的消息:
r=QueryMsg();
if (r==-1) {MessageBox("","消息查询失败:SMS服务器没有响应",MB_OK);}
if (r==0) {MessageBox("","消息查询成功:SMS服务器没有未读消息",MB_OK);}
if (r>0) {
sprintf(tmpbuf,"消息查询成功:SMS服务器中有 %d 条信息",r);
MessageBox("",tmpbuf,MB_OK);
}
//读取一条消息
s=ReadMsg();
if (strlen(s)==0){ MessageBox("","消息读取失败::SMS服务器没有响应",MB_OK);
else if strcmp(str,"EMPTY")==0) MessageBox("","消息读取成功:SMS服务器中没有消息",MB_OK);
else MessageBox("读到一条消息:",str,MB_OK); (注:每读取到一条消息,成功SMS服务器中的消息就会减少一条)
.....
//程序在退出时,应当释放动态库
FreeLibrary(hLibrary);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -