![]() |
|
|
#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 а активный браузер |