======================================================
注:本文源代码点此下载
======================================================

自从家里的电信宽带由包年换成所谓的套餐之后,每月的上网时间就必须要控制在150小时以内,于是乎被迫将无线路由器由自动上网改成手动上网。每次上网必须要先打开路由器控制页面,再用excel计时,对于我这样出类拔萃的懒人来说,不免有些嫌烦。好容易乘工作之闲,再次写了一个上网助手,直接控制无线路由器的连接和断线,同时自动进行计时,用起来果然方便许多。

上面是程序运行时的界面,图中可以看到每天的上网总时间,以及每次连接和断线的时间;还能一并看到余下每天可用的平均上网时间。程序可以最小化到托盘,允许直接在trayicon的弹出菜单上进行连接和断线操作。

以下从代码说明此程序的核心功能部分:

const basicurl = 'http://192.168.1.1/';

const connecturl = 'http://192.168.1.1/userrpm/statusrpm.htm?connect=连%20接&wan=1';

const disconnecturl = 'http://192.168.1.1/userrpm/statusrpm.htm?disconnect=断%20线&wan=1';

这三行是tp-link无线路由器的基本设定url。

procedure tmainform.initializerouter;

begin

idhttp1.request.accept := 'image/gif, image/x-xbitmap, image/jpeg, ' +

'image/pjpeg, application/x-shockwave-flash, ' +

'application/vnd.ms-powerpoint, application/vnd.ms-excel, ' +

'application/msword, */*';

idhttp1.request.referer := 'http://192.168.1.1/';

idhttp1.request.host := '192.168.1.1';

idhttp1.request.acceptlanguage := 'zh-cn';

idhttp1.request.acceptencoding := 'gzip,deflate';

idhttp1.request.useragent := 'mozilla/4.0(compatible;msie 6.0;windows nt 5.2;)';

idhttp1.request.connection := 'keep-alive';

idhttp1.request.password := '******';

idhttp1.request.username := 'sunwaywei';

end;

这个函数是初始化路由器连接。程序使用idhttp组件来向路由器发送http请求,函数中对请求的参数配置进行了基本设定。

procedure tmainform.doconnect;

begin

idhttp1.get(basicurl);

idhttp1.get(connecturl);

fonline := true;

fonlinefrom := now;

end;

procedure tmainform.dodisconnect;

begin

idhttp1.get(basicurl);

idhttp1.get(disconnecturl);

fonline := false;

dbmodule.insertnewtimerec(fonlinefrom, now);

filldatelist;

getstatistics;

updatestatistics;

end;

以上两个函数控制路由器进行连接或是断线。在开发这里的时候,我发现很奇怪的现象,即在访问connecturl或是disconnecturl之前,必须先访问一次basicurl,这样操作才能够成功。很奇怪,我也不理解为何会如此。总之是这样一做之后,就ok了。

上网计时部分对于有一些编程经验的人来说,应当是不太难的。从dodisconnect函数中可以看到,当断线的时候,把本次上网时间插入数据库即可。至于按日期分类显示什么的功能,只要理清数据关系,也没什么难度。以下给出我所使用的几个sql语句,供有兴趣的人参考或是批评指正。

const sqlgetdatelist =

'select datevalue(fromtime) as [date],' +

'sum(datediff("n", fromtime, totime)+1) as totaltime ' +

'from timerec ' +

'where fromtime >= dateserial(year(now),month(now),1) ' +

'group by datevalue(fromtime) ' +

'order by datevalue(fromtime) desc';

const sqltotalminutes =

'select sum(datediff("n", fromtime, totime)+1) as totaltime ' +

' from timerec where fromtime >= dateserial(year(now),month(now),1)';

const sqltodayminutes =

'select sum(datediff("n", fromtime, totime)+1) as totaltime ' +

' from timerec where fromtime >= dateserial(year(now),month(now),day(now))';

说明一下,我使用的是access数据库,所以sql语句中使用的access函数。使用sql server的话还是需要修改的。

======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/

