Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long Const PAGETMP = &H20& Const MAX_LEN = 200 Private Sub Command1_Click() Dim sTmp As String * MAX_LEN Dim nLength As Long Length = GetTempPath(MAX_LEN, sTmp) Text1.Text = Left(sTmp, Length) End Sub
通过URL获取该临时文件在本地的路径Declare Sub RtlMoveMemory Lib "kernel32" (Destination As Any, Source As Any, ByVal Length As Long) Declare Function SysAllocString Lib "oleaut32.dll" (ByVal pOlechar As Long) As String Declare Function GetUrlCacheEntryInfoW Lib "wininet.dll" (ByVal szUrlName As Long, ByRef lpCacheEntryInfo As Any, _ ByRef lpdwCacheEntryInfoBufferSize As Long) As LongType FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Type INTE_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 dwReserved As Long End Type
Function GetCachePath(lpszUrl As String) As String Dim dwEntrySize As Long Dim lpCacheEntry As INTE_CACHE_ENTRY_INFO Dim tarr() As Byte
Call GetUrlCacheEntryInfoW(StrPtr(lpszUrl), ByVal 0, dwEntrySize) If dwEntrySize > 0 Then ReDim tarr(0 To dwEntrySize)
RtlMoveMemory ByVal lpCacheEntry, tarr(0), Len(lpCacheEntry) GetCachePath = SysAllocString(lpCacheEntry.lpszLocalFileName) GetCachePath = StrConv(GetCachePath, vbFromUnicode) End If End Function
Const PAGETMP = &H20&
Const MAX_LEN = 200
Private Sub Command1_Click()
Dim sTmp As String * MAX_LEN
Dim nLength As Long
Length = GetTempPath(MAX_LEN, sTmp)
Text1.Text = Left(sTmp, Length)
End Sub
Declare Function SysAllocString Lib "oleaut32.dll" (ByVal pOlechar As Long) As String
Declare Function GetUrlCacheEntryInfoW Lib "wininet.dll" (ByVal szUrlName As Long, ByRef lpCacheEntryInfo As Any, _
ByRef lpdwCacheEntryInfoBufferSize As Long) As LongType FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Type INTE_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
dwReserved As Long
End Type
Function GetCachePath(lpszUrl As String) As String
Dim dwEntrySize As Long
Dim lpCacheEntry As INTE_CACHE_ENTRY_INFO
Dim tarr() As Byte
Call GetUrlCacheEntryInfoW(StrPtr(lpszUrl), ByVal 0, dwEntrySize)
If dwEntrySize > 0 Then
ReDim tarr(0 To dwEntrySize)
Call GetUrlCacheEntryInfoW(StrPtr(lpszUrl), tarr(0), dwEntrySize)
RtlMoveMemory ByVal lpCacheEntry, tarr(0), Len(lpCacheEntry)
GetCachePath = SysAllocString(lpCacheEntry.lpszLocalFileName)
GetCachePath = StrConv(GetCachePath, vbFromUnicode)
End If
End Function