cefsharp-“打开特定应用程序的链接”似乎不起作用

问题描述

我只是从C#的Cefsharp开始。
一切正常,除了Cefsharp无法执行某些打开/运行计算机上特定应用程序的特殊链接。
该链接在其他Chromium官方浏览器(谷歌浏览器)上仍然有效,我点击了链接,它启动了该应用程序。 Cefshap不是,单击链接后它什么也不做。
链接看起来像这样:“ runapp://api.abcxyz / ...”
如何在Cefsharp上使用它?

image show that the link works on other chromium browsers

解决方法

首先,出于安全原因,默认情况下不加载外部协议。从历史上看,您会实施OnProtocolExecutionupstream中目前存在一个OnProtocolExecution错误,请参见https://bitbucket.org/chromiumembedded/cef/issues/2715/onprotocolexecution-page-goes-blank-after

您可以使用RequestHandler.OnBeforeBrowser并调用Process.Start

来实现变通方法

它看起来大致类似于以下内容(在Notepad ++中写得很快,可能有一些小错误需要纠正)。

public class ExampleRequestHandler : RequestHandler
{
    protected override bool OnBeforeBrowse(IWebBrowser chromiumWebBrowser,IBrowser browser,IFrame frame,IRequest request,bool userGesture,bool isRedirect)
    {
        if(request.Url.StartsWith("mailto:"))
        {
            System.Diagnostics.Process.Start(request.Url);
            //Cancel navigation
            return true;
        }
        return false;
    }
}

browser.RequestHandler = new ExampleRequestHandler();

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...