Skip to Content

TWebBrowser. Отображать в одном окне.

7 всего / 0 новых
Последнее
ponomar
Молчун
Сообщения: 6
Бонусы: 0
Пол: Мужской
Группы: Нет
Блог: читать!
TWebBrowser. Отображать в одном окне.

Здравствуте!
Необходимо, чтобы в TWebBrowser всё открывалось в одном и том же окне.
Это у меня получилось с двумя ВебБраузерами.
Проблема в том, что с этим кодом сервер не видит откуда я пришёл(например с какого поисковика).
А мне нужно, чтобы видел. Нужен совет или код. Спасибо.

Delphi 6
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
begin
ppDisp := Webbrowser2.ControlInterface;
end;

procedure TForm1.WebBrowser2BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
WebBrowser1.Navigate(URL);
Cancel:=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
WebBrowser1.Navigate('http://google.ru');
end;

Сандер
Администратор
Сандер аватар
ГуруМодератор
Сообщения: 1944
Бонусы: 617
Пол: Мужской
Блог: читать!

Headers := 'Referer: ' + Ref + #10 + #13;
Webbrowser1.Navigate(Url, Flags, TargetFrameName, PostData, Headers);

ponomar
Молчун
Сообщения: 6
Бонусы: 0
Пол: Мужской
Группы: Нет
Блог: читать!
Исходное сообщение от 04/22/2011 - 22:33


procedure TForm1.WebBrowser2BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
Headers := 'Referer: ' + Ref + #10 + #13; // здесь не знаю что такое "Ref"
Webbrowser1.Navigate(Url, Flags, TargetFrameName, PostData, Headers);
Cancel:=true;
end;

Спасибо! Заработало. Только без первой строки.Не знаю как объявить "Ref".
Я пробовал по одному(Url, Flags, TargetFrameName, PostData, Headers)
а все вместе не додумался.

Дополнение #1

Прошу прощения. Не заработало.Я ошибся.Я смотрел в новом окне.
А в одном и том же окне выдаёт "неопознанную ошибку".

Сандер
Администратор
Сандер аватар
ГуруМодератор
Сообщения: 1944
Бонусы: 617
Пол: Мужской
Блог: читать!

Ref - это адрес того сайта, который должен выступать в качестве referer (откуда перешли). Строка.
А что именно не работает?

ponomar
Молчун
Сообщения: 6
Бонусы: 0
Пол: Мужской
Группы: Нет
Блог: читать!

При нажатии на ссылку в Яндексе на найденный сайт-
"неопознанная ошибка" в строке:
Webbrowser1.Navigate(Url, Flags, TargetFrameName, PostData, Headers);

Сандер
Администратор
Сандер аватар
ГуруМодератор
Сообщения: 1944
Бонусы: 617
Пол: Мужской
Блог: читать!

Давно я с этим не сталкивался, все забыл...
Порыскал в интернете, нашел пример, где советуется Headers делать не строкой, а конструировать так:
_variant_t Headers(L"Referer: http://www.mybrowser.com\r\n");

А потом передавать &Headers

ponomar
Молчун
Сообщения: 6
Бонусы: 0
Пол: Мужской
Группы: Нет
Блог: читать!
Исходное сообщение от 04/24/2011 - 10:07

Это для меня сложно на сегодня.
Пробовал ещё так:
Headers := 'Referer: ' + Edit1.Text + #10 + #13;
Webbrowser1.Navigate(Url, Headers);
Cancel:=true;

Ошибка не выскакивает,но или сайт не грузится,или ,всё равно , не видит
откуда пришёл.Wall

Дополнение #1

Такой код работает,если просто нажать кнопку.
А если вызвать нажатие кнопки из WebBrowser1NewWindow2 или WebBrowser1BeforeNavigate2
то возникает ошибка.

procedure TForm1.Button4Click(Sender: TObject);
var
Flags, Headers, TargetFrameName, PostData: OLEVariant;
Url, Ref: string;
begin
Flags := '';
TargetFrameName := '';
PostData := '';
Url := UrlEdit.Text;
Ref := AddressEdit.Text;
Headers := 'Referer: ' + Ref + #10 + #13;
Webbrowser1.Navigate(Url, Flags, TargetFrameName, PostData, Headers);
end;

Если из последней строки убрать Flags то ошибки нет,но тогда неивестен реферер.

RSS-материал


Активные пользователи

ПользовательБонусы
Сандер617
Nefertity247
Tori242
robot201
Chief183
STAER140
faiters139
Mavarik121
akkadites94
staiki94