cefsharp - "Links that open a specific application" 似乎不起作用

cefsharp - "Links that open a specific application" seem to be not working

我刚开始使用 C# 上的 Cefsharp。
一切正常,除了 Cefsharp 无法执行计算机上 open/run 特定应用程序的某些特殊 link。
link 仍然适用于其他 Chromium 官方浏览器 (Google Chrome),我单击 link 并启动应用程序。 Cefshap 不是,当我点击 link 时它什么都不做。
link 看起来像这样:“runapp://api.abcxyz/...”
如何让它在 Cefsharp 上运行?

image show that the link works on other chromium browsers

首先,出于安全原因,默认情况下禁止加载外部协议。从历史上看,您会实施 OnProtocolExecution。 当前 OnProtocolExecution 中存在 upstream 错误,请参阅 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();