当我点击网站上的下载按钮并立即下载链接时,我需要调用事件。我知道它如何与WebBrowser一起使用:
private void WebBrowser_Navigating(object sender, NavigatingCancelEventArgs e)
{
string url = e.Uri.ToString();
if (url.Contains("https://accounts.google.com/AccountChooser")
{
_userAgentController.UserAgentRefresh();
}
if (url.Contains("get:")) //specific form of download link
{
DownloadModel(url);
}
}
但是我应该在CefSharp库中使用它并使用使用下载URL的DownloadModel()方法。
我尝试过LoadingChanged和FrameLoadEnd事件,但我无法获得所需的链接。
答案 0 :(得分:1)
看起来CefSharp为您提供了一个具有回调下载功能的界面。
以下是一个例子:
public class DownloadHandler : IDownloadHandler
{
public event EventHandler<DownloadItem> OnBeforeDownloadFired;
public event EventHandler<DownloadItem> OnDownloadUpdatedFired;
public void OnBeforeDownload(IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)
{
var handler = OnBeforeDownloadFired;
if (handler != null)
{
handler(this, downloadItem);
}
if (!callback.IsDisposed)
{
using (callback)
{
callback.Continue(downloadItem.SuggestedFileName, showDialog: true);
}
}
}
public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
{
var handler = OnDownloadUpdatedFired;
if (handler != null)
{
handler(this, downloadItem);
}
}
}
从此处开始,下载完成后,您将拥有DownloadItem
对象,该对象提供您需要的完整路径: