dialog dler { title "Downloader" size -1 -1 429 126 option pixels edit "Url example: www.google.com", 1, 31 15 97 21, autohs edit "File name example: file.zip", 2, 162 15 139 21, autohs button "Download", 3, 110 49 75 25 edit "Messages", 4, 44 91 340 21, read } alias dler dialog -md dler dler on *:dialog:dler:sclick:3: { if ($regex($did(1),/(?:http:\/\/)?(?:www\.)?(\w+)\.(\w+)(\/.*)?/i)) { if (!$regml(4)) { set %end $chr(47) } else { set %end $regml(4) } set %host www. $+ $regml(1) $+ . $+ $regml(2) sockopen dl %host 80 did -ra $dname 4 Initializing download... } else { did -ra $dname 4 Invalid URL } } on *:sockopen:dl: { did -ra dler 4 Opening connection sockwrite -nt $sockname GET %end HTTP/1.1 sockwrite -nt $sockname Host: %host sockwrite -nt $sockname $crlf } on *:sockread:dl: { if ($sockerr) { did -ra dler 4 Error, closing connection } else { var %a = 1,%x = $numtok($sock($sockname).mark,32) while %a && %x = 0 { sockread %a if ($regex(%a,/Content\-Length: (\d+)/i)) { set %size $regml(1) } } sockmark $sockname Done it! while $sock($sockname).rq { sockread &b bwrite $did(dler,2) -1 -1 &b did -ra dler 4 $calc(($lof($did(dler,2))) / %size * 100) percent complete inc %l } if ($file($did(dler,2)).size >= %size) { did -ra dler 4 Download Complete! | sockclose $sockname } } }