キャッシュされているはずのIEのアドレスバーにあるアイコンを取得する方法はどのようにすれば取得する事ができるでしょうか?
ShellIconCacshから取得できないかとか、インターネット一時ファイルから取得できるかなど、いろいろ調べたのですがどうしても解りません。
宜しくお願いします。
自己解決しました。
GetUrlCacheEntryInfoでインターネット一時ファイルのキャッシュされたアイコンファイル名(favicon.ico)を取得できることが解りました。
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 Currency
ExpireTime As Currency
LastAccessTime As Currency
LastSyncTime As Currency
lpHeaderInfo As Long
dwHeaderInfoSize As Long
lpszFileExtension As Long
dwExemptDelta As Long
Buffer(0 To 1023) As Byte
End Type
Private Declare Function GetUrlCacheEntryInfo Lib "wininet.dll" Alias "GetUrlCacheEntryInfoA" (ByVal sUrlName As String, lpCacheEntryInfo As Any, lpdwCacheEntryInfoBufferSize As Long) As Long
Private Declare Function lstrcpyA Lib "kernel32" (ByVal RetVal As String, ByVal Ptr As Long) As Long
Private Declare Function lstrlenA Lib "kernel32" (ByVal Ptr As Any) As Long
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
dwEntrySize = Len(lpCacheEntry)
lpCacheEntry.dwStructSize = dwEntrySize
If (GetUrlCacheEntryInfo(lpszUrl, lpCacheEntry, dwEntrySize)) = 0 Then
If StringFromPointer(lpCacheEntry.lpszLocalFileName) <> "" Then
GetCacheEntryInfo = True
End If
End If
End Function
Private Function StringFromPointer(ByVal Ptr As Long) As String
StringFromPointer = Space$(lstrlenA(Ptr))
lstrcpyA StringFromPointer, Ptr
End Function
解決するのを忘れていました。
ツイート | ![]() |