用飞信免费短信接口编写小工具

我有时需要编译大程序或做一些运算,计算机处理数据时间比较长,这时很难说服自己去做别的事情,经常眼巴巴地瞅着计算机,心急如焚。即使放下这个活去做别的事情心里也不踏实,经常时不时地回来看看计算的情况。

如果能有一个简单易用的办法及时告诉我程序处理完毕就好啦。

后来我发现了http://sms.api.bz/这个飞信免费短信的接口平台,用这个平台可以轻松发送短信通知自己。因为觉得这种需求可能不大,所以写了这个程序后一直自己用,没有向众人献丑。但是我今天在干等着迅雷下载一个急用的资料时,忽然想到可以把这个程序用上——下载完毕让计算机发条短信给自己,然后我再过来查看资料岂不美哉。

说明1:首先,你得有个飞信的账号,没有的话,去注册一个吧。

说明2:无参数或参数个数错误时,采用hardcoded参数发送,否则用传入的参数发送。这样可以方便从程序里调用。

说明3:其实没有必要打出来MessageBox滴。

辩解1:写这种小程序就是要少花精力,所以选择了最熟悉的vc;

辩解2:要用到简单的串,故加上mfc;

辩解3:还要方便程序调用,因此采用控制台。

废话少说,下面就把代码贴出来抛砖引玉。

1.创建基于mfc的console程序;

2.主要功能code:

void SendMessage(int argc, TCHAR* argv[])
{
  if(5!=argc && 1!=argc && 2!=argc)
 {
  printf("Send sms, using fetion api. Please make sure of the usage./n"
  "Usage: your_phone_number your_password his(her)_phone_number message./n"
  "If no parameters, will send /"OK/" to 11111111111./n");
 }
 CString usrname, pwd, recvusr, message;
 if(5==argc)
 {
  usrname.Format(_T("%s"), argv[1]);
  pwd.Format(_T("%s"), argv[2]);
  recvusr.Format(_T("%s"), argv[3]);
  message.Format(_T("%s"), argv[4]);  
 }
 else
 {
  usrname = _T("11111111111");// Source fetion phone number.(Your number)
  pwd = _T("yourfetionpass");// Your fetion password.
  recvusr = _T("11111111111");// Targer fetion phone number.(Your number TOO)
  message = _T("OK!");
 }

 

 CString strSentence, strLocalInfo;
 strLocalInfo.Format(_T("username=%s&password=%s&sendto=%s&message=%s"),usrname,pwd,recvusr,message);
    CString strRemoteName =_T("http://sms.api.bz/fetion.php?") + strLocalInfo;
 
    CInternetSession sess;
    CHttpFile* fileGet;
    try
    {
        fileGet=(CHttpFile*)sess.OpenURL(strRemoteName);
    }
    catch(CException* e)
    {
        fileGet = 0;
    }
 
    if(fileGet)
    {
        DWORD dwStatus;
        DWORD dwBuffLen = sizeof(dwStatus);
        BOOL bSuccess = fileGet->QueryInfo(HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, &dwStatus, &dwBuffLen);
   
        if( !bSuccess || dwStatus< 200|| dwStatus>=300 )
        {
            strSentence.Format(_T("打开网页文件出错,错误码:%d"), dwStatus);
            AfxMessageBox(strSentence);
        }
        fileGet->Close();
        delete fileGet;
    }
    else
        AfxMessageBox(_T("不能找到网页文件!"));
 
    sess.Close();
}

3.main函数

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
 int nRetCode = 0;

 // initialize MFC and print and error on failure
 if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
 {
  // TODO: change error code to suit your needs
  _tprintf(_T("Fatal Error: MFC initialization failed/n"));
  nRetCode = 1;
 }
 else
 {
  SendMessage(argc, argv);
 }

 return nRetCode;
}

4.注意传参时,message里不能有空格,否则会被识别成多个参数。我的本意是能发送OK!或者DONE!就心满意足了,你不会想用这个程序给别人发抒情诗吧。

5.怎么在迅雷下载完毕后自动调用它呢?迅雷的“配置面板”里有“下载安全”,可以指定“下载后自动杀毒”。这个功能我一直没机会用,可以把路径配置成这个小程序的路径,代码里判断argc是否等于2就是是支持“下载后杀毒”功能的。注意:“指定格式”里的后缀名要跟你下载的文件后缀匹配哦。在flashget里也是同样的使用方法。迅雷和flashget都不支持通配符,很令我窝火,如果大家有好办法请明示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值