|
#1
|
||||
|
||||
Избранное
Код:
procedure TFavoritesMenu.AddFavorite(Sender: TObject); var ShellUIHelper: ISHellUIHelper; Url, Title: Olevariant; begin if Assigned(FWebbrowser) then begin Title := FWebbrowser.LocationName; Url := FWebbrowser.LocationUrl; if Url <> '' then begin CoCreateInstance(CLSID_SHELLUIHELPER, nil, CLSCTX_INPROC_SERVER, IID_IShellUIHelper, ShellUIHelper); ShellUIHelper.AddFavorite(Url, Title); RebuildMenu; end else Showmessage('No URL selected.'); end else Showmessage('No Webbrowser connected to Favorites-menu.'); end; кто может подсказать в чем проблема (код не мой) |
#2
|
||||
|
||||
Код:
{ Delphi функция Assigned проверяет является ли указатель nil. Если не nil, то возвращает True; если nil, то False. } if Assigned(FWebbrowser) then begin Соответственно FWebBrowser у вас не создан (т.к. он сейчас = nil)... Помогаю за Спасибо |
#3
|
||||
|
||||
он создан.
|
#4
|
||||
|
||||
Тогда пишите так:
Код:
procedure TFavoritesMenu.AddFavorite(Sender: TObject); var ShellUIHelper: ISHellUIHelper; Url, Title: Olevariant; begin Title := FWebbrowser.LocationName; Url := FWebbrowser.LocationUrl; if Url <> '' then begin CoCreateInstance(CLSID_SHELLUIHELPER, nil, CLSCTX_INPROC_SERVER, IID_IShellUIHelper, ShellUIHelper); ShellUIHelper.AddFavorite(Url, Title); RebuildMenu; end else Showmessage('No URL selected.'); end; Помогаю за Спасибо |
#5
|
||||
|
||||
ошибка так вылетает
|
#6
|
||||
|
||||
Ошибка вылетает потому что FWebBrowser = nil!!!
Помогаю за Спасибо |
#7
|
||||
|
||||
Код:
unit Unit1; interface uses ActiveX, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, SHDocVw, StdCtrls; type TForm1 = class(TForm) WebBrowser: TWebBrowser; Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; const CLSID_ShellUIHelper: TGUID = '{64AB4BB7-111E-11D1-8F79-00C04FC2FBE1}'; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin if WebBrowser.Document=nil then WebBrowser.Navigate('about:blank'); while WebBrowser.Document=nil do Application.ProcessMessages; end; procedure TForm1.Button1Click(Sender: TObject); var url: OleVariant; begin url:='http://ya.ru/'; WebBrowser.Navigate2(url); end; procedure TForm1.Button2Click(Sender: TObject); var ShellUIHelper: IShellUIHelper; locationname: OleVariant; locationurl: OleVariant; res: HRESULT; begin res:=CoCreateInstance(CLSID_ShellUIHelper, nil, CLSCTX_INPROC_SERVER, IID_IShellUIHelper, ShellUIHelper); if res=S_OK then begin locationname:=WebBrowser.LocationName; locationurl:=WebBrowser.LocationURL; ShellUIHelper.AddFavorite(locationurl, locationname); end; end; end. Пишу программы за еду. __________________ |
#8
|
||||
|
||||
вобщем я понял, я не могу указать конкретного имени откуда тянуть информацию так как у меня вкладки и в каждой вкладке новое имя браузера, мне нужно чтобы вместо
Код:
locationname:=WebBrowser.LocationName; locationurl:=WebBrowser.LocationURL; не имя браузера WebBrowser а активный браузер |