Visual Basic 中学校 掲示板 投稿内容
タグのない投稿を抽出 統計 RSS

Visual Basic 中学校 > 投稿一覧 >

キャッシュの削除 解決済み

タグの編集...

投稿者 だるさん   (中学生)   投稿日時 2012/8/11 20:40:55
題名通りキャッシュの削除をやりたいです。


結構探し回って、VBにコード書いてエラー修復して っていっぱいやってきたけど
できませんでした。

なので、教えてほしいです。

一様言っときます
Form_Loadのイベントに書きたいです。
一様言っときますw
Form5_Loadですw
一様言っときます
IE→ツール→閲覧の履歴の削除→インターネット一時ファイル→削除
です。

他上記足りないことがありましたら
どんどん聞いてください。

宜しくお願いします。

投稿者 bz9   (中学生)   投稿日時 2012/8/11 22:25:21
> 一様言っときます
いちおう ですよ。

> 題名通りキャッシュの削除をやりたいです。
何のキャッシュを削除したいんですか?

投稿者 魔界の仮面弁士   (社会人)   投稿日時 2012/8/11 22:32:53
>> 一様言っときます
> いちおう ですよ。
一応[いちおう] … 十分でははないが、ひととおり。(本来は "一往" と記述)
一様[いちよう] … すべてが同じさまであること。世間一般にありふれているさま。


> IE→ツール→閲覧の履歴の削除→インターネット一時ファイル→削除
少々難しいのですが、これには IUrlHistoryStg2 インターフェイスの ClearHistory メソッドを呼ぶことになります。
下記に実際のサンプルがありますので、参考にしてみてください。
http://dobon.net/vb/bbs/log3-27/15894.html

投稿者 魔界の仮面弁士   (社会人)   投稿日時 2012/8/11 22:56:57
> IE→ツール→閲覧の履歴の削除→インターネット一時ファイル→削除

あぁ、失礼しました。履歴の方ではなく、キャッシュの削除の方でしたね。

キャッシュの削除については、「DeleteUrlCacheEntry」という API を使います。
削除すべきキャッシュの列挙には、FindFirstUrlCacheEntry / FindNextUrlCacheEntry API です。

すぐに提示可能な手持ちのサンプルは持ち合わせていないので、上記の関数名で
検索してみてください。(いずれにせよ、少々難易度の高いコードになります)


上記の方法は、キャッシュの他、Cookie を削除したい場合にも利用できます。

投稿者 bz9   (中学生)   投稿日時 2012/8/12 08:36:30
あ、
IEのキャッシュでしたか。

IE7以降でしたら
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8

これを実行するとキャッシュが消せるみたいです。

投稿者 だるさん   (中学生)   投稿日時 2012/8/12 10:33:26
すみません。

>http://dobon.net/vb/bbs/log3-27/15894.html 

見ても分かりませんでした。

コードを直接入力していただけると幸いです。

投稿者 魔界の仮面弁士   (社会人)   投稿日時 2012/8/12 17:59:20
> 見ても分かりませんでした。
> コードを直接入力していただけると幸いです。 
そのままコピーして使える VB.NET のコードが掲載されていますよね。

元のコードはコンソロールアプリケーションのため、Sub Main から呼び出していますが、
それを Form5_Load から呼び出す様に差し替えるだけで動くかと思います。

もっとも、先述したように閲覧履歴の削除であって、一時ファイルの削除では無いですが…。


>> IE7以降でしたら
>> RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8

おぉ。その方法もありましたね。具体的にはこんな感じでしょうか。
'インターネット一時ファイルの削除   
Process.Start("RunDll32""InetCpl.cpl,ClearMyTracksByProcess 8")


ついでにこのあたりも。IE6 以下では使えません。

'パスワードの削除 
Process.Start("RunDll32""InetCpl.cpl,ClearMyTracksByProcess 32")


'フォームデータの削除 
Process.Start("RunDll32""InetCpl.cpl,ClearMyTracksByProcess 16")


'Cookieの削除 
Process.Start("RunDll32""InetCpl.cpl,ClearMyTracksByProcess 2")


'閲覧履歴の削除 
Process.Start("RunDll32""InetCpl.cpl,ClearMyTracksByProcess 1")


'以上のすべてを削除 
Process.Start("RunDll32""InetCpl.cpl,ClearMyTracksByProcess 255")


'上記すべてに加えて、アドオンによるファイル等も削除 
Process.Start("RunDll32""InetCpl.cpl,ClearMyTracksByProcess 4351")



その他、ClearMyTracksByProcess API を直接呼び出すということもできます。
http://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+201002/10020013.txt


なお、上記の手法だと「すべて削除」することしかできませんが、
先に示した DeleteUrlCacheEntry の場合は、特定の URL 単位で処理できますので、
より細かい削除制御を施すことができます。

たとえば全部のサイトの一時ファイルを消すのではなく、ある特定のサイトのみを
クリアする(キャッシュ量が多い場合は、全削除より早く完了する)とか、あるいは
特定のサイトの Cookie 情報だけは残してそれ以外の Cookie は全消しするとか、
各サイトの最終更新日ごとに削除するかどうかを制御するなど。
(まぁ、条件を増やせば増やすほど、実装難易度も上がってしまうのですが)

投稿者 だるさん   (中学生)   投稿日時 2012/8/12 19:07:07
うお~~~~~~~~~~~~~~~~~~~~~~!w


有難う御座います。



'インターネット一時ファイルの削除   
Process.Start("RunDll32", "InetCpl.cpl,ClearMyTracksByProcess 8")

これをやってみたらできました!w

いろいろ検索してると
ありえないほど長い文が出てくるんですが、
1行でできるとは驚きですw

本当にありがとうございました。