Как я могу получить количество истории Internet Explorer? Я могу добиться этого с помощью Shell.Application в vb, но не могу в delphi. Я нашел код с «CLSID_CUrlHistory», который показывает все записи кэша.
Я пытался преобразовать то же самое, но что-то упустил, пожалуйста, изучите следующий ответ и исправьте меня, где я ошибся
Procedure ListIeHistory;
Const
HISTORY_LIST = 34;
ITEM_NAME = 0;
ITEM_DATE = 2;
var
ShellSession : OleVariant;
ShellHistory : OleVariant;
ShellEntry : OleVariant;
ShellHistoryFolder : OleVariant;
ShellCollection : OleVariant;
oEnum : IEnumvariant;
iValue : LongWord;
Begin
result:='';
ShellSession:= CreateOleObject('Shell.Application');
ShellHistory := ShellSession.Namespace(HISTORY_LIST);
ShellHistoryFolder:= ShellHistory.self;
ShellCollection := ShellHistory.Items;
oEnum := IUnknown(ShellCollection._NewEnum) as IEnumVariant;
while oEnum.Next(1, ShellEntry, iValue) = 0 do
begin
form1.Memo1.Lines.Add(vartostr(ShellEntry.Name));
end;
end;
Отредактировано TLama
Обратите внимание, что в этом коде нет обработки ошибок (я сейчас занят), так что используйте его как источник вдохновения. Но вы уверены, что это то, что вы хотите, я думаю, если вы будете следовать коду из моего ответа и отфильтруете некоторые элементы (скорее всего, период), вы получите то же самое.
Это просматривает каталог C:\Users\TLama\AppData\Local\Microsoft\Windows\History
, поэтому я думаю, что вы пропустили некоторые элементы истории (не я ;-), но у меня нет времени изучать, откуда берутся элементы истории.
FindFirstUrlCacheEntry
иFindNextUrlCacheEntry
. Я не могу проверить это сейчас, но как только у меня будет время, я проверю это. - person TLama   schedule 22.02.2012