关闭

如何从URL取得其在Internet Cache中的文件名(vb实现)

1249人阅读 评论(0) 收藏 举报

参考自 http://blog.csdn.net/cathyeagle/archive/2004/11/05/167900.aspx

 

'api声明
Private Type FILETIME
    dwLowDateTime 
As Long
    dwHighDateTime 
As Long
End Type


Private Type INTERNET_CACHE_ENTRY_INFO
    dwStructSize 
As Long
    lpszSourceUrlName 
As Long
    lpszLocalFileName 
As Long
    CacheEntryType 
As Long
    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 Long
    
'union {
    '    DWORD dwReserved;
    '    DWORD dwExemptDelta;
    '}
    dwReserved As Long
End Type

Private Declare Sub MoveMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef _
    Destination 
As Any, ByRef Source As Any, ByVal Length As Long)
Private Declare Function SysAllocString Lib "oleaut32.dll" (ByVal pOlechar As LongAs String

Private Declare Sub GetUrlCacheEntryInfo Lib "wininet.dll" Alias _
    
"GetUrlCacheEntryInfoA" (ByVal lpszUrlName As StringByRef lpCacheEntryInfo As _
    Any, 
ByRef lpdwCacheEntryInfoBufferSize As Long)



'函数
Private Function getcachepath(lpszUrl$) As String

Dim dwEntrySize&
Dim lpCacheEntry As INTERNET_CACHE_ENTRY_INFO
Dim tarr() As Byte

Call GetUrlCacheEntryInfo(lpszUrl, ByVal 0, dwEntrySize)
If dwEntrySize > 0 Then
    
ReDim tarr(0 To dwEntrySize)
    
    
Call GetUrlCacheEntryInfo(lpszUrl, tarr(0), dwEntrySize)
        
    MoveMemory lpCacheEntry, tarr(
0), Len(lpCacheEntry)
    getcachepath 
= SysAllocString(lpCacheEntry.lpszLocalFileName)
    
Else
    
'getcachepath =""
End If
End Function

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:262837次
    • 积分:4425
    • 等级:
    • 排名:第6996名
    • 原创:124篇
    • 转载:51篇
    • 译文:0篇
    • 评论:296条
    最新评论
    我的网络硬盘
    友情链接