VB-Homepage Tipp 399 |
Überprüfen, ob sich eine URL im Cache befindet |
Die Adressen von Internetseiten bezeichnet man als URL. Wenn Sie also überprüfen möchten, ob sich eine bestimmte Seite im Cache Ihres Browsers befindet, dann können Sie dies mit nachfolgendem Code realisieren. 1. Benötigen Sie natürlich erstmal ein neues VB Projekt mit einer Form. 2. Fügen Sie dieser Form eine Textbox (Text1) und einen Commandbutton (Command1) hinzu. In die Textbox soll später die zu prüfende Adresse geschrieben werden und der Commandbutton soll die Prüfung auslösen. 3. Nun etwas API Deklaration Allgemein/Deklarationen 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 Errors: 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 Allgemein/GetCacheEntryInfo 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 'Seite existiert nicht im Cache Err.Raise eeErrorBase + 1, App.EXEName & ".mCacheEntry", WinAPIError(lErr) GetCacheEntryInfo = False Exit Function Else 'Seite existiert im Cache GetCacheEntryInfo = True End If End If End Function Allgemein/WinAPIError Public Function WinAPIError(ByVal lLastDLLError As Long) As String Dim sBuff As String Dim lCount As Long 'Übergibt die Fehlerinformation 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 4. Und nun die Aktion, ausgelößt durch einen Click auf den Commandbutton. Command1_Click On Error GoTo ErrorHandler ' Prüfen, ob die angegebene URL im Cache ist If (GetCacheEntryInfo(Me.hWnd, Text1.Text)) Then MsgBox "angegebene URL ist im Cache.", vbInformation Else MsgBox "angegebene URL nicht im Cache.", vbInformation End If Exit Sub ErrorHandler: MsgBox "angegebene URL nicht im Cache !" & vbCrLf & "Fehler : " & Trim(Err.Description), vbInformation 5. Bevor Sie die Prüfung starten, müssen Sie natürlich noch eine Adresse (URL) in die Textbox eingeben. Bsp. http://www.vb-homepage.de/index.htm |
Tipp-Download |
Quelle : Steve McMahon / steve@vbaccelerator.com |