用Delphi编写的一个上网助手
来源:互联网 发布:cdrx4官方软件下载 编辑:程序博客网 时间:2024/05/16 11:21
======================================================
注:本文源代码点此下载
======================================================
自从家里的电信宽带由包年换成所谓的套餐之后,每月的上网时间就必须要控制在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编写的一个上网助手
- 用Delphi编写一个Svchost.exe调用的DLL模块
- 用Delphi编写一个Svchost.exe调用的DLL模块
- 用Delphi编写一个Svchost.exe调用的DLL模块
- 上网助手
- 用DELPHI编写一个服务进程
- 用DELPHI编写一个服务进程
- 一个用VB编写的监控别人上网的软件例子
- 一个用VB编写的监控别人上网的软件例子
- 编写自定义的助手类
- 上网小助手,优雅的上网,远离VPN
- 本人用delphi编写的一个游戏----超级黑白棋v1.1,欢迎下载
- 传递和返回数据到一个Delphi编写的UDF
- 传递和返回数据到一个Delphi编写的UDF
- delphi编写保存多Socket的一个例子
- 怎样用delphi编写一个在线发送邮件的程序
- delphi 编写的com 对象 用delphi 的调用实例
- 用Delphi编写自己的可视化控件
- java 的 StringBuffer 类
- Html5小游戏之小小塔防
- 当 HTML 5 遇见 Google
- extjs 总是返回failure
- HTML代码过滤函数
- 用Delphi编写的一个上网助手
- DELPHI 线程类
- Digg 顶 踩(jQuery+Ajax)
- Java callback JAVA实现回调 .
- 一个Delphi的源码加密插件
- html 自动换行
- java学习书籍推荐
- Delphi的替代品
- Ajax(2)--Ajax核心工作机制 你忘记了吗?