Журнал IE: visited

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Журнал IE: visited

Сообщение Alexanbar » 26.01.2006 (Чт) 23:35

Запускаем диалог "Упорядочить избранное".
В числе прочего выдаётся информация о числе посещений данной ссылки и дате последнего посещения.

Меня интересует вопрос, по какому принципу считается число посещений, и какое посещение последнее.

Пример. http://www.google.ru/

Такого точно адреса в журнале нет, но есть много-много типа:

http://www.google.ru/ssssss?kkkkkkk (95 штук), из них последнее посещение - 25.01.2006 22:56:52

Но! Выдаётся не 0 и не количество таких ссылок, а нечто среднее (16 штук), а последнее посещение - 26.01.2006 17:32

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 30.01.2006 (Пн) 1:24

Выяснил, однако.

Вся информация содержится в функции GetUrlCacheEntryInfo.
В частности, кол-во посещений задаётся параметром dwHitRate, а время последнего доступа - LastAccessTime:
Код: Выделить всё

Public 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
    dwReserved As Long
    dwExemptDelta As Long
    'szRestOfData() As Byte
End Type

Public Function GetCacheFileName(URL As String, _
    Optional HitRate As Long, _
    Optional LastAccess As Date) As String
Dim Ret&, dwBuffer&
Dim ICEI As INTERNET_CACHE_ENTRY_INFO
Dim pntrICE As Long

dwBuffer = 0
Ret& = GetUrlCacheEntryInfo(URL, 0, dwBuffer)
If dwBuffer = 0 Then
    FileName = ""
    GetCacheFileName = ""
    Exit Function
Else
   
    pntrICE = LocalAlloc(LMEM_FIXED, dwBuffer)
    If pntrICE Then
        'set a Long pointer to the memory location
        CopyMemory ByVal pntrICE, dwBuffer, 4
        Ret& = GetUrlCacheEntryInfo(URL, pntrICE, dwBuffer)
        CopyMemory ICEI, ByVal pntrICE, Len(ICEI)
        GetCacheFileName = GetStrFromPtrA(ICEI.lpszLocalFileName)

        HitRate = ICEI.dwHitRate
        LastAccess = GetDate(ICEI.LastAccessTime)
       
    End If
     Call LocalFree(pntrICE)
End If

End Function

Public Function GetDate(InternetDate As FILETIME) As String

Dim sDate As SYSTEMTIME, sDatel As SYSTEMTIME
Dim InternetDateL As FILETIME
Dim RetVal As Long
Dim hPointer As Long
Dim strDate As String
Dim udtPointer As Long
Dim strTemp As String
Dim tzi As TIME_ZONE_INFORMATION
Dim tBias As Long
'Dim wY%, wM%, wD%, wH%, wMin%, wS%
'Dim InternetDate1 As FILETIME

Const LOCALE_NOUSEROVERRIDE = &H80000000
Const LOCALE_SDATE = &H1D
Const LOCALE_STIME = &H1E        '  time separator


On Error GoTo GetTime_Error
   
    GetDate = ""
    FileTimeToLocalFileTime InternetDate, InternetDateL
    RetVal = FileTimeToSystemTime(InternetDateL, sDate)

    strDate = String$(255, " ")
    If RetVal <> 0 Then
       
       
       
            GetDate = DateSerial(sDate.wYear, sDate.wMonth, sDate.wDay)
            GetDate = GetDate & " " & _
                TimeSerial(sDate.wHour, _
                sDate.wMinute, sDate.wSecond)
       
   
    End If
Exit Function
GetTime_Error:
    'Debug.Print "GetDate Error: " & Err.Number & Err.Description
End Function

Public Function GetStrFromPtrA(ByVal lpszA As Long) As String

   GetStrFromPtrA = String$(lstrlenA(ByVal lpszA), 0)
   Call lstrcpyA(ByVal GetStrFromPtrA, ByVal lpszA)

End Function


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 118

    TopList