ll_libload wininet, "wininet.dll"
ll_getproc InternetOpen, "InternetOpenA", wininet
ll_getproc InternetCloseHandle, "InternetCloseHandle", wininet
ll_getproc InternetConnect, "InternetConnectA", wininet
ll_getproc FtpDeleteFile, "FtpDeleteFileA", 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 inetdelete str
mref file, 32
mref stt, 64
prm = hsess, 0
ll_getptr file : ll_ret prm.1
ll_callfunc prm, 2, FtpDeleteFile@
ll_ret prm : stt = prm
return
#global
sdim v, 128, 4
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, 20
pos 10, 130 : button "削除", *connect
stop
*connect
inetlogin v, v.1 + ":" + v.2
if stat {
inetdelete v.3
if stat {
dialog "リソースを削除しました"
} else {
dialog "接続には成功しましたがリソースの削除に失敗しました"
}
} else {
dialog "接続に失敗しました"
}
stop
|