| |
|
|
| Hab un Problem - qui Source zeigt chez mir cela DeleteUrlCacheEntryA wohl seulement einmal - beim Ersten Male - den Cache löscht. Zumindest sieht es so aus weil qui Downloadabfragezeit seulement einmal longtemps dauert - après seulement encore 0ms. aussi cela Ergebnis wird pas récente geladen. si je mais qui URL z.B. nen ?+str$(gettickcount) anhänge erhalte je naturellement chaque la fois un nouveau - richtiges - Ergebnis. Es sieht alors aus comme si DeleteUrlCacheEntryA pas so arbeitet comment je es hoffe - nähhmlich simple toujours den Cache pour qui URL effacer.
quoi fais je faux? c'est comme si qui Info am Prozess klebt - selbst un zweiter Fil löscht nix. (getestet avec eigener DLL) KompilierenMarqueSéparation {$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>}
pas XPSE-Code: KompilierenMarqueSéparationCLS
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 je ahne URL$ ist pas toujours cela richtige Handle pour qui trop löschende Dossier - werde la fois den Callback nutzen um herauszufinden comment cela File im Cache sich nennt. |
|
|
| |
|
|
|
| Ok cela klappt Schonmal - la fois regarder comment sich eh bien qui cache verhält: KompilierenMarqueSéparation {$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, ne...aucune Cache plus. eh bien peux je cela qui Downloadunit beibringen... |
|
|
| |
|
|