Module1.vb
上传用户:szledliu
上传日期:2021-01-29
资源大小:13805k
文件大小:10k
源码类别:

C#编程

开发平台:

C#

  1. Imports System.Runtime.InteropServices
  2. Imports System.Convert
  3. Module Module1
  4.     Public Const ERROR_CACHE_FIND_FAIL As Integer = 0
  5.     Public Const ERROR_CACHE_FIND_SUCCESS As Integer = 1
  6.     Public Const ERROR_FILE_NOT_FOUND As Integer = 2
  7.     Public Const ERROR_ACCESS_DENIED As Integer = 5
  8.     Public Const ERROR_INSUFFICIENT_BUFFER As Integer = 122
  9.     Public Const MAX_PATH As Integer = 260
  10.     Public Const MAX_CACHE_ENTRY_INFO_SIZE As Integer = 4096
  11.     Public Const LMEM_FIXED As Integer = &H0S
  12.     Public Const LMEM_ZEROINIT As Integer = &H40S
  13.     Public Const LPTR As Integer = (LMEM_FIXED Or LMEM_ZEROINIT)
  14.     Public Const NORMAL_CACHE_ENTRY As Long = 2097153
  15.     Public Const EDITED_CACHE_ENTRY As Integer = &H8S
  16.     Public Const TRACK_OFFLINE_CACHE_ENTRY As Integer = &H10S
  17.     Public Const TRACK_ONLINE_CACHE_ENTRY As Integer = &H20S
  18.     Public Const STICKY_CACHE_ENTRY As Integer = &H40S
  19.     Public Const SPARSE_CACHE_ENTRY As Integer = &H10000
  20.     Public Const COOKIE_CACHE_ENTRY As Integer = &H100000
  21.     Public Const URLHISTORY_CACHE_ENTRY As Integer = &H200000
  22.     Public Const URLCACHE_FIND_DEFAULT_FILTER As Integer = NORMAL_CACHE_ENTRY Or COOKIE_CACHE_ENTRY Or URLHISTORY_CACHE_ENTRY Or TRACK_OFFLINE_CACHE_ENTRY Or TRACK_ONLINE_CACHE_ENTRY Or STICKY_CACHE_ENTRY
  23.     Public Function delurlcache(ByVal xurl As String)
  24.         'Indicates that all of the cache groups in the user's system should be enumerated
  25.         Const CACHEGROUP_SEARCH_ALL As Long = &H0
  26.         'Indicates that all of the cache entries that are associated with the cache group should be deleted,
  27.         'unless the entry belongs to another cache group.
  28.         Const CACHEGROUP_FLAG_FLUSHURL_ONDELETE As Long = &H2
  29.         'File not found.
  30.         Const ERROR_FILE_NOT_FOUND As Long = &H2
  31.         'No more items have been found.
  32.         Const ERROR_NO_MORE_ITEMS As Long = 259
  33.         'Pointer to a GROUPID variable
  34.         Dim groupId As Long = 0
  35.         Dim ldate As Date
  36.         Dim icei As Class1.INTERNET_CACHE_ENTRY_INFOA
  37.         'Local variables
  38.         Dim cacheEntryInfoBufferSizeInitial As Integer = 0
  39.         Dim cacheEntryInfoBufferSize As Integer = 0
  40.         Dim cacheEntryInfoBuffer As IntPtr = IntPtr.Zero
  41.         Dim internetCacheEntry As Class1.INTERNET_CACHE_ENTRY_INFOA
  42.         Dim enumHandle As IntPtr = IntPtr.Zero
  43.         Dim returnValue As Boolean = False
  44.         enumHandle = Class1.FindFirstUrlCacheGroup(0, CACHEGROUP_SEARCH_ALL, IntPtr.Zero, 0, groupId, IntPtr.Zero)
  45.         'If there are no items in the Cache, you are finished.
  46.         If (Not enumHandle.Equals(IntPtr.Zero) And ERROR_NO_MORE_ITEMS.Equals(Marshal.GetLastWin32Error)) Then
  47.             Exit Function
  48.         End If
  49.         'Loop through Cache Group.
  50.         enumHandle = Class1.FindFirstUrlCacheEntry(vbNull, IntPtr.Zero, cacheEntryInfoBufferSizeInitial)
  51.         If (Not enumHandle.Equals(IntPtr.Zero) And ERROR_NO_MORE_ITEMS.Equals(Marshal.GetLastWin32Error())) Then
  52.             Exit Function
  53.         End If
  54.         cacheEntryInfoBufferSize = cacheEntryInfoBufferSizeInitial
  55.         cacheEntryInfoBuffer = Marshal.AllocHGlobal(cacheEntryInfoBufferSize)
  56.         enumHandle = Class1.FindFirstUrlCacheEntry(vbNull, cacheEntryInfoBuffer, cacheEntryInfoBufferSizeInitial)
  57.         While (True)
  58.             internetCacheEntry = CType(Marshal.PtrToStructure(cacheEntryInfoBuffer, GetType(Class1.INTERNET_CACHE_ENTRY_INFOA)), Class1.INTERNET_CACHE_ENTRY_INFOA)
  59.             cacheEntryInfoBufferSizeInitial = cacheEntryInfoBufferSize
  60.             Dim fsourceurlname As String = Marshal.PtrToStringAnsi(internetCacheEntry.lpszSourceUrlName)
  61.             If fsourceurlname = xurl Then
  62.                 returnValue = Class1.DeleteUrlCacheEntry(internetCacheEntry.lpszSourceUrlName)
  63.             End If
  64. mm:
  65.             returnValue = Class1.FindNextUrlCacheEntry(enumHandle, cacheEntryInfoBuffer, cacheEntryInfoBufferSizeInitial)
  66.             If (Not returnValue And ERROR_NO_MORE_ITEMS.Equals(Marshal.GetLastWin32Error())) Then
  67.                 Exit While
  68.             End If
  69.             If (Not returnValue And cacheEntryInfoBufferSizeInitial > cacheEntryInfoBufferSize) Then
  70.                 cacheEntryInfoBufferSize = cacheEntryInfoBufferSizeInitial
  71.                 Dim tempIntPtr As New IntPtr(cacheEntryInfoBufferSize)
  72.                 cacheEntryInfoBuffer = Marshal.ReAllocHGlobal(cacheEntryInfoBuffer, tempIntPtr)
  73.                 returnValue = Class1.FindNextUrlCacheEntry(enumHandle, cacheEntryInfoBuffer, cacheEntryInfoBufferSizeInitial)
  74.             End If
  75.         End While
  76.         Marshal.FreeHGlobal(cacheEntryInfoBuffer)
  77.     End Function
  78.     Public Function GetURLCache(ByVal lview As ListView, ByVal sdate As Date, ByVal type As String) As Object
  79.         'Indicates that all of the cache groups in the user's system should be enumerated
  80.         Const CACHEGROUP_SEARCH_ALL As Long = &H0
  81.         'Indicates that all of the cache entries that are associated with the cache group should be deleted,
  82.         'unless the entry belongs to another cache group.
  83.         Const CACHEGROUP_FLAG_FLUSHURL_ONDELETE As Long = &H2
  84.         'File not found.
  85.         Const ERROR_FILE_NOT_FOUND As Long = &H2
  86.         'No more items have been found.
  87.         Const ERROR_NO_MORE_ITEMS As Long = 259
  88.         'Pointer to a GROUPID variable
  89.         Dim groupId As Long = 0
  90.         Dim ldate As Date
  91.         Dim icei As Class1.INTERNET_CACHE_ENTRY_INFOA
  92.         lview.Items.Clear()
  93.         'Local variables
  94.         Dim cacheEntryInfoBufferSizeInitial As Integer = 0
  95.         Dim cacheEntryInfoBufferSize As Integer = 0
  96.         Dim cacheEntryInfoBuffer As IntPtr = IntPtr.Zero
  97.         Dim internetCacheEntry As Class1.INTERNET_CACHE_ENTRY_INFOA
  98.         Dim enumHandle As IntPtr = IntPtr.Zero
  99.         Dim returnValue As Boolean = False
  100.         enumHandle = Class1.FindFirstUrlCacheGroup(0, CACHEGROUP_SEARCH_ALL, IntPtr.Zero, 0, groupId, IntPtr.Zero)
  101.         'If there are no items in the Cache, you are finished.
  102.         If (Not enumHandle.Equals(IntPtr.Zero) And ERROR_NO_MORE_ITEMS.Equals(Marshal.GetLastWin32Error)) Then
  103.             Exit Function
  104.         End If
  105.         'Loop through Cache Group.
  106.         enumHandle = Class1.FindFirstUrlCacheEntry(vbNull, IntPtr.Zero, cacheEntryInfoBufferSizeInitial)
  107.         If (Not enumHandle.Equals(IntPtr.Zero) And ERROR_NO_MORE_ITEMS.Equals(Marshal.GetLastWin32Error())) Then
  108.             Exit Function
  109.         End If
  110.         cacheEntryInfoBufferSize = cacheEntryInfoBufferSizeInitial
  111.         cacheEntryInfoBuffer = Marshal.AllocHGlobal(cacheEntryInfoBufferSize)
  112.         enumHandle = Class1.FindFirstUrlCacheEntry(vbNull, cacheEntryInfoBuffer, cacheEntryInfoBufferSizeInitial)
  113.         While (True)
  114.             internetCacheEntry = CType(Marshal.PtrToStructure(cacheEntryInfoBuffer, GetType(Class1.INTERNET_CACHE_ENTRY_INFOA)), Class1.INTERNET_CACHE_ENTRY_INFOA)
  115.             cacheEntryInfoBufferSizeInitial = cacheEntryInfoBufferSize
  116.             '' returnValue = Class1.DeleteUrlCacheEntry(internetCacheEntry.lpszSourceUrlName)
  117.             Dim fsourceurlname As String = Marshal.PtrToStringAnsi(internetCacheEntry.lpszSourceUrlName)
  118.             Dim flastaccessdate As String = Class1.FileTime2SystemTime(internetCacheEntry.LastAccessTime)
  119.             Dim ftype As String = internetCacheEntry.CacheEntryType.ToString
  120.             Dim surl As String = Marshal.PtrToStringAnsi(internetCacheEntry.lpszLocalFileName)
  121.             Dim fextension As String = Marshal.PtrToStringAnsi(internetCacheEntry.lpszFileExtension)
  122.             Dim fheaderinfo As String = Marshal.PtrToStringAnsi(internetCacheEntry.lpHeaderInfo)
  123.             Dim fhitrate As String = internetCacheEntry.dwHitRate.ToString
  124.             Dim flastmodifiedtime As String = Class1.FileTime2SystemTime(internetCacheEntry.LastModifiedTime)
  125.             Dim fLastSyncTime As String = Class1.FileTime2SystemTime(internetCacheEntry.LastSyncTime)
  126.             Dim fUseCount As String = internetCacheEntry.dwUseCount.ToString
  127.             If sdate = Format(flastaccessdate, "short date") Then
  128.                 If ftype = type And type = "2097153" Then
  129.                     AddData(lview, fsourceurlname, flastaccessdate, ftype, surl, fextension, fheaderinfo, fhitrate, flastmodifiedtime, fLastSyncTime, fUseCount)
  130.                     GoTo mm
  131.                 ElseIf ftype = type And type = "1048577" Then
  132.                     AddData(lview, fsourceurlname, flastaccessdate, ftype, surl, fextension, fheaderinfo, fhitrate, flastmodifiedtime, fLastSyncTime, fUseCount)
  133.                     GoTo mm
  134.                 ElseIf type = 0 And ftype <> "2097153" And ftype <> "1048577" Then
  135.                     AddData(lview, fsourceurlname, flastaccessdate, ftype, surl, fextension, fheaderinfo, fhitrate, flastmodifiedtime, fLastSyncTime, fUseCount)
  136.                 End If
  137.             End If
  138. mm:
  139.             returnValue = Class1.FindNextUrlCacheEntry(enumHandle, cacheEntryInfoBuffer, cacheEntryInfoBufferSizeInitial)
  140.             If (Not returnValue And ERROR_NO_MORE_ITEMS.Equals(Marshal.GetLastWin32Error())) Then
  141.                 Exit While
  142.             End If
  143.             If (Not returnValue And cacheEntryInfoBufferSizeInitial > cacheEntryInfoBufferSize) Then
  144.                 cacheEntryInfoBufferSize = cacheEntryInfoBufferSizeInitial
  145.                 Dim tempIntPtr As New IntPtr(cacheEntryInfoBufferSize)
  146.                 cacheEntryInfoBuffer = Marshal.ReAllocHGlobal(cacheEntryInfoBuffer, tempIntPtr)
  147.                 returnValue = Class1.FindNextUrlCacheEntry(enumHandle, cacheEntryInfoBuffer, cacheEntryInfoBufferSizeInitial)
  148.             End If
  149.         End While
  150.         Marshal.FreeHGlobal(cacheEntryInfoBuffer)
  151.     End Function
  152.     Public Sub AddData(ByVal lview As ListView, ByVal fsourceurlname As String, ByVal flastaccessdate As String, ByVal ftype As String, ByVal surl As String, ByVal fextension As String, ByVal fheaderinfo As String, ByVal fhitrate As String, ByVal flastmodifiedtime As String, ByVal fLastSyncTime As String, ByVal fUseCount As String)
  153.         Dim str(10) As String
  154.         Dim itm As ListViewItem
  155.         str(0) = fsourceurlname
  156.         str(1) = flastaccessdate
  157.         str(2) = fhitrate
  158.         str(3) = flastmodifiedtime
  159.         str(4) = fLastSyncTime
  160.         str(5) = fUseCount
  161.         str(6) = surl
  162.         str(7) = fextension
  163.         str(8) = fheaderinfo
  164.         str(9) = ftype
  165.         itm = New ListViewItem(str)
  166.         lview.Items.Add(itm)
  167.     End Sub
  168. End Module