上网助手

本文介绍了一款用于控制家庭无线路由器自动上网并实现计时上网的工具,包括初始化路由器、连接与断线操作、以及通过Excel计时的改进方案。程序能够最小化到托盘,并允许直接在TrayIcon的弹出菜单上进行操作。同时提供了SQL语句用于按日期分类显示上网时间及统计每日剩余可用时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自从家里的电信宽带由包年换成所谓的套餐之后,每月的上网时间就必须要控制在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的话还是需要修改的。


【插件简介】 一款集成本地书签、历史记录与 优快云搜索(so.youkuaiyun.com) 的搜索工具;帮助您的浏览器提升10倍效率,打造更酷的chrome!;优快云浏览器助手插件 由优快云官方开发,集成一键呼出搜索、万能快捷工具、个性化标签页和底层免广告四大功能,让您在工作学习场景中,告别繁琐复杂的切换,快速解决问题,打造专属你的效率神器!①一键快捷搜索:在页面任意网页下,点击键盘的 "C",即可弹出 [极简搜索框], 输入关键词即可快速展现 "网页、书签、历史记录"的搜索结果。 ②万能快捷工具:按C呼出搜索框后,输入代码即可快速搜索。③个性化标签页: 新标签页可自定义换肤,自动展现程序员热门网站,并可以自定义常用网站,同时可选择多种搜索引擎,打造专属你的清爽标签页!④底层永久免广告:即日起,安装该插件新用户,可永久去优快云站内广告。从底层去广告,占用内存极小,让上网体验更清爽。去广告特权版本限时下载! 【插件网站】 https://plugin.youkuaiyun.com 【插件更新】 2021-03-01 09:54:18 【插件版本】 2.8.1 【插件标签】 高效开发 工具 Chrome插件 【插件安装教程】 请下载文件后先解压,然后进入页面: chrome://extensions/ 将文件拖拽到该页面,完成安装。 具体步骤: https://t.csdnimg.cn/NxMv 【热门插件】 ·优快云 浏览器助手: https://plugin.youkuaiyun.com/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值