用Delphi编写的一个上网助手相关推荐

  1. 随着上网次数越来越多,IE地址栏中留下大量的历史网址,感觉很不爽,于是决心写一个清除IE地址栏的应用程序,随说有“上网助手”,但它要在能上网时才起作用,我想在不能上网时来对系统进行清理,于是写了一个叫

    随着上网次数越来越多,IE地址栏中留下大量的历史网址,感觉很不爽,于是决心写一个清除IE地址栏的应用程序,随说有"上网助手",但它要在能上网时才起作用,我想在不能上网时来对系统进行 ...

  2. 【 Qt编写一个串口助手】

    Qt编写一个串口助手 一.初始化 初始化需要注意的是,需要用到关于图形的qcustomplot 库,添加相关的.h和.cpp文件并在.pro文件下加上greaterThan(QT_MAJOR_VERS ...

  3. C#编写一个串口助手上位机软件

    对于工程师来说,串口助手可以说是必不可少的一个工具,一个好的串口助手可以大大方便我们的研发调试.网上串口助手很多,如果能够根据自己需要做一个合适的串口助手,那么既能方便自己,也能掌握上位机的开发,对于 ...

  4. delphi打包python_使用Delphi 编写Python Extension

    使用Delphi 编写Python Extension 作者:1000copy 摘要: 在互联网公共可访问领域内,关于Python/C interface的介绍,手册都是比较多的.Py直接支持C编写扩 ...

  5. Delphi编写后台监控软件

    Delphi编写后台监控软件 文章来源:Delphi程序员之家   后台监控软件,为了达到隐蔽监控的目的,应该满足正常运行时,不显示在任务栏上,在按Ctrl+Alt+Del出现的任务列表中也不显示,管 ...

  6. 用Delphi编写ASP的ActiveX

    ASP中的ActiveX服务器组件为标准的Automation ActiveX组件,只要使用由ASP提供的接口和遵守ASP有关规则便可.Delphi 4.0作为一种高效.快速.强大的开发语言,为开发C ...

  7. Delphi:第一个hello world程序

    Delphi介绍 这里Delphi做一个简单介绍,因为现在移动互联网时代的崛起,桌面应用程序没有以前那么流行,不知道关注delphi的人还多不.用delphi开发桌面应用程序是很快的,第一听说delp ...

  8. 利用Delphi编写Socket通信程序

    一.Delphi与Socket计算机网络是由一系列网络通信协议组成的,其中的核心协议是传输层的TCP/IP和UDP协议.TCP是面向连接的,通信双方保持一条通路,好比目前的电话线,使用telnet登陆 ...

  9. Delphi 编写数字签名验证并获取签名信息

    [摘要]本文介绍Delphi 编写数字签名验证并获取签名信息,并提供详细的示例代码供参考. 一个客户想通过编程实现验证程序自身的数字签名来确保程序的完整性,防范病毒感染以及防止一些无聊人士的修改(通过 ...

  10. 用delphi编写医院的复杂报表

    用delphi编写医院的复杂报表 江苏省无锡市中医医院电脑房 袁波 ---- 我院的信息管理系统采用delphi编程,由于各科要求不同,报表形式也多种多样,编写起来让人头痛.delphi运行在WIND ...

最新文章

  1. Netty之SimpleChannelInboundHandler
  2. 【整洁之道】如何写出更整洁的代码(上)
  3. CentOS 初体验十五:阿里云安装Nginx
  4. nio 读取目录所有文件_在NIO.2中使用文件和目录
  5. 想对你说的话,就在这里!
  6. 【Spring】Spring Boot 和 Redis 自定义 RedisTemplate
  7. AndroidStudio_解决butterknife在module中使用BindView Attribute value must be constant---Android原生开发工作笔记229
  8. WPF 分享一种设置程序保存配置文件的方法
  9. [转贴]深山红叶使用图文教程
  10. Activiti学习记录 Activiti初始化数据库、Activiti6增加表注释字段注释
  11. 官网下载storage manager方法
  12. 怎样压缩PPT文件的体积
  13. 亚马逊电商可以用阿里云服务器吗
  14. pycharm提示无法加载文件 C:\Users\admin\Desktop\pythonLX\venv\Scripts\activate.ps1,因为在此系统上禁止运行脚本
  15. 计算机软件工作室起名'',游戏工作室起名大全
  16. UNITY 2D入门基础教程 (一)
  17. python爬取整个网站的广告敏感词_Python实现敏感词过滤的4种方法
  18. VRTK 初识vrtk,如何在自己的项目中使用vrtk
  19. 中国移动MAS机的特点
  20. c语言循环中按键跳出,C语言跳出循环

热门文章

  1. 金融计量经济学中使用R构建置信区间
  2. 网件刷breed_小白爱折腾 篇二:矿渣小娱C1刷breed以安装固件(适用其他路由器)...
  3. 四元数与欧拉角的转换与使用matlab的simulink搭建实现
  4. STM32菜鸟成长记录---RS485通讯协议的应用
  5. java线程栈日志_Java线程堆栈
  6. 【EDA】Mutisim基于Multisim的带通滤波器仿真设计实验
  7. 3.21世纪计算机技术展望
  8. 网页设计与制作项目教程HTML+CSS+JavaScript之项目二
  9. Android positionViewHolder{4d61b3c position=2 id=-1, oldPos=-1, pLpos:-1 no parent}
  10. 定时报警器c语言程序,单片机控制的简易定时报警器电路设计(含电路图和程序)...