使用CefSharp C#将邮件重定向到链接

我有一个使用cefSharp Chrome浏览器的简单C#应用程序,我正在使用该浏览器加载网页。问题是mailto链接未重定向到默认邮件客户端。我一直在阅读,似乎需要添加一个处理程序。文档说要使用OnBeforeResourceLoad。我已尽我所能尝试了所有方法,但无法使其正常工作。我希望有人可以在这里包含的代码中添加该类(在正确的位置,以及其他任何可以使其正常工作的代码。这是我试图使用该信息的链接,但不知道如何实现。

How to open a link in a native browser from CefSharp 3

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;    

namespace WindowsFormsApp4
{    
    public partial class Form1 : Form
    {        
        public Form1()
        {
            InitializeComponent();
            InitBrowser();            
        }
        private void Form1_Load(object sender,EventArgs e)
        {

        }
        public ChromiumWebBrowser browser;
        public void InitBrowser()
        {
            Cef.Initialize(new CefSettings());
            browser = new ChromiumWebBrowser("https://google.com");

            this.Controls.Add(browser);
            browser.Dock = DockStyle.Fill;
        }        
    }
}

这是我尝试但无法上班的方法之一。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;


namespace WindowsFormsApp4
{
    public class BrowserRequestHandler : IRequestHandler
    {
        public bool OnBeforeBrowse(IWebBrowser browserControl,IBrowser browser,IFrame frame,IRequest request,bool isRedirect)
        {
            // Open in Default browser
            if (!request.Url.StartsWith("mailto:"))
            {
                System.Diagnostics.Process.Start(request.Url);
                return true;
            }
            return false;
        }
    }
    public partial class Form1 : Form
    {        
        public Form1()
        {
            InitializeComponent();
            InitBrowser();            
        }
        private void Form1_Load(object sender,EventArgs e)
        {

        }
        public ChromiumWebBrowser browser;
        public void InitBrowser()
        {
            Cef.Initialize(new CefSettings());
            browser = new ChromiumWebBrowser("https://google.com");
            browser.RequestHandler = new BrowserRequestHandler();
            this.Controls.Add(browser);
            browser.Dock = DockStyle.Fill;
        }        
    }
}

我添加了

using CefSharp.Handler;

现在我没有收到错误,但它甚至没有弹出消息框。这就是我所拥有的:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;

using CefSharp.Handler;

namespace CefSharp
{

}

namespace WindowsFormsApp4
{
    public class CustomResourceRequestHandler : ResourceRequestHandler
    {
        public bool OnBeforeBrowse(IWebBrowser browserControl,bool isRedirect)
        {
            System.Windows.Forms.MessageBox.Show("Test");
            // Open in Default browser
            if (!request.Url.StartsWith("mailto:"))
            {
                System.Diagnostics.Process.Start(request.Url);
                return true;
            }
            return false;
        }

    }

    public class CustomRequestHandler : RequestHandler
    {
        protected override IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser,bool isnavigation,bool isDownload,string requestInitiator,ref bool disableDefaultHandling)
        {
            return new CustomResourceRequestHandler();
        }
    }

    public partial class Form1 : Form
    {        
        public Form1()
        {
            InitializeComponent();
            InitBrowser();            
        }
        private void Form1_Load(object sender,EventArgs e)
        {

        }
        public ChromiumWebBrowser browser;
        public void InitBrowser()
        {
            Cef.Initialize(new CefSettings());
            browser = new ChromiumWebBrowser("https://google.com");
            browser.RequestHandler = new CustomRequestHandler();
            this.Controls.Add(browser);
            browser.Dock = DockStyle.Fill;
        }        
    }
}

我可以使用它,但是如果我正确执行操作,请输入您的信息。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;
using CefSharp.Handler;



namespace WindowsFormsApp4
{
    public class CustomResourceRequestHandler : ResourceRequestHandler
    {


        protected override CefReturnValue OnBeforeResourceLoad(IWebBrowser chromiumWebBrowser,IRequestCallback callback)
        {
            if (request.Url.StartsWith("mailto:"))
            {
                System.Diagnostics.Process.Start(request.Url);
                return CefReturnValue.Cancel;
            }
            return CefReturnValue.Continue;
        }

    }

    public class CustomRequestHandler : RequestHandler
    {
        protected override IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser,EventArgs e)
        {

        }
        public ChromiumWebBrowser browser;
        public void InitBrowser()
        {
            Cef.Initialize(new CefSettings());
            browser = new ChromiumWebBrowser("http://www.google.com");
            browser.RequestHandler = new CustomRequestHandler();
            this.Controls.Add(browser);
            browser.Dock = DockStyle.Fill;
        }        
    }
}
haofanawori 回答:使用CefSharp C#将邮件重定向到链接

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3134938.html

大家都在问