| |
|
|
| Hab una Problema - el Source zeigt en me DeleteUrlCacheEntryA wohl sólo una vez - beim Ersten Male - el Cache löscht. Zumindest sieht lo así de porque el Downloadabfragezeit sólo una vez largo dauert - danach sólo todavía 0ms. Auch el Ergebnis no es neu geladen. Wenn Yo pero la URL z.B. nen ?+str$(gettickcount) anhänge erhalte Yo natürlich cada veces una neues - richtiges - Ergebnis. Lo sieht also de como si DeleteUrlCacheEntryA no así arbeitet Yo lo hoffe - nähhmlich simplemente siempre el Cache para el URL löschen.
Was mache Yo falso? Es como si el Info al Prozess klebt - incluso una zweiter Hilo löscht nix. (getestet con eigener DLL) KompilierenMarcaSeparación {$cleq}
const url=http://ip.mxii.com
const target=ip.txt
cls
do {
getip()
settimer 1000
waitinput
killtimer
cls
}
end
getip {
long ms=gettickcount
external(wininet.dll,DeleteUrlCacheEntryA,url)
external(urlmon.dll,URLDownloadToFileA,0,url,target,0,0)
string s
assign #1,target
reset #1
input #1,s
close #1
erase #1
print ip:,s
print ms:,(gettickcount-ms)nt color=#0000FF>}
No XPSE-Code: KompilierenMarcaSeparaciónCLS
WHILE 1
GETIP()
SETTIMER 1000
WAITINPUT
KILLTIMER
CLS
ENDWHILE
end
PROC GETIP
var MS&=&GETTICKCOUNT
EXTERNAL(wininet.dll,DeleteUrlCacheEntryA,http://ip.mxii.com)
EXTERNAL(urlmon.dll,URLDownloadToFileA,0,http://ip.mxii.com,ip.txt,0,0)
var S$=
ASSIGN #1,ip.txt
RESET #1
INPUT #1,S$
CLOSE #1
ERASE #1
PRINT ip:,S$
PRINT ms:,(&GETTICKCOUNT-MS&)
ENDPROC
|
|
|
| |
|
|
|
| Aha Yo ahne URL$ es no siempre el richtige Handle para el a löschende Expediente - voluntad veces el Callback nutzen en herauszufinden como el File en el Cache se nennt. |
|
|
| |
|
|
|
| Ok el klappt schonmal - veces schauen como se nun el cache verhält: KompilierenMarcaSeparación {$cleq}
cls
print downloadfile(http://ip.mxii.com,ip.txt)
waitkey
end
DownloadFile (string url,destinationFileName){
string content=
long dllh=usedll(wininet.dll)
long hInet = external(wininet.dll,InternetOpenA,myapp,0,nil,nil,0);
//print hinet:,hinet
long hFile = external(wininet.dll,InternetOpenUrlA,hInet,addr(url),nil,0,$80000000,0);
//print hfile,hfile
mem buf=1024
//int fh=assign(destinationFileName)
//openrw fh
long bytesread
do {
external(wininet.dll,InternetReadFile,hFile,buf,1024,addr(bytesread))
//print read:,bytesread
if bytesread>0 {
content=content+char$(buf,0,bytesread)
//blockwrite fh,buf,0,bytesread
} else { break }
}
//closerw fh
external(wininet.dll,InternetCloseHandle,hFile)
external(wininet.dll,InternetCloseHandle,hInet)
dispose buf
freedll dllh
return c
}
|
|
|
| |
|
|
|
| Funzt, kein Cache mehr. Nun kann Yo el el Downloadunit beibringen... |
|
|
| |
|
|