![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
IE History
Igor_thief © (2005-06-25 23:21:00)Как получить список истории из IE?
Igor_thief (2005-06-28 00:36:00) [1]Ну что, таки не получается?
Igor_thief (2005-06-26 17:02:00) [2]P.N.P. © (26.06.05 16:36) [9]
StringGrid1.Rows[1].Clear;
Была бы в этом проблема :(. Но из списка оно нормально удаляется, а вот когда заходишь в ИЕ, то все на месте! Как и до попытки удаления данного элемента.
P.N.P. (2005-06-26 16:36:00) [3]>Igor_thief (26.06.05 16:14) [8]
добавь в
procedure TForm1.RetrieveButtonClick(Sender: TObject);
сразу после
begin
StringGrid1.Rows[1].Clear;
И все в ажуре =)
Igor_thief (2005-06-26 16:14:00) [4]P.N.P. © (26.06.05 16:01) [7]
Странно, что ж у меня тогда за проблема?
P.N.P. (2005-06-26 16:01:00) [5]>Igor_thief (26.06.05 15:55) [6]
У меня без проблем, все удаляет.
Igor_thief (2005-06-26 15:55:00) [6]P.N.P. © (26.06.05 14:11) [5]
Я тоже так думал, но не работает! Удаляет из грида, но в ИЕ остается. Что-то тут не то.
P.N.P. (2005-06-26 14:11:00) [7]>Igor_thief (26.06.05 13:31) [4]
>чтобы удалялась только одна запись?
Элементарно
procedure TForm1.ClearButtonClick(Sender: TObject);
var
P:WideString;
begin
p:=Stringgrid1.Cells[2, Stringgrid1.Row];
I.DeleteUrl(PWideChar(P),0);
end;
Igor_thief (2005-06-26 13:31:00) [8]Я нашол хороший пример, который получает список истории. Но там работа с ком объектами, а я в этом деле не очень силен. Там есть возможность удаления всей истории. Может кто знает, как переделать это так, чтобы удалялась только одна запись? Вот код:
unit UrlH_Unit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Activex, Comobj, StdCtrls, ComCtrls, Grids;
const
STATURL_QUERYFLAG_ISCACHED = $00010000;
STATURL_QUERYFLAG_NOURL = $00020000;
STATURL_QUERYFLAG_NOTITLE = $00040000;
STATURL_QUERYFLAG_TOPLEVEL = $00080000;
STATURLFLAG_ISCACHED = $00000001;
STATURLFLAG_ISTOPLEVEL = $00000002;
IID_IEnumStatUrl: TGUID = (D1: $3C374A42; D2: $BAE4; D3: $11CF; D4: ($BF, $7D, $00, $AA, $00, $69, $46, $EE));
IID_IUrlHistoryStg: TGUID = (D1: $3C374A41; D2: $BAE4; D3: $11CF; D4: ($BF, $7D, $00, $AA, $00, $69, $46, $EE));
IID_IUrlHistoryStg2: TGUID = (D1: $AFA0DC11; D2: $C313; D3: $831A; D4: ($83, $1A, $00, $C0, $4F, $D5, $AE, $38));
IID_IUrlHistoryNotify: TGUID = (D1: $BC40BEC1; D2: $C493; D3: $11D0; D4: ($83, $1B, $00, $C0, $4F, $D5, $AE, $38));
SID_IEnumStatUrl = '{3C374A42-BAE4-11CF-BF7D-00AA006946EE}';
SID_IUrlHistoryStg = '{3C374A41-BAE4-11CF-BF7D-00AA006946EE}';
SID_IUrlHistoryStg2 = '{AFA0DC11-C313-11d0-831A-00C04FD5AE38}';
SID_IURLHistoryNotify = '{BC40BEC1-C493-11d0-831B-00C04FD5AE38}';
CLSID_CUrlHistory: TGUID = '{3C374A40-BAE4-11CF-BF7D-00AA006946EE}';
type
STATURL = record
cbSize: DWORD;
pwcsUrl: DWORD;
pwcsTitle: DWORD;
ftLastVisited: FILETIME;
ftLastUpdated: FILETIME;
ftExpires: FILETIME;
dwFlags: DWORD;
end;
IEnumSTATURL = interface(IUnknown)
['{3C374A42-BAE4-11CF-BF7D-00AA006946EE}']
function Next(celt: Integer; out elt; pceltFetched: PLongint): HRESULT; stdcall;
function Skip(celt: Longint): HRESULT; stdcall;
function Reset: HResult; stdcall;
function Clone(out ppenum: IEnumSTATURL): HResult; stdcall;
function SetFilter(poszFilter: PWideChar; dwFlags: DWORD): HResult; stdcall;
end;
IUrlHistoryStg = interface(IUnknown)
['{3C374A41-BAE4-11CF-BF7D-00AA006946EE}']
function AddUrl(pocsUrl: PWideChar; pocsTitle: PWideChar; dwFlags: Integer): HResult; stdcall;
function DeleteUrl(pocsUrl: PWideChar; dwFlags: Integer): HResult; stdcall;
function QueryUrl(pocsUrl: PWideChar; dwFlags: Integer; var lpSTATURL: STATURL): HResult; stdcall;
function BindToObject(pocsUrl: PWideChar; var riid: TIID; out ppvOut: Pointer): HResult; stdcall;
function EnumUrls(out ppenum: IEnumSTATURL): HResult; stdcall;
end;
IUrlHistoryStg2 = interface(IUrlHistoryStg)
['{AFA0DC11-C313-11D0-831A-00C04FD5AE38}']
function AddUrlAndNotify(pocsUrl: PWideChar; pocsTitle: PWideChar; dwFlags: Integer;
fWriteHistory: Integer; var poctNotify: Pointer;
const punkISFolder: IUnknown): HResult; stdcall;
function ClearHistory: HResult; stdcall;
end;
IUrlHistoryNotify = interface(IOleCommandTarget)
['{BC40BEC1-C493-11d0-831B-00C04FD5AE38}']
end;
TForm1 = class(TForm)
StringGrid1: TStringGrid;
RetrieveBtn: TButton;
ClearBtn: TButton;
procedure RetrieveBtnClick(Sender: TObject);
procedure ClearBtnClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
I: IUrlHistoryStg2;
implementation
{$R *.DFM}
function FileTimeToDt(Ft: TFileTime): TDateTime;
var
l: Integer;
lft: TFileTime;
begin
FileTimeToLocalFiletime(Ft, lft);
if FileTimeToDosDateTime(lft, Longrec(l).Hi, Longrec(l).Lo) then
result := FiledateToDatetime(l) else
result := 0;
end;
procedure TForm1.RetrieveBtnClick(Sender: TObject);
var
r: Staturl;
Enum: IEnumStatUrl;
X: Integer;
Row: Integer;
begin
StringGrid1.Cells[0, 0] := 'Last Visited';
StringGrid1.Cells[1, 0] := 'Title';
StringGrid1.Cells[2, 0] := 'Url';
StringGrid1.Cells[3, 0] := 'Last Updated';
StringGrid1.Cells[4, 0] := 'Expires';
Row := 0;
I := CreateComObject(ClsId_CUrlHistory) as IUrlHistoryStg2;
I.EnumUrls(Enum);
Enum.SetFilter('http://', 0);
while enum.next(1, r, @X) = S_OK do begin
Inc(Row);
StringGrid1.RowCount := Row + 1;
Stringgrid1.Cells[0, Row] := DateTimeToStr(FileTimeToDt(r.ftLastVisited));
Stringgrid1.Cells[1, Row] := PWidechar(Pointer(r.pwcsTitle));
Stringgrid1.Cells[2, Row] := PWidechar(Pointer(r.pwcsUrl));
Stringgrid1.Cells[3, Row] := DateTimeToStr(FileTimeToDt(r.ftLastUpdated));
Stringgrid1.Cells[4, Row] := DateTimeToStr(FileTimeToDt(r.ftExpires));
end;
end;
procedure TForm1.ClearBtnClick(Sender: TObject);
begin
I.ClearHistory;
end;
end.
Igor_thief (2005-06-26 12:39:00) [9]Описаное выше, дает мне возможностб получить доступ к папке история. А как мне получить полный список истории и выбрав один из урлов, удалить его не только из списка, но и из истории (но только этот урл)?
begin...end (2005-06-26 10:16:00) [10]SHGetSpecialFolderPath + CSIDL_HISTORY
NightStranger (2005-06-25 23:26:00) [11]C:\Documents and Settings\USER_NAME\Local Settings\History...