关于网页链接的问题,很急的(200分)

S

sen_jia

Unregistered / Unconfirmed
GUEST, unregistred user!
1.有什么方法或者函数可以直接得到所点链接的那个链接对应的href
(不是通过onbeforenavigate2事件中的url参数,也不分析html代码)
2.我自己做了一个浏览器,怎样在onnewwindow2事件中写代码,才能实现网页在新窗口打开
我是这样写的:
procedure TMainForm.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
var
newapp:TMainForm;
begin
newapp.Create(nil);
newapp.Visible :=true;
ppdisp :=newapp.WebBrowser1.Application ;
end;
呵呵,不行啊,出现下面的错误:
Access violation at address 00483e47 in module 'webbrows.exe'.Read of address 00000000.
3。有些网页在你点一个链接的时候,它又会触发另外一个链接,
导致显示的是后面的那个网页,怎么控制才能让显示的是第一张网页啊
只要回答一个问题,就给分,呵呵

 
procedure TMainForm.NewWindow2(Sender: TObject; var ppDisp: IDispatch;
var Cancel: WordBool);
begin
blNewWin :=False;
if blUserClick then begin
NewPage(CommUrl)
end
else begin
New(PLItem);
PLItem.Sheet := TTabSheet.Create(Self);
PLItem.Sheet.PageControl := PageControl1;
PLItem.Sheet.Caption := 'Loading...';
PLItem.WB := TEmbeddedWB.Create(Self);
Plitem.WB.Hide;
PLItem.WB.Align := alClient;
PlItem.wb.Offline := mnOffline.Checked;
PlItem.Wb.RegisterAsBrowser := True;
ppDisp:=PlItem.wb.DefaultDispatch;
PLItem.WB.OnTranslateUrl:=bwb.OnTranslateUrl;
PLItem.WB.OnProgressChange :=bwbProgressChange;
PLItem.WB.OnNewWindow2:=NewWindow2;
// PLItem.WB.OnDocumentComplete := bwbDocumentComplete;
PLItem.WB.OnNavigateComplete2 := bwbDocumentComplete;
PLItem.WB.OnBeforeNavigate2:=bwb.OnBeforeNavigate2;
PLItem.WB.OnCommandStateChange:=bwbCommandStateChange;
PLItem.WB.OnStatusTextChange :=bwbStatusTextChange;
PlItem.blGoBack := False;
PlItem.blGoForward := False;
Plitem.sheet.ImageIndex:=0;
PLItem.Sheet.InsertControl(PLItem.WB);
Plitem.WB.show;
WBList.Add(PLItem);
// PageControl1Change(Nil);
// ppdisp := bWB.Application;
blNewWin :=True;
end;
blUserClick := False;
end;

procedure TMainForm.BwbBeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
var i : integer;
em, sub : String;
begin
sub := url;
if pos('mailto:', Lowercase(url)) < 0 then
begin
ShellExecute(handle,nil,pchar(sub),nil,nil,sw_shownormal);
end;
end;

 
要使用shellexecute()命令需要在uses中写什么东西啊

另外能不能把newwindow2事件中的几个参数给个详细的说明啊,多谢了
 
uses shellapi;
 
这个onbeforenavigate2中,好像根本没有作用啊,这是怎么回事啊
 
TO SEN_JIA

要USES SHELLAPI
 
我想再问一下,webbrowser控件中有没有在onbeforenavigate2事件之前触发的事件啊,
我找了一下,它没有onclick事件,那么有没有类似的事件啊,多谢了
 
procedure TForm1.WebBrowser1Visible(Sender: TObject; Visible: WordBool);
begin
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if webbrowser1.showing then
button1.caption:='ok';
end;
 
我现在是要在点击网页中的链接的时候设置一些变量,也就是要在onbeforenavigate2事件
触发之前设置这些变量,所以要找到这样一个事件,我看了你写的程序,好像不太适合我
这个程序,因为你要设置一个按钮,呵呵,有没有其他的方法啊,多谢了
 
顶部