Win32 APIを使用してWinInetキャッシュをクリアしようとしています。キャッシュエントリを無効にするか、削除します(関係ありません)。キャッシュ全体に対してこれを行う方法が見つかりません(各エントリを反復処理する以外に-C#の例、VBの別の例)-これも可能ですか?
4 に答える
どうやら、これを実行することにより、インターネットオプションパネルを(ab)使用してキャッシュファイルをクリアすることが可能です:
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8
これをDLLとして呼び出そうとします。
出典:http : //www.vbforums.com/archive/index.php/t-440508.html、technorobboによるコメント
FindFirst / FindNextUrlCacheEntry()を実行すると、かなり確実です。その後、DeleteUrlCacheEntry()が、IEのすべてのバージョンで機能することを確認する唯一の方法です。
または、FindFirst / FindNextUrlCacheGroup()およびDeleteUrlCacheGroup()を「CACHEGROUP_FLAG_FLUSHURL_ONDELETE」とともに使用できますが、必要なものだけを削除するようにする必要があります。たとえば、履歴、Cookie、インターネット一時ファイルはすべてキャッシュグループです。
次のメソッドは使用しないでください。RunDll32.exeInetCpl.cpl、ClearMyTracksByProcess 8これは、Microsoftによってサポートされておらず、キャッシュを破壊し、あらゆる種類の異常な問題を引き起こすことが示されています。
FTR:引数の正確な意味(上記の8は、一時的なインターネットファイルのみを意味し、Cookieなどは意味しません)は、たとえばhttp://www.howtogeek.com/howto/windows/clear-ie7-browsing-history-fromで説明されています。 -コマンドライン。
ところで:残念ながら、RunDll32は非同期であるため、自動化されたWebテストなどの前に実行するのには理想的ではありません。これをブロッキング呼び出しとして実行する方法、または「Temporary InternetFiles」ディレクトリの正確なディレクトリ名をプログラムで見つけて、空になるまでポーリングできるようにする方法を誰かが知っているでしょうか。それをCでコーディングする(Javaで必要、JNIを実行できる)のが本当に唯一のオプションですよね?;(
PS:stackoverflowで新しい回答を開始する代わりに、既存の回答に返信を投稿するにはどうすればよいですか?