インターネット一時ファイルの削除
                                                         玄関へお回り下さい。
インターネット一時ファイルの削除    (245)
      Option Explicit   'SampleNo=245 WindowsXP VB6.0(SP5) 2003.02.02

'ファイルが存在した場合にキャッシュから関連したファイルを削除する
Private Declare Function DeleteUrlCacheEntry Lib "wininet" _
  Alias "DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long
'メッセージ文字列を指定の書式で取得する(741)
Private Declare Function FormatMessage Lib "KERNEL32" _
  Alias "FormatMessageA" (ByVal dwFlags As Long, lpSource As Any, _
  ByVal dwMessageId As Long, ByVal dwLanguageId As Long, _
  ByVal lpBuffer As String, ByVal nSize As Long, Arguments As Long) As Long
'システムメッセージリソースを検索する(741)
Private Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000


Private Sub Command1_Click()
'キャッシュを削除するファイルのURLを取得
  Call DeleteCache(Text1.Text)
End Sub


Private Sub
DeleteCache(DelCacheUrl As String)
  Dim lngResult As Long
  '指定のファイルのキャッシュを削除
  lngResult = DeleteUrlCacheEntry(DelCacheUrl)
  '結果を表示
  If lngResult = 0 Then
    Call sGetErrMsg
  Else
    MsgBox "指定のファイルのキャッシュを削除しました"
  End If
End Sub


Private Sub sGetErrMsg()
'最後にDLLを呼び出したときのエラーを取得(GetLastError)
  Dim lngResult As Long
  Dim ErrorCode As Long
  Dim ErrBuffer As String

  'エラーメッセージを受け取るバッファーを確保
  ErrBuffer = String$(256, vbNullChar)
  '最後にDLLを呼び出したときのエラーコードを取得
  ErrorCode = Err.LastDllError
  'エラーコードからエラーメッセージを取得する
  lngResult = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, _
      ByVal 0&, ErrorCode, 0&, ErrBuffer, Len(ErrBuffer), 0&)
  'バッファーからメッセージを取り出し
  ErrBuffer = Left$(ErrBuffer, InStr(ErrBuffer, vbNullChar) - 1)
  'エラーコードとエラーメッセージを表示
  MsgBox "エラーコード: " & ErrorCode & vbLf & ErrBuffer, _
              vbInformation, "GetLastError"
End Sub
 
02/02-11:06 No.2542の投稿で色々調べていてDeleteUrlCacheEntry APIで削除できるようなので
試して見たら簡単に削除でき問題もなさそうなので No.2546 で一応紹介していたのですが、サン
プルを他のサイトで投稿されていたので後でサンプルを投稿するとパクリと思われるのもいやなの
でテスト中ですがUPしておきます。別途掲示板のNo.380〜とNo.2542〜の一連の投稿も見ておいて
下さい。
http://msdn.microsoft.com/library/default.asp?url=/library/
en-us/wcewinet/htm/cerefDeleteUrlCacheEntry.asp
よく解りませんがこの関数は Microsoft Windows CE 3.0 用?のようですがWinXP・Win98 でも動作
致しました。
このAPIはサンプルを見れば解るかと思うのですがCurrentUser内のTemporary Internet Files内
及び以下の指定のURLの関連ファイルを削除します。
従って、ネットワーク環境や複数のユーザー環境でご使用の場合は十分テストしてからご使用下さい
尚、すべて削除する場合はFindFirstUrlCacheEntry や FindFirstUrlCacheEntry API等を使っ
て列挙する必要があります。その場合、下記のURLが参考になるかと思います。
又、COOKIE だけ残して削除も出来るようです。

  http://www.mvps.org/vbnet/index.html?code/internet/deleteurlcache.htm





2003/02/04