醉里乾坤大,壶中日月长

记给朋友做的小工具

上一篇 / 下一篇  2011-04-08 09:55:20 / 个人分类:闲言碎语

需求:朋友的朋友在政府部门工作,他们的考勤办法为,每天早晨上班开机,系统会自动弹框,点击确定,算是上班报到;下班时候,点击桌面图标,点击确定,算是下班报到。此人听闻有工具可以实现此功能,可以每天迟到早退了,就找到我的朋友。

朋友和这人有利益往来,也算是所谓的“权利寻租”,遂联系我给其写此软件。

环境:Windows XP SP3

实现功能:实现上班、下班的自动报到;

 

首先做需求分解,因为是朋友的活,就大概分析了下,主要实现如下功能:

1.      定时开机;

2.      开机自动登录系统;

3.      工具开机启动;

4.      桌面找到上班提示框,并点掉;

5.      定时点击桌面图标,并点击,做下班报到;

6.      关机;

 

分拆了上述需求之后,就开始做实现,其实很多功能都是可利用系统实现的,相比于自我实现的工具,如果系统已实现,我认为尽量使用系统实现,稳定可靠,比如:

 

1.      定时开机的配置:开机进入BIOS –>找到电源管理页签(POWER MANAGEMENT FEATURES,里面有RESUME ON RTC ALARM,配置为ENABLE—>配置定时开机的日期和时间(这里的日期配置居然有“+-”号调整,恼~),点击F10保存配置退出;

当然,针对不同类型的BIOS,配置方式可能稍有偏差,但大概如此;

 

2.      开机自动登录系统的配置:主要是系统启动到进程启动之间要有一个用户登录的过程,配置成管理员帐户自动登录,可以让程序自动Run起:

单击“开始/运行”,输入“rundll32 netplwiz.dll,UsersRunDll”,--回车---弹出“用                户帐户”窗口,--取消选定“要使用本机,用户必须输入用户名和密码”选项---确定,在弹出      的对话框中输入你想让电脑每次自动登录的账户和密码即可。如果你没设置密码则不用输入密码,直接确定。

 

3.      针对第6点的关机,可以直接运行系统命令:shutdown –s –t 10,意味着十秒之后系统自动关机,如果强力点还可以配上参数–f

 

4.      程序的自动运行,开始的时候本身是想写个windows服务,配置其模式为auto,也就是开机自动启动,后来想了想麻烦,依然直接使用windows的计划任务;这个顺便说下,windows下的计划任务和Linux下的cron都非常好用的,远比自己轮询等待好点;

 

好的,经过上面的系统实现功能的分析,基本上这个小工具需要自我实现的内容就非常少了:

1.      找到上班提示框,并点掉;

2.      桌面上定时点击图标,并点击,做下班报到;

 

这两步基本就可以归结到Windows应用程序自动化的范畴了,理论上说,对于Windows API的熟悉可以让这步工作成为可能;

这里只列出使用到的函数吧(python):

寻找桌面图标:

                Win32gui.FindWindowsEx()

        点击:

                Win32api.mouse_event()

        至于自动点击桌面图标是组里其他人实现的,我用的现成函数,不方便公开人家的工作成果了。

 

功能完成之后,用py2exe打包成autoClick.exe

 

最好,因为毕竟不是个“好的程序”,大大的CMD框在任务栏会让人起疑,用了个小技巧,用VBS调起程序,使其在后台运行,在任务管理器中可见即可:

        Set bjShell = CreateObject("Wscript.Shell")

        objShell.Run("autoClick.exe"), 0, TRUE    '此时你的记事本就在后台打开了可在任务管理器中看到


TAG:

逍遥客 引用 删除 xiaoyaoke   /   2011-04-08 16:19:41
原帖由wolaizhinidexin于2011-04-08 15:26:25发表
呵呵,我写了个工作日志的。其实原理挺简单的


嗯,不太难,而且有很多函数积累,基本很快搞定了
文青山 引用 删除 wolaizhinidexin   /   2011-04-08 15:26:25
呵呵,我写了个工作日志的。其实原理挺简单的
 

评分:0

我来说两句

Open Toolbar