2017-10-08 1 views
-1

Ich muss Ereignis aufrufen, wenn ich auf den Download-Button auf der Website klicke und den Link sofort herunterladen. Ich weiß, wie es funktioniert mit WebBrowser:Gibt es Analog zu Ereignis WebBrowser.Navigating in CefSharp-Bibliothek?

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); 
     } 
    } 

aber ich sollte es in CefSharp Bibliothek verwenden und DownloadModel() -Methode, die Download-URL verwendet.

Ich versuchte LoadChanged und FrameLoadEnd Ereignisse, aber ich kann nicht eine benötigte Verbindung erhalten.

Vielen Dank für die Antwort im Voraus.

Antwort

1

Sieht aus wie CefSharp bietet eine Schnittstelle für Sie zu implementieren, die einen Rückruf zum Download hat.

Hier ist ein Beispiel:

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); 
      } 
     } 
    } 

Von hier aus, sobald der Download abgeschlossen ist, werden Sie das DownloadItem Objekt haben, die den vollen Weg bietet, die Sie benötigen:

Siehe Klassenstruktur hier: https://github.com/cefsharp/CefSharp/blob/0a2693fa9ba7273ada5df363bf78e85b5a1a342b/CefSharp/DownloadItem.cs

+0

Vielen Dank, ich habe DownloadHandler.cs verwendet und nur OnBeforeDownloadFired verwendet, um Download-Link zu erhalten und dann nicht herunterladen, so kann ich meine Methode aufrufen –

Verwandte Themen