Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Избранное


Автор: Dr Smth 9.11.2004, 11:09
Нужно найти путь к избранным веб-страницам.

Автор: Dimich 9.11.2004, 12:29
Открываешь в реестре ключик
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
и смотришь Favorites....

З.Ы. В ФАКе кажется и готовый кусок кода видел....

Автор: Dr Smth 9.11.2004, 15:58
Про избранное там, вроде бы, нет. Есть нечто по имени Personal (или как там точно), и что под этим скрывается не совсем ясно.

Автор: p0s0l 9.11.2004, 16:03
Еще можно так:
Код
uses SHFolder, SHObj;

var s : string;
begin
 SetLength (S, MAX_PATH);
 SHGetSpecialFolderPath (0, @S[1], CSIDL_COMMON_FAVORITES, False);
 SetLength (S, Pos(#0, S)-1);
 ShowMessage (s);

Если надо фавориты для текущего юзера (выше были общие фавориты всех юзеров), то надо заменить CSIDL_COMMON_FAVORITES на CSIDL_FAVORITES


Добавлено @ 16:05
Цитата
Про избранное там, вроде бы, нет. Есть нечто по имени Personal (или как там точно), и что под этим скрывается не совсем ясно.
Там есть параметр Favorites...

Автор: p0s0l 9.11.2004, 16:09
Перенесенно из раздела Delphi

Автор: Dr Smth 10.11.2004, 12:57
г-н Посол, что это за зверь такой по имени
Цитата(p0s0l @ 9.11.2004, 16:03)
SHObj
,
и где обитает?

Автор: p0s0l 10.11.2004, 13:13
Dr Smth, блин, описался (ударение - куда надо!)
ShlObj smile

Автор: Dr Smth 10.11.2004, 15:41
smile

Автор: Dr Smth 12.11.2004, 12:21
Вот спасибо, г-н Посол.
Уважили так уважили. Что бы я без Вас делал (даже подумать страшно)?
Можно ещё один маленький вопрос?
Нужно получить html-код страницы. Из офф-лайна всё просто - можно открыть как текстовой файл (был бы путь). А вот если страница загружена в данный момент в Explorer'е (не в офф-лайне, имеется в виду) - как из него выдрать html?
smile

Автор: p0s0l 12.11.2004, 17:46
Модератор: Пожалуйста, один топик - один вопрос.

Ответ: легко и просто smile
Код
uses SHDocVw, MSHTML;

procedure TForm1.Button1Click(Sender: TObject);
var
 isw : IShellWindows;
 wb2 : IWebBrowser2;
 doc : IHTMLDocument2;

begin
 isw := CoShellWindows.Create;
 wb2 := isw.Item(0) as IWebBrowser2;
 doc := wb2.Document as IHTMLDocument2;
 Memo1.Text := doc.body.outerHTML;
end;
В Memo1 будет html из IE...
Так же если несколько окон IE, то можно перебрать все окна...
isw.Count - количество открытых окон,
isw.Item(i) - i-тое окно...

Автор: Dr Smth 14.11.2004, 15:42
На счёт вопросов понял.
Но раз уж начали здесь - то по поводу предыдущего кода.
Всё работает, только как избавиться от ошибки, возбуждаемой, если в браузере не открыта ни одна страница. И ещё - таким образом получается содержимое меджду тегами <body></body>. Можно также получить и другие отдельные части, типа названия страницы, языка... А вот, чтобы полный код от <html> до </html>? Можно как-то это организовать. В ФАКе есть - но у меня не работает.

Автор: p0s0l 14.11.2004, 16:39
Цитата
Всё работает, только как избавиться от ошибки, возбуждаемой, если в браузере не открыта ни одна страница.
А если головой подумать ? smile
isw.Count - количество открытых окон IE...
isw.Count = 0 - значит ничего не открыто...

Цитата
И ещё - таким образом получается содержимое меджду тегами <body></body>. Можно также получить и другие отдельные части, типа названия страницы, языка... А вот, чтобы полный код от <html> до </html>? Можно как-то это организовать. В ФАКе есть - но у меня не работает.

Код
uses SHDocVw, MSHTML, ActiveX;

procedure TForm1.Button1Click(Sender: TObject);
var
 isw : IShellWindows;
 wb2 : IWebBrowser2;
 HtmlName : string;

begin
 isw := CoShellWindows.Create;
 if isw.Count <= 0 then
 begin
   ShowMessage ('Нет окон IE!');
   Exit;
 end;

 HtmlName := ExtractFilePath(ParamStr(0)) + 'tmp.html';
 wb2 := isw.Item(0) as IWebBrowser2;
 (wb2.Document as ActiveX.IPersistFile).Save(StringToOleStr(HtmlName), True);

 memo1.Lines.LoadFromFile(HtmlName);
end;

Автор: Dr Smth 15.11.2004, 10:36
Классно! Видимо, голова у меня чем-то не тем была занята...
smile smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)