最初の質問のみ回答します。
#include "hspinet.as"
//適当なURLを!
url="http://www.onionsoft.net/hsp/file/hsp31.exe"
width 400,60
netinit
if stat : dialog "ネット接続できません。" : end
// http://〜 から始まるものでも getpath は使用可能です。
sv=getpath(url,8)
title "HTTPヘッダからサイズを取得中..."
//HTTPヘッダを受信
header=""
neturl ""+getpath(url,32)
netfileinfo header,""+sv
//HTTPヘッダからファイルサイズを取得
notesel header
tmp=""
repeat notemax
noteget tmp,cnt
if instr(tmp,0,"Content-Length: ")=0:break
if notemax=cnt:dialog "サイズが取得できません" :end
loop
filesize=int(strmid(tmp,strlen("Content-Length: "),256))
//ファイルが見つからない時の処理(HTTP404)
if filesize<=0:dialog "ファイルが見つからないようです":end
//HTTPリクエスト開始
netdlname ""+sv
neturl ""+getpath(url,32)
netrequest ""+sv
title ""+url
repeat
//existを使ってダウンロード済みのファイルサイズを取得します
exist sv
color 255,255,255:boxf 0,0,400,60:color 0,0,255
boxf 0,0,(100*strsize/filesize)*4,60
color 0,0,0:pos 190,20
mes ""+100*strsize/filesize+"%"
pos 10,40
mes ""+strsize+"/"+filesize+"bytes"
netsize size
netexec res
if res : goto *ed
redraw 1
await 1
redraw 0
loop
stop
//エラーもしくは正常終了の時、飛んできます
*ed
if res > 0 :title "100%!":end
neterror estr
dialog "エラー:"+estr:end
stop