;先打开迅雷并开始下载再运行此代码
$memstart = 0
While 1
Sleep(10000);监控时间自己调整吧
Local $mem = ProcessGetStats('Thunder.exe',1)
If $mem[4] <> $memstart Then
$memstart=$mem[4]
Else
MsgBox(0,0,'下载停止啦!')
;ProcessClose('Thunder.exe')
EndIf
WEnd
原理:监控迅雷进程IO信息---写入字节数,发现停止写入则终止迅雷
其他思路:
1.如果下载文件都是放在同一个目录的话,直接监控此文件夹文件列表,因为迅雷下载文件的开始会自动生成扩展名分别为"td"和"cfg"的文件,当全部下载完成此两个后缀名的文件会消失。但有个问题就是,可能之前有些下载任务手动终止了,这样就会给判断带来误差了,所以不是很好的方法
2.如果下载文件是不同目录的,可以监控进程读写哪些文件并获取读写文件的路径,然后在通过以上方法判断,这种方法应该是最佳解决方法了,不过我不知道怎么获取进程在创建和读写文件的路径(类似Process Monitor),希望有能力的坛友能探讨下这个问题
3.通过迅雷的开放接口直接操作迅雷界面获取下载列表数据或标记,这个嘛更复杂了,有能力的研究下:http://xldoc.xl7.xunlei.com/0000000024/index.html |