2017-10-08 3 views
-1

私は、サイト上のダウンロードボタンをクリックしてすぐにリンクをダウンロードするときにイベントを呼び出す必要があります。私はそれがWebブラウザーでどのように動作するかを知っている:CepSharpライブラリにアナログのイベントWebBrowser.Navigatingがありますか?

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イベントを試しましたが、必要なリンクを取得できません。

お返事ありがとうございます。

答えて

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オブジェクトを、持っています:

は、ここでは、クラス構造を参照してください。 https://github.com/cefsharp/CefSharp/blob/0a2693fa9ba7273ada5df363bf78e85b5a1a342b/CefSharp/DownloadItem.cs

+0

ありがとうございました。私はDownloadHandler.csを使用し、ダウンロードリンクを取得するためにOnBeforeDownloadFiredだけを使用してダウンロードを実行しないため、メソッドを呼び出すことができます –

関連する問題