IDownloadHandlerインタフェースを実現するために、ポップアップボックス保存のファイルをダウンロードしCEfSharp

前のセクションでは、CefSharpは、C#に統合する方法について話しましたが、統合されたWebインターフェイスはChromiumWebBrowserにリンクしますが、ほんの少し行うには、Webインターフェイス上で添付ファイル機能をダウンロードします。

長い時間のためのBaiduのみExcampleとソースコードの公式サイトを参照して、取得し、最終的に取得するために死んだラットブラインド猫をヒットしませんでしたが、我々はインターフェイスを実装する必要があります。

公共RevenueContractFrmWeb(アダプタアダプタ)
        { 
            アダプタ = アダプタ。
            InitializeComponent(); 
            // 文字列のURL = GlobalDefination.Urlex + "/go-logistics-client/inAndOutPages/incomeContract/contractMg/ContractMain.jsp"。 
            // webBrowser.Navigate(URL + + adapter.SessionId "セッションID =?"); 

            文字列のURL = GlobalDefination.Urlex + " /go-logistics-client/inAndOutPages/incomeContract/contractMg/ContractMain.jsp?sessionId= " + adapter.SessionId。
            CefSharp.WinForms.ChromiumWebBrowser WB = 新しいCefSharp.WinForms.ChromiumWebBrowser(URL);
            wb.Dock  =DockStyle.Fill;
            この.Controls.Add(WB)。
            wb.DownloadHandlerは = 新しいMyDownloadHandlerを(); 
        }

実装クラス

 内部 クラスMyDownloadHandler:IDownloadHandler 
        { 

            パブリック ブール OnBeforeDownload(CefSharp.DownloadItem downloadItem、アウト  downloadPath、アウト BOOL にShowDialog)
            { 
                downloadPath = "" ; 
                ShowDialogメソッドは = ;
                返す ; 
            } 
            パブリック ブールOnDownloadUpdated(CefSharp.DownloadItem downloadItem)
            { 
                戻り 
            }
        }

 

 

出典:https://blog.csdn.net/weiyongliang_813/article/details/50575706

================================================== ================================================== =

ポップアップボックスIDownloadHandler、Winfrom埋め込まれたウェブページのエクスポート機能応答保存ファイルをダウンロードCEfSharp

 使用してCefSharpを。

 公共ChromiumWebBrowserブラウザ。
 NativeAppJsObjBasic NativeAppJsObj; 

// 窗体部分
プライベート 無効 FrmWebView_Load(オブジェクト送信者、EventArgsの電子)
        { 
 
            ブラウザ = 新しいChromiumWebBrowser(URL); 

            panel1.Controls.Add(ブラウザ); 
            browser.Dock = DockStyle.Fill。
            NativeAppJsObj = 新しいNativeAppJsObjBasic(); 
            browser.RegisterJsObject(" NativeAppJsObj "、NativeAppJsObj、真の);
            NativeAppJsObj.OnSessionExpired + = NativeAppJsObj_OnSessionExpired。
            browser.IsBrowserInitializedChanged + = Browser_IsBrowserInitializedChanged。
            browser.DownloadHandlerは = 新しいMyDownLoadFileを(); 

        } 


    ///  <要約> 
    /// 响应下载文件兼容
     ///  </要約> 
    パブリック クラスMyDownLoadFile:IDownloadHandler 
    { 
        公共 OnBeforeDownload(IBrowserブラウザ、DownloadItem downloadItem、IBeforeDownloadCallbackコールバック)
        { 
            場合(!callback.IsDisposed)
            { 
                使用(コールバック)
                { 
                    callback.Continue(@ " C:\ Users \ユーザー" + 
                            System.Security.Principal.WindowsIdentity.GetCurrent()の名前。 +
                             @" \ダウンロード\ " + 
                            downloadItem.SuggestedFileName、
                        ShowDialogの:); 
                } 
            } 
        } 

        公共 ボイドOnDownloadUpdated(IBrowserブラウザ、DownloadItem downloadItem、IDownloadItemCallbackコールバック)
        { 
            //downloadItem.IsCancelled = falseは、
        }
         パブリック ブールOnDownloadUpdated(CefSharp.DownloadItem downloadItem)
        { 
            戻り 
        } 
    }

 

 

出典:https://blog.csdn.net/qq_41715982/article/details/97284255

================================================== ================================================== =

あなたは、ダウンロードに使用されているIEをダウンロードしたい場合は、以下の方法を参照することができます:

公共のボイドOnBeforeDownload(IBrowserブラウザ、DownloadItem downloadItem、IBeforeDownloadCallbackコールバック)
{
      WEBブラウザIE =新しいWebBrowserコントロール();
      ie.Navigate(downloadItem.Url)。
}

 

オリジナルリンク:https://blog.csdn.net/CFY530/article/details/81145875

================================================== ================================================== =

ダウンロードしたファイルの問題を保存することはできません遭遇最近CEFsharp側面をやっています。レコードは解決しました。主に適用
IDownloadHandlerが
メソッド呼び出し:
; web.MenuHandler =新しい新しいMyWebContextMenu()
web.DownloadHandler =新しい新しいMyDownLoadFileを();

IDownloadHandler.csファイル

    ///  <要約> 
    /// 下载文件
     ///  </要約> 
    パブリック クラスMyDownLoadFile:IDownloadHandler 
    { 
        公共 OnBeforeDownload(IBrowserブラウザ、DownloadItem downloadItem、IBeforeDownloadCallbackコールバック)
        { 
            場合(!callback.IsDisposed)
            { 
                使用して(コールバック)
                { 
                    callback.Continue(@」C:\ Users \ユーザー" + 
                            System.Security.Principal.WindowsIdentity.GetCurrent()の名前。 +
                             @" \ダウンロード\ + 
                            downloadItem.SuggestedFileName、
                        にShowDialog:); 
                } 
            } 
        } 
 
        公共 ボイドOnDownloadUpdated(IBrowserブラウザ、DownloadItem downloadItem、IDownloadItemCallbackコールバック)
        { 
            // downloadItem.IsCancelled = FALSE; 
        }
         パブリック ブールはOnDownloadUpdated(CefSharp.DownloadItem downloadItem)
        { 
            戻り 
        } 
    }

 

 

