程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#WebBrowrse阻攔下載對話框

C#WebBrowrse阻攔下載對話框

編輯:C#入門知識

C#WebBrowrse阻攔下載對話框。本站提示廣大學習愛好者:(C#WebBrowrse阻攔下載對話框)文章只能為提供參考,不一定能成為您想要的結果。以下是C#WebBrowrse阻攔下載對話框正文


    為了完成這個功用,可算是折騰不少時間,網上搜素出來的後果根本都是如何屏蔽正告對話框。後來討教一個技術大牛(順序員之窗的次要作者Starts_2000),他用C++完成了,他嘗試了下C#也沒有處理,就忙其他的去,大牛時間普通都比擬珍貴,後來我就將就用那個C++靜態庫,那個時分我測試環境是 win7 64位 +vs2013,後來零碎環境變化成 win10 +vs2015,忽然就不好使了,趕忙重新編譯C++源碼,各種錯誤,覺得怎樣這麼不波動。 怎樣辦?總不能再讓他人幫助,下次環境變化了持續問他人?  這就要求自己必需用C#完成, 好了 上面進入主題。

WebBrowser懇求一個地址,比方http://download.easyicon.net/png/568613/48/ 會呈現下圖:

01

需求到達的目的:在彈出下面對話框之前能參加自己的代碼停止控制。如下圖

02

 

為了完成這個功用網上找了些材料,發現有些協助的地址:

http://stackoverflow.com/questions/13362922/windows-forms-webbrowswer-control-with-idownloadmanager

 

遇到相反問題的有上面2個鏈接:

https://q.cnblogs.com/q/57083/

http://stackoverflow.com/questions/32513190/dllimportregistercallbackpbc-url-and-bindmonikertostreampmk-pbc

 

看完這些文檔後,我遇到和他們一樣的困擾.次要有上面幾個問題

1 找不到完好代碼示例,只能東拼西湊的看看

2 在Download辦法外面斷點不出來,當然也就沒有阻攔的效果.

3 希望不是一切的下載都需求阻攔,有些用IE自帶的功用停止下載。

第一個問題: 自己搜索些代碼加以整理

第二個問題: 我發現次要是自己事先接口定義出錯

[ComImport, Guid("6d5140c1-7436-11ce-8034-00aa006009fa"), 
InterfaceType(ComInterfaceType.InterfaceIsIUnknown), ComVisible(false)]
    public interface IServiceProvider
    {
        [return: MarshalAs(UnmanagedType.I4)]
        [PreserveSig]
        int QueryService(ref Guid guidService,   ref Guid riid,  
                         /*[MarshalAs(UnmanagedType.Interface)]*/   IntPtr ppvObject);
    }

刪除正文局部即可,假如還有不進斷點的請參照完好源代碼。

第三問題 需求零碎API,也有不少人不知道怎樣定義這個API,比方下面鏈接就有個老外再問, API定義如下:

internal class API
    {
        [DllImport("ole32.dll")]
        internal static extern int CreateBindCtx(uint reserved, out IBindCtx ppbc);

        [DllImport("ole32.dll")]
        internal static extern int RegisterCallback(IBindCtx pbc, Uri url);

        [DllImport("ole32.dll")]
        internal static extern int BindMonikerToStream(IMoniker pmk, IBindCtx ppbc);
    }
 測試發現 只需求調用 第二個或許第三個API即可完成IE自帶下載。
 
局部代碼如下:
        private void DownLoadDemo()
        {
            try
            {
                DownLoadWebBrowser DownLoadWebBrowser = new DownLoadWebBrowser();
                DownLoadWebBrowser.FileDownloading += DownLoadWebBrowser_FileDownloading;
                DownLoadWebBrowser.Navigate(downLoadUrl);
            }
            catch (Exception)
            {
                throw;
            }
        }
        private void DownLoadWebBrowser_FileDownloading(object sender, FileDownloadEventArgs e)
        {
            string info = string.Format("下載地址{0},能否持續", e.Url.ToString());
            bool downLoad = MessageBox.Show(info, "請選擇", MessageBoxButtons.YesNo,
                MessageBoxIcon.Question) == DialogResult.No;
            e.Cancel = downLoad;
        } 

完好代碼下載。

源代碼除了阻攔下載,其他的一些功用(屏蔽對話框、JS和C#代碼相互調用,以及IE版本等等)也附帶上了,次要是之前寫的,就懶的去掉。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved