作者:李赫元
电骡(Emule)是国内最流行的P2P软件之一,他强大的功能让每位用户都能分享到互联网的优质资源。然而,主流的电骡软件中,一直没有类似于“完成任务后自动断网/关机”的选项。于是,很多朋友想尽办法让电骡下载完后自动断线、关机,却往往以失败告终。其实,我们可以写一个简单的VB程序来实现这个功能。
一、目的分析与实现原理
当所有下载任务都完成时,电骡的Temp文件夹为空(大小为0)。在VB中用FSO(FileSystemObject)来监视该文件夹大小是否为零,即可得知电骡的所有任务是否下载完。(注:使用FSO需要在工程-引用中添加“Microsoft Scripting Runtime”)
在Emule程序文件夹下面有一个“downloads.txt”文件,电骡每添加一个文件,就会在downloads.txt的结尾写上一行数据,当文件下载完成后,对应的数据行会被删去,利用这一点,我们可以对某个文件是否下载完毕进行监控,通过对这行数据中的eD2K链接进行字符操作,可以获得当前正在下载的文件信息。
VB6中借助Windows Xp的Shutdown命令,可以绕开API轻松实现关机、重启、注销等任务。同时VB6辅以Windows Xp的ntsd命令,可以实现关闭电骡。
二、界面设制
用ListBox列举正在下载任务供用户选择,两个Timer分别定时检查单个和全部任务是否完成,Enabled设置为False,Interval设置为5000或更高。Option选项卡供用户选择电骡下载完毕后执行什么操作。设计好的界面如图1
 图1
三、编码
篇幅限制,这里只给出部分代码,完整的源代码及详细注解到这里下载
程序行:
Dim fso As New FileSystemObject
Private Sub Command2_Click() '点击按钮开始监视全部任务是否完成
timerall.Enabled = True '启动监视全部文件的Timer控件
End Sub
|