Je tente d'effacer le cache WinInet à l'aide de l'API Win32 en invalidant les entrées du cache ou en les supprimant (peu importe). Je ne peux pas trouver un moyen de le faire pour l'ensemble du cache (autre que l'itération sur chaque entrée - example in C#, another in VB) - est-ce encore possible?Comment effacer par programme le cache MSIE/WinInet?
Répondre
Je suis assez certain de faire le FindFirst/FindNextUrlCacheEntry() puis DeleteUrlCacheEntry() est la seule façon de vous assurer qu'il fonctionne dans toutes les versions de IE.
Vous pouvez également utiliser FindFirst/FindNextUrlCacheGroup() et DeleteUrlCacheGroup() avec "CACHEGROUP_FLAG_FLUSHURL_ONDELETE" mais vous devez vous assurer que vous supprimez uniquement ce que vous voulez. Par exemple, l'historique, les cookies et les fichiers Internet temporaires sont tous des groupes de cache.
Apparemment, il est possible de (ab) utiliser le panneau Options Internet pour effacer les fichiers de cache en exécutant ceci:
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8
va essayer d'appeler cela comme une DLL.
Source: http://www.vbforums.com/archive/index.php/t-440508.html, commentaire par technorobbo
Cela ne fonctionne que sur IE7 + –
@jeffamaphone: Merci pour l'info, gardera cela à l'esprit – Piskvor
FTR: La signification exacte de l'argument (8 ci-dessus, signifie seulement les fichiers Internet temporaires et non les cookies, etc.) est expliquée par ex. au http://www.howtogeek.com/howto/windows/clear-ie7-browsing-history-from-the-command-line.
BTW: Malheureusement, RunDll32 est asynchrone, ce qui ne le rend pas idéal pour fonctionner avant, par ex. tests web automatisés. Quelqu'un aurait-il une idée sur la façon de l'exécuter comme un appel de blocage, ou sur la façon de trouver par programme le nom de répertoire exact du répertoire "Temporary Internet Files" afin qu'il puisse être interrogé jusqu'à ce qu'il soit vide? Code en C (besoin en Java, pourrait faire JNI) est vraiment la seule option, hein? ; (
PS:. Comment peut-on poster une réponse à une réponse existante au lieu de commencer une nouvelle réponse sur StackOverflow
Merci, le bit-mask est effectivement pertinent dans l'appel. (Et btw, quand vous atteignez la réputation 50 , vous serez en mesure de laisser des commentaires sur les questions et les réponses des autres, d'ici là, vous ne pouvez que commenter vous-même) – Piskvor
Dans ce cas, ça ne me dérangerait pas de supprimer tous ceux-là, j'espérais qu'il y avait un moyen plus facile, eh bien, – Piskvor