出典:https://blog.csdn.net/u010919083/article/details/78342503

================================================== ================================================== =

CEFのダウンロードは非常に簡単に拡張することで、それは一時停止し、継続し、キャンセルして他の操作にダウンロードされるファイルなど、豊富なインタフェースおよび制御機能を提供します。そして、CEFはまた、あなたも名前を付けて保存]ダイアログボックスを達成するために所有する必要がないことが必要ではない場合、私たちは、デフォルトの名前を付けて保存]ダイアログボックスを実装するのに役立ちます。私たちは二つのインターフェースのために(cefclientプロジェクトを使用して、たとえば)CEFを見て次のダウンロード機能を提供します

継承CefDownloadHandler

すべてが開始する前に、まず最初に、あなたはCefDownloadHandler ClientHandlerのカテゴリを継承するとします。

このクラスは、それぞれ、二つのインターフェースを提供し、OnBeforeDownloadそしてOnDownloadUpdated前者はダウンロードがインタフェースがコールバックで開始されます前に、あなたのニーズに応じてインターフェースにいくつかの前処理操作を実装する必要があるタスクです。後者は、タスク、ステータス、および制御機能の進行状況を含むダウンロード処理コールバック・インターフェースのタスクです。以下に詳細に二つのインターフェースを記述する。

OnBeforeDownloadインタフェース

virtual void OnBeforeDownload(
      CefRefPtr<CefBrowser> browser,
      CefRefPtr<CefDownloadItem> download_item,
      const CefString& suggested_name,
      CefRefPtr<CefBeforeDownloadCallback> callback) = 0;

ファイルがダウンロードを開始する前に、インタフェースに上記の導入が呼び出されます、

  • パラメータは、現在のブラウザインスタンスを示し、
  • download_itemは、そのメンバ関数を通じて、ダウンロードタスクのステータス情報が含まれているIsInProgressIsCompleteIsCanceledファイルの現在の状態を決定し、他の方法が、一見これらを判断するためにダウンロードする前に、ファイルには意味がありません。
  • suggested_nameが示唆名として使用すると、セットの名前を保存する電流CEFの良いアドバイス、最後のファイル名のファイルパスインターセプト一般意志を表しています。
  • あなたは、コールバックメソッドは、続行を呼び出したときに、タスクは、ダウンロードを開始し、最初のコールバックパラメータこのコールバックパラメータがより重要である、download_path名前は、ファイルを保存することである場合に、第2、第二引数には、[保存]ダイアログボックスがポップアップ表示されているかどうかを示しますパラメータがtrueに設定されている場合、CEFは、ダイアログ保存するには、保存ファイルをポップアップ表示するために私たちを助けます。あなたがfalseに設定されている場合、ダイアログセーブセットのパラメータ最初のパスにファイルを保存自動的にポップアップしません。

このインタフェースを通じて、我々はそのようなあなたがインターフェイスでのダウンロードタスクを作成したい場合など、いくつかの前処理タスクを行うことができます、あなたがすることができdownload_item、タスクが取得パラメータを開始することについてです表すためにUIにID(getIDメソッドを)タスク。次に、タスクIDによるインターフェースの内容を更新するために、次のダウンロードタスクステータス更新機能を入力し、。

OnDownloadUpdatedインタフェース

インタフェースは、タスクでのコールバックのダウンロードプロセスですが、私がテストした限り、OnBeforeDownloadインタフェースを優先させて頂きます。このインターフェイスが呼び出されるように、特定の理由は、まだ非常に理解していないが、無害が、ここではそれだけでタスク、ステータスおよび制御機能の進行に関係しています。

virtual void OnDownloadUpdated(CefRefPtr<CefBrowser> browser,
                                 CefRefPtr<CefDownloadItem> download_item,
                                 CefRefPtr<CefDownloadItemCallback> callback) {}
  • この小さな導入ブラウザ
  • 前述したようにDownload_item、タスクの進捗状況は、あなたがCefDownloadItemインタフェースがどのような制御機能を見て持って見ることができ、ダウンロードされているように、ステータス、ダウンロード速度を取得し、することができます。
  • ここでのコールバック・インターフェース上のコールバックとコールバックは同じではありません、このコールバックは、制御タスクを一時停止継続し、停止することができ、インターフェイスが来たとき、あなたは、Idが結合コールバックの現在のタスクとタスクのリストを維持することができますポーズ制御メッセージの使命、コールバックは、タスクを一時停止するコールバックメソッドのポーズを呼び出し、リストにタスクIDで見つけることができます。もちろん、完了または時間をキャンセルされたタスクの一覧からこれらのコールバックとタスクIdとの結合関係を削除することを忘れないでください。

概要

CEFが提供するダウンロード・インタフェース制御機能は、まだ非常に豊富であり、さらにはダウンロード速度は、あなたが直接使用することができ、計算を完了助けるために進行中です。あなたはパーソナライズされたディスプレイと、いくつかのUIを実現したい場合には、すべて行うことができます。あなたは、自分自身でそれを試してみてください任意の技術的な質問は、以下の議論喜ば体験することができます。

 

出典:https://www.mycode.net.cn/language/cpp/2627.html

================================================== ================================================== =

 

おすすめ

転載: www.cnblogs.com/mq0036/p/11932228.html