ll_libload wininet, "wininet.dll"
ll_getproc HttpQueryInfo "HttpQueryInfoA", wininet
ll_getproc InternetCloseHandle, "InternetCloseHandle", wininet
ll_getproc InternetOpen, "InternetOpenA", wininet
ll_getproc InternetOpenUrl, "InternetOpenUrlA", wininet
ll_getproc InternetQueryDataAvailable, "InternetQueryDataAvailable", wininet
ll_getproc InternetReadFile, "InternetReadFile", 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 inetget val, str
mref data, 24 : mref url, 33
prm = hinet, 0, 0, 0, 0x80000000, 0
ll_getptr url : ll_ret prm.1
ll_callfunc prm, 6, InternetOpenUrl@
ll_ret hfile
ll_getptr i : ll_ret i.1
prm = hfile,i.1
ll_callfunc prm, 2, InternetQueryDataAvailable@
ll_ret i
if i = 0 : return
sdim s, i.1
i = 0
prm = hfile, 0, i.1
ll_getptr s : ll_ret prm.1
ll_getptr i.2 : ll_ret prm.3
repeat
ll_callfunc prm, 4, InternetReadFile@
if i.2 = 0 : break
repeat i.2
peek i.3, s, cnt
poke data, i + cnt, i.3
loop
i += i.2
loop
ll_callfunc hfile, 1, InternetCloseHandle@
return
#deffunc inetgetsize str
mref url, 32
mref stt, 64
prm = hinet, 0, 0, 0, 0x80000000, 0
ll_getptr url : ll_ret prm.1
ll_callfunc prm, 6, InternetOpenUrl@
ll_ret hfile
i.1 = 4
prm = hfile, 0x20000005, 0, 0, 0 // HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER
ll_getptr i.0 : ll_ret prm.2
ll_getptr i.1 : ll_ret prm.3
ll_callfunc prm, 5, HttpQueryInfo@
ll_callfunc hfile, 1, InternetCloseHandle@
stt = i
return
#deffunc getgip str, str, int
mref url, 32 : mref keyword, 33 : mref fincode, 2
mref rstr, 65
inetinit
inetgetsize url
sdim s, stat + 1
key = keyword
inetget s, url
instr i, s, key
if i = -1 : return "取得失敗"
strlen i.1, key
getstr rstr, s, i + i.1, fincode
return
#global
getgip "http://taruo.net/ip/", "REMOTE_ADDR=", 10
mes "グローバルIP=" + refstr
stop
|