Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 使用EmbeddedWB和:OnBeforeNavigate2在其他浏览器中打开URL_Delphi - Fatal编程技术网

Delphi 使用EmbeddedWB和:OnBeforeNavigate2在其他浏览器中打开URL

Delphi 使用EmbeddedWB和:OnBeforeNavigate2在其他浏览器中打开URL,delphi,Delphi,如果用户单击链接,我有时需要打开另一个浏览器 我正在使用CHtmlView::OnBeforeNavigate2取消打开特定URL的集成web浏览器;相反,我将在另一个firefox中打开它 然而,这似乎不是一个好地方做这件事。 由于某些原因,当用户根本没有单击链接时,也会调用OnBeforeNavigate。此事件是取消正在进行的导航的最佳位置。只是,如果要检测此事件是否由超链接单击触发(因为它会在加载帧时触发),可以确定Flags参数是否包含该值,例如: procedure TForm1.W

如果用户单击链接,我有时需要打开另一个浏览器

我正在使用CHtmlView::OnBeforeNavigate2取消打开特定URL的集成web浏览器;相反,我将在另一个firefox中打开它

然而,这似乎不是一个好地方做这件事。 由于某些原因,当用户根本没有单击链接时,也会调用OnBeforeNavigate。

此事件是取消正在进行的导航的最佳位置。只是,如果要检测此事件是否由超链接单击触发(因为它会在加载帧时触发),可以确定
Flags
参数是否包含该值,例如:

procedure TForm1.WebBrowser1BeforeNavigate2(ASender: TObject;
  const pDisp: IDispatch; const URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
  if ((Flags and navHyperlink) <> 0) and (URL = 'http://example.com') then
  begin
    Cancel := True;
    // the user clicked a link to http://example.com and the navigation is
    // going to be cancelled; now do whatever else you need here
  end;
end;
程序TForm1.WebBrowser1在重新授权2之前(申请人:ToObject;
常量pDisp:IDispatch;常量URL、标志、TargetFrameName、PostData、,
标题:OleVariant;变量取消:WordBool);
开始
如果((标志和导航超链接)0)和(URL=)http://example.com""那么,
开始
取消:=真;
//用户单击了指向的链接http://example.com 导航是
//将被取消;现在你还需要做什么
结束;
结束;

我无法告诉您哪些版本的Internet Explorer通过了此值,但我可以肯定地告诉您,用于web浏览器的MSDN文档几乎完全过时。

谢谢,navHyperlink的值是什么-我的Delphi没有将其定义为
const navHyperlink=$40,它来自枚举。嗯,事件应该使用枚举作为其标志,但显然不是。所以这实际上是没有文件的,但我认为这只是因为文件已经过时了。