Вверх ↑
Ответов: 537
Рейтинг: 14
#1: 2016-02-21 11:58:45 ЛС | профиль | цитата
Здравствуйте!
Как сделать открытие ссылки в новом окне своего браузера с сохранением сессии, чтобы не просто открывалась ссылка, а и передавались все параметры как в IE? Есть ссылки которые через скрипт открываются только в новой вкладке или окне, если просто вставить ссылку и открыть, будет ошибка. Нужно передать сессию в новый webbrowser и не потерять сессию, так как это делается в IE, клик по ссылке - и она открывается в новой вкладке, но сессия не теряется. Есть предложение добавить для WebBrowser точку типа data, эсли она не подключена к хендл другого браузера, то открывать ссылки нового окна в родном IE, а если подключена, то в другом WebBrowser хайясма. Пытался сам изменить hiWebBrowser.pas, изучил код, добавил точку и переменные, но чтото не работает. Как присвоить ppDisp новый WebBrowser?

Вот OnNavigate в hiWebBrowser.pas

procedure OnNavigate(Sender: TObject; const pDisp: IDispatch;
var URL: OleVariant;
var Flags: OleVariant;
var TargetFrameName: OleVariant;
var PostData: OleVariant;
var Headers: OleVariant;
var Cancel: WordBool);

А это новое окно

procedure OnNewWindow(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);

В програмировании новичок, может не так понял. Помогите доделать InlineCode.

Может в TargetFrameName нужно чтото вставлять.
Справка:
TargetFrameName - необязательный. Строка, имя фрейма HTML, в котором следует отобразить ресурс. Если такого фрейма не существует, откроется новое окно.


Если это сделать, то можно будет создать собственный настоящий браузер с вкладками.

Вот схема, как ее доделать? Я так понимаю нужно как-то передать ID сессии.
Make(delphi)
ver(4.05 build 186)
Add(MainForm,3763150,217,133)
{
Width=683
Height=603
}
Add(WebBrowser,7626308,343,196)
{
Top=35
Width=335
Height=520
URL="http://hiasm.net"
Silent=0
Point(NewWindow)
link(NewWindow,7440356:GetData,[])
}
Add(WebBrowser,7727952,441,196)
{
Left=340
Top=35
Width=325
Height=520
URL=""
Silent=0
Point(PHandle)
}
Add(EventFromData,7440356,350,119)
{
link(onEvent,2943768:doEvent1,[])
}
Add(Hub,2943768,392,119)
{
OutCount=3
link(onEvent1,10584606:doData,[(413,125)(413,104)])
link(onEvent2,5430024:doData,[])
link(onEvent3,14442675:doNavigate,[(430,139)(430,279)])
}
Add(DoData,10584606,420,98)
{
Data=Integer(1)
link(onEventData,7440356:doData,[(464,104)(464,114)(338,114)(338,125)])
}
Add(InlineCode,14442675,455,273)
{
WorkPoints=#10:doNavigate|
DataPoints=#2:WB|3:Url|3:Ref|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|40:uses kol,Share,Debug,ActiveX,KOLSHDocVw;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|12: public |26: Ref,Url,WB:THI_Event;|3: |50: procedure doNavigate(var dt:TData; idx:WORD);|5: end;|0:|14:implementation|0:|33:procedure THiAsmClass.doNavigate;|3:var|56: Flags, Headers, TargetFrameName, PostData: OLEVariant;|21: _Url, _Ref: string;|25: WebBrowser:PWebBrowser;|5:begin|46: WebBrowser:=PWebBrowser(ToIntegerEvent(WB));|14: Flags := '';|24: TargetFrameName := '';|17: PostData := '';|29: _Url := ReadString(dt,Url);|29: _Ref := ReadString(dt,Ref);|44: Headers := 'Referer: ' + _Ref + #10 + #13;|71: Webbrowser.Navigate(_Url, Flags, TargetFrameName, PostData, Headers);|4:end;|0:|4:end.|
link(WB,7727952:PHandle,[])
link(Url,5430024:GetData,[])
link(Ref,7626308:CurrentURL,[(475,251)(349,251)])
}
Add(EventFromData,5430024,462,126)
{
}


карма: 4

0
файлы: 1code_36972.txt [1.7KB] [351]