澳门威利斯人_威利斯人娱乐「手机版」

来自 威利斯人娱乐 2019-05-06 12:48 的文章
当前位置: 澳门威利斯人 > 威利斯人娱乐 > 正文

WebBrowrse拦截下载对话框

先是个难点: 自个儿索求些代码加以整理

C#WebBrowrse拦截下载对话框,

        为了落到实处那几个效果,可到头来折腾不少时间,英特网搜素出来的结果基本都是怎么屏蔽警告对话框。后来请教三个技术大咖(技师之窗的最首要小编Starts_两千),他用C 达成了,他尝试了下C#也一贯不消除,就忙其余的去,大咖时间一般都相比较高雅,后来本人就将就用分外C 动态库,这一年笔者测试情状是 win7 63个人 vs20一3,后来系统情形变化成 win十 vs20壹五,突然就不好使了,赶紧重新编写翻译C 源码,各类错误,认为怎么如此不安静。 怎么做?总无法再让别人扶助,下次情状转换了持续问人家?  那将要求自身必须用C#落到实处, 好了 下边进入正题。

WebBrowser请求一个地方,举例 会出现下图:

必要完毕的指标:在弹出上边对话框从前能插手自个儿的代码实行支配。如下图

 

为了达成那一个意义网络找了些资料,开采有点拉扯的地址:

 

凌驾一样难点的有上边二个链接:

 

看完那个文书档案后,笔者遇见和她们同样的苦恼.重要有下边多少个难题

一 找不到总体代码示例,只能东拼西凑的看看

贰 在Download方法里面断点不进去,当然也就未有阻拦的效果.

三 希望不是负有的下载都亟需拦截,有个别用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版本等等)也有意无意上了,重借使后边写的,就懒的解决。

为了落到实处那么些效应,可算是折腾不少光阴,网络搜素出来的结果基本都以怎么样屏蔽警告对话框。后来请教三个技...

 

看完那个文书档案后,小编遇见和她们一致的苦恼.首要有下边多少个难点

其3标题须要系统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版本等等)也顺带上了,首即使前面写的,就懒的解除。

 

三 希望不是有所的下载都必要拦截,有些用IE自带的效益举办下载。

本文由澳门威利斯人发布于威利斯人娱乐,转载请注明出处:WebBrowrse拦截下载对话框

关键词: 澳门威利斯人