インターネット一時ファイルの削除 |
インターネット一時ファイルの削除 (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