教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> VB >> 编程技巧 >> 判断一个文件是否在IE的缓存中 RSS订阅
判断一个文件是否在IE的缓存中
教程(视频,书籍)下载:  ASP.NET AutoCAD 数据库 C# ASP java photoshop 网页设计 delphi 3dmax Flash C++ VB 张孝祥 实例   更多请进入BIBIDU搜索
IT搜索引擎   
   当你建立一个联到网上文件的快捷方式时,你可能需要知道它是否已经被访问过,于是你就可以适当地改变链接的颜色等等。这则小技巧
就是告诉你如何判断一个文件是否在Internet Explorer的缓存中,以满足你的须要。
  新建一个项目、添加一个模块。将以下代码写到模块里:

Private Const ERROR_INSUFFICIENT_BUFFER = 122
Private Const eeErrorBase = 26720

Private Type FILETIME
  dwLowDateTime As Long
  dwHighDateTime As Long
End Type

Private Type INTERNET_CACHE_ENTRY_INFO
  dwStructSize As Long
  lpszSourceUrlName As String
  lpszLocalFileName As String
  CacheEntryType As String
  dwUseCount As Long
  dwHitRate As Long
  dwSizeLow As Long
  dwSizeHigh As Long
  LastModifiedTime As FILETIME
  ExpireTIme As FILETIME
  LastAccessTime As FILETIME
  LastSyncTime As FILETIME
  lpHeaderInfo As Long
  dwHeaderInfoSize As Long
  lpszFileExtension As String
  dwReserved As Long
End Type

Private Declare Function GetUrlCacheEntryInfo Lib wininet.dll _
Alias GetUrlCacheEntryInfoA (ByVal sUrlName As String, _
  lpCacheEntryInfo As Any, lpdwCacheEntryInfoBufferSize _
  As Long) As Long

用来报告API产生的错误:
Private Const FORMAT_MESSAGE_ALLOCATE_BUFFER = &H100
Private Const FORMAT_MESSAGE_ARGUMENT_ARRAY = &H2000
Private Const FORMAT_MESSAGE_FROM_HMODULE = &H800
Private Const FORMAT_MESSAGE_FROM_STRING = &H400
Private Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
Private Const FORMAT_MESSAGE_IGNORE_INSERTS = &H200
Private Const FORMAT_MESSAGE_MAX_WIDTH_MASK = &HFF
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

Public Function WinAPIError(ByVal lLastDLLError As Long) As String
Dim sBuff As String
Dim lCount As Long

  返回与LastDLLError相关的出错信息:
  sBuff = String$(256, 0)
  lCount = FormatMessage( _
   FORMAT_MESSAGE_FROM_SYSTEM Or FORMAT_MESSAGE_IGNORE_INSERTS, _
   0, lLastDLLError, 0&, sBuff, Len(sBuff), ByVal 0)
  If lCount Then
   WinAPIError = Left$(sBuff, lCount)
  End If

End Function

Public Function GetCacheEntryInfo(ByVal hWnd As Long, _
  ByVal lpszUrl As String) As Boolean

Dim dwEntrySize As Long
Dim lpCacheEntry As INTERNET_CACHE_ENTRY_INFO
Dim dwTemp As Long
Dim lErr As Long

  If (GetUrlCacheEntryInfo(lpszUrl, ByVal 0&, dwEntrySize)) = 0 Then
   lErr = Err.LastDllError
   If (lErr <> ERROR_INSUFFICIENT_BUFFER) Then
     预料外的错误。须要显示出错原因:
     Err.Raise eeErrorBase + 1, _
      App.EXEName & .mCacheEntry, WinAPIError(lErr)

     GetCacheEntryInfo = False
     Exit Function
   Else
     这是预料中的错误
     GetCacheEntryInfo = True
   End If
  End If

End Function


在窗体上添加一个Command和一个Text。然后加入这些代码:

Option Explicit 

Private Sub Command1_Click() 
On Error Goto ErrorHandler
  检查Text中的URL地址是否出现在缓存中:
  If (GetCacheEntryInfo(Me.hWnd, Text1.Text)) Then
   MsgBox URL In Cache., vbInformation
  Else
   MsgBox URL Not In Cache., vbInformation
  End If

Exit Sub

ErrorHandler:
 MsgBox URL Not in Cache [ & Err.Description & ],vbInformation

End Sub

  运行,在Text中键入一个URL地址(比如,http://www.vbaccelerator.com/index.html)当你按下Command按钮时,就会得到一则消息报告URL在不在缓存中。如果Windows给出了URL没找到的原因,它将被显示在随后的的方括号内。 

来源:编程技术-十度教育
作者:
关键字:判断一,文件,IE,缓存中
发表日期:2006-10-18 13:46:33

网页显示有限 阅读全文请下载本文完整版WORD文档

上一篇:强制和防止窗口重画   下一篇:把图片框的完整内容复制到剪贴板


2008-8-22 7:32:01
本文的相类似文章
  • VB编程的好帮手--资源文件
  • VB 利用API创建文件目录
  • VB编程获取文件中集成的图标
  • Java 中对文件的读写操作之比较
  • TListView在XP中的补丁程序
  • VB与Windows资源管理器互拷文件
  • VB 取得IE地址栏的地址
  • VB 更改LISTVIEW的背景色
  • 应对恶意网站 IE常见的故障解决
  • 打开IE的第五道安全防线
  • 在学习中进步 在进步中成长 教程中国相随您的成长之路
    华腾联合科技股份有限公司版权所有
    广告联系:Rosibo@163.com