ll_libload wininet, "wininet.dll"
ll_getproc InternetOpen, "InternetOpenA", wininet
ll_getproc InternetCloseHandle, "InternetCloseHandle", wininet
ll_getproc InternetConnect, "InternetConnectA", wininet
ll_getproc FtpGetFile, "FtpGetFileA", wininet
#module
#deffunc inetinit
mref stt, 64
prm = 0, 0, 0, 0, 0
agent = "hspbc"
ll_getptr agent : ll_ret prm
ll_callfunc prm, 5, InternetOpen@
ll_ret hinet : stt = hinet
return
#deffunc inetend onexit
if hinet : ll_callfunc hinet, 1, InternetCloseHandle@
return
#deffunc inetlogin str, str, int, int
mref server, 32 : mref info, 33 : mref service, 2 : mref option, 3 : mref stt, 64
instr i, info, ":"
strlen i.1, info
strmid user, info, , i
strmid pass, info, i + 1, i.1 - i - 1
if hinet = 0 : inetinit
if user = "" : i.0 = 0 : else : ll_getptr user : ll_ret i.0
if pass = "" : i.1 = 0 : else : ll_getptr pass : ll_ret i.1
switch service
case 2: i.2 = 0x0002, 0 : swbreak
case 3: i.2 = 0x0003, 0 : swbreak
default: i.2 = 0x0001, option ! 0 * 0x08000000
swend
ll_getptr server : ll_ret i.5
prm = hinet, i.5, 0, i.0, i.1, i.2, i.3, 0
ll_callfunc prm, 8, InternetConnect@
ll_ret hsess : stt = hsess
return
#deffunc inetlogout onexit
if hsess : ll_callfunc hsess, 1, InternetCloseHandle@
return
#deffunc ftpget str, str, int, int
mref getname, 32 : mref savename, 33 : mref mode, 2 : mref norewrite, 3
mref stt, 64
prm = hsess, 0, 0, norewrite, 0x0020, mode, 0
ll_getptr getname : ll_ret prm.1
ll_getptr savename : ll_ret prm.2
ll_callfunc prm, 7, FtpGetFile@
ll_ret prm : stt = prm
return
#global
sdim v, 128, 5
pos 10, 10 : mes "FTPサーバー"
pos 150, 10 : input v.0, 150, 22
pos 10, 40 : mes "ユーザー名"
pos 150, 40 : input v.1, 150, 22
pos 10, 70 : mes "パスワード"
pos 150, 70 : input v.2, 150, 22
pos 10, 100 : mes "取得ファイル名"
pos 150, 100 : input v.3, 150, 22
pos 10, 130 : mes "保存ファイル名"
pos 150, 130 : input v.4, 150, 22
pos 150, 160 : button "取得", *connect
stop
*connect
inetlogin v, v.1 + ":" + v.2
if stat {
ftpget v.3, v.4
if stat {
dialog "保存しました"
} else {
dialog "接続には成功しましたがファイル保存しませんでした"
}
} else {
dialog "接続に失敗しました"
}
stop
|