;还有三个问题 ;1)怎么才能一口气把不同电脑的迅雷地址都能找到呢,当然是大部分电脑,DIY安装目录的就算了,实现之后告诉下,谢谢了 ;2)LV_Delete() 清理不掉列表,第二次加载后,都成了重复的了,不知道怎么处理 ;3)abcd=http://www.dytt8.net%A_LoopField% ;本来是170个网址,莫名其妙的出来172个,找不出原因 ;4)各种功能大神们继续添加吧 #NoEnv SendMode Input ; SetWorkingDir %A_ScriptDir% ; Gui +Resize ; 允许用户最大化窗口或拖动来改变窗口的大小: Gui, Add, Button, x10 w140 h25 -Multi,加载 Gui, Add, Edit, vwwh x+20 w100 h25 -Multi, ;~ Gui, Add, Button, x+20 w60 h25 -Multi,迅雷下载 Gui, Add, Text, x+20 y10 w30 h25 -Multi,过滤 Gui, Add, Button, x+5 y5 w120 h25 -Multi,停止 Gui, Add, ListView,r20 x10 y+10 w430 h170 vMyListView -0x4000000 +VScroll r3, 序号|地址|网页|电影名|资源类型 LV_ModifyCol(2, 0) ; LV_ModifyCol(3, 0) ; Gui, Show, , %A_ScriptName% ; 创建作为上下文菜单的弹出菜单: Menu, MyContextMenu, Add, 迅雷下载, 迅雷下载 Menu, MyContextMenu, Add, 旋风下载, 旋风下载 Menu, MyContextMenu, Add, 浏览器打开, 浏览器打开 Menu, MyContextMenu, Default, 迅雷下载 ; return Button停止: Pause return 加载: Button加载: SplashTextOn, , , 加载中,请稍后 Sleep, 200 SplashTextOff LV_Delete() ; 清理不掉,第二次加载后,都成了重复的了,不知道怎么处理 dianying := URLDownloadToVar("http://www.dytt8.net/","GBK") Sleep,500 TextAll := RegExReplace(dianying, "s)最新游戏下载K.*") while (p := RegExMatch(TextAll, "U)href='(.+)'>", m, p?p+StrLen(m):1)) x .= m1 "`n" ;~ MsgBox, % x "`n" qq= % x "`n" ;~ MsgBox,%qq% ;~ GuiControl, -Redraw, MyListView ; 在加载时禁用重绘来提升性能. Loop, Parse, qq, `n, `r { abcd=http://www.dytt8.net%A_LoopField% ;本来是170个网址,莫名其妙的出来172个,找不出原因 ;~ MsgBox,%abcd% a := URLDownloadToVar(abcd,"GBK") ;~ RegExMatch(a,"m)(*ANYCRLF).*href=""(ftp[^""].*)"".*",m) ;老妖给的匹配ftp地址的正则 RegExMatch(a,"m)(*ANYCRLF).*""(ftp.*?)"".*",m) ;匹配下载地址的正则 dizhi:=% m1 RegExMatch(dizhi,"m)(*ANYCRLF).*com].(.*?).",m) mingzi:=% m1 RegExMatch(dizhi,"m)(*ANYCRLF).*com]..*((BD|HD).*?)$",m) ;匹配资源类型的正则 leix:=m1 RegExMatch(dizhi,"m)(*ANYCRLF).*com].(.*?).",m) ;匹配电影名字的正则 ;~ LV_ModifyCol() ; 根据内容自动调整每列的大小. LV_ModifyCol(4) ; LV_ModifyCol(5) ; LV_Add("",A_Index,dizhi,abcd,mingzi,leix) } GuiControl, +Redraw, MyListView ; 重新启用重绘 (上面把它禁用了). LV_ModifyCol(2,0) ; LV_ModifyCol(3,0) ; return GuiContextMenu: ; 运行此标签来响应右键点击或按下 Appskey. if A_GuiControl MyListView ; 仅在 ListView 中点击时才显示菜单. return ; 在提供的坐标处显示菜单, A_GuiX 和 A_GuiY. 应该使用这些 ; 因为即使用户按下 Appskey 它们也会提供正确的坐标: Menu, MyContextMenu, Show, %A_GuiX%, %A_GuiY% return ;此处挖个坑,怎么才能一口气把不同电脑的迅雷地址都能找到呢,当然是大部分电脑,DIY安装目录的就算了,实现之后告诉下,谢谢了 迅雷下载: ; 用户在上下文菜单中选择了 "Open". 旋风下载: ; 用户在上下文菜单中选择了 "Properties". Gui,Submit,NoHide ; 为了简化, 仅对焦点行进行操作而不是所有选择的行: FocusedRowNumber := LV_GetNext(0, "F") ; 查找焦点行. if not FocusedRowNumber ; 没有焦点行. return LV_GetText(dizhi, FocusedRowNumber,2 ) ; 获取第二个字段的文本. IfInString A_ThisMenuItem, 迅雷下载 ; 用户在上下文菜单中选择了 "Open". Clipboard=% dizhi MsgBox, % dizhi "`n" "打开迅雷粘贴就可以下载了" return 浏览器打开: ; 用户在上下文菜单中选择了 "Properties". FocusedRowNumber := LV_GetNext(0, "F") ; 查找焦点行. if not FocusedRowNumber ; 没有焦点行. return LV_GetText(wangye, FocusedRowNumber,3 ) ; 获取第二个字段的文本. IfInString A_ThisMenuItem, 浏览器打开 ; 用户在上下文菜单中选择了 "Open". ;~ MsgBox, % wangye Run % wangye return GuiSize: ; 扩大或缩小 ListView 来响应用户对窗口大小的改变. if A_EventInfo = 1 ; 窗口被最小化了. 无需进行操作. return ; 否则, 窗口的大小被调整过或被最大化了. 调整 ListView 的大小来适应. GuiControl, Move, MyListView, % "W" . (A_GuiWidth - 20) . " H" . (A_GuiHeight - 40) return GuiClose: ExitApp URLDownloadToVar(url, Encoding = "",Method="GET",postData=""){ ;网址,编码,请求方式,post数据 hObject:=ComObjCreate("WinHttp.WinHttpRequest.5.1") if Method = GET { hObject.Open("GET",url) Try hObject.Send() catch e return -1 } else if Method = POST { hObject.Open("POST",url,False) hObject.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded") Try hObject.Send(postData) catch e return -1 } if Encoding { oADO := ComObjCreate("adodb.stream") oADO.Type := 1 oADO.Mode := 3 oADO.Open() oADO.Write(hObject.ResponseBody) oADO.Position := 0 oADO.Type := 2 oADO.Charset := Encoding return oADO.ReadText(), oADO.Close() } return hObject.ResponseText }