GeckoFx v45浏览器控件实现文件下载出现异常的解决办法

GeckoFX:将Mozilla Firefox的Gecko渲染引擎集成到.NET应用的开源组件 在本章,我们将为读者揭开GeckoFX项目的神秘面纱,介绍其背景、定位以及它在现代软件开发中的重要性。我们将简要回顾GeckoFX的起源,它如何成为连接Mozilla Firefox浏览器核心与.NET环境的桥梁。GeckoFX是一个开源项目,基于Mozilla的Gecko渲染引擎,它允许开发者在.NET应用程序中利用Gecko提供的强大的网页渲染功能。作为开发者社区的一员,理解GeckoFX不仅可以帮助您扩展开发技能,还能让您参与到这一活跃的开源项目中,与其他开发者协作,共同提升产品的质量和性能。 阅读详情

最近用到了GeckoFx的下载功能, 从网络上找到了一些代码复制运行, 发现有时候会报COM调用错误的异常, 经查找发现是GeckoFx的接口发生更新了, 之前的接口已经弃用, 下面贴上经测试可用代码:

首先先 注册下载事件:

Gecko.LauncherDialog.Download += this.LauncherDialog_Download;

然后实现下载事件方法:

private void LauncherDialog_Download(Object sender, Gecko.LauncherDialogEvent e)
{
	uint flags = (uint)nsIWebBrowserPersistConsts.PERSIST_FLAGS_NO_CONVERSION |
		(uint)nsIWebBrowserPersistConsts.PERSIST_FLAGS_REPLACE_EXISTING_FILES |
		(uint)nsIWebBrowserPersistConsts.PERSIST_FLAGS_BYPASS_CACHE;

	SaveFileDialog dlg = new SaveFileDialog
	{
		FileName = e.Filename
	};
	if (dlg.ShowDialog(this.ParentForm) == DialogResult.OK)
	{
		nsIURI source = IOService.CreateNsIUri(e.Url);
		nsIURI dest = IOService.CreateNsIUri(new Uri(dlg.FileName).AbsoluteUri);
		nsAStringBase t = new nsAString(Path.GetFileName(dlg.FileName));

		nsIWebBrowserPersist persist = Xpcom.CreateInstance<nsIWebBrowserPersist>("@mozilla.org/embedding/browser/nsWebBrowserPersist;1");

		nsITransfer nst = Xpcom.CreateInstance<nsITransfer>("@mozilla.org/transfer;1");
		nst.Init(source, dest, t, e.Mime, 0, null, persist, false);

		if (nst != null)
		{
			persist.SetPersistFlagsAttribute(flags);
			persist.SetProgressListenerAttribute(nst);
			try
			{
				persist.SaveURI(source, null, null, (uint)Gecko.nsIHttpChannelConsts.REFERRER_POLICY_NO_REFERRER, null, null, (nsISupports)dest, null);
				GuiHelper.MsgBox($"文件[{Path.GetFileName(dlg.FileName)}]已下载成功!");
			}
			catch (Exception ex)
			{
				GuiHelper.MsgBox($"下载失败: {ex.Message}.");
			}
			return;
		}
		GuiHelper.MsgBox("下载失败: 服务器无响应...");
	}
}

与老版本代码的区别是多了下面两行代码:

nsITransfer nst = Xpcom.CreateInstance<nsITransfer>("@mozilla.org/transfer;1");
nst.Init(source, dest, t, e.Mime, 0, null, persist, false);

如果没有这两行代码就会有很大几率出现异常...

GeckoFX C# Firfox v45.0-0.31 最新版示例 GeckoFX 45 本来需要.net45 我改为.net2.0 希望喜欢的人需要。绝对不骗人,骗人是小狗。架构复杂修改麻烦,各位体谅 立即下载

相关推荐

GeckoFX-开源

GeckoFX是用于将Gecko(Mozilla Firefox)呈现引擎嵌入到.NET应用程序中的开源组件。

Geckofx使用心得(一)

写这篇的目的很简单,从萌新到熟悉,我花了2个月时间,甚至花钱买过一个网站的垃圾demo,深受其烦,希望可以让入坑Geckofx 的新手少走一些弯路, 做WebBrowser目前有3中方案, 1、基于 IE 的WebBrowser控件 2、Geckofx 3、CefSharp 如果你只是做最简单基础的功能,就直接用自带的WebBrowser控件既可(比如简单的访问、取值) 如果你要做的...

jwb7832007的博客 1万+

Geckofx基于火狐内核的浏览器

集成了火狐内核的浏览器控件,压缩包是一个完整的解决方案demo,可结合爬虫技术使用,下载后觉得不错的希望给个好评,谢谢喽

VS2017 Winform使用Geckofx控件出现未能加载Microsoft.Build.Tasks.v15.0.dll的问题解决办法

今天想使用Geckofx控件替代Winform自带浏览器控件, 通过NUGet下载了该控件,但是出现报错 未能从程序集“E:\Apply\Work\Visual Studio2017\MSBuild\15.0\Bin\Microsoft.Build.Tasks.v15.0.dll”加载任务工厂“CodeTaskFactory”。未能加载文件或程序集“file:///E:\Apply\Work\V...

路过的Blog 3162

geckofx 基于gecko的webbrowser替代控件

geckofx是基于gecko的(firefox)替代webbrowser最好的开源控件

geckofx加载的网页可下载附件的方法

现在的geckofx版本都不支持直接在加载的网页中下载附件,这里有一个方法可以实现附件的下载

GeckoFX 在winform中的简单应用

★ 背景 近日恰逢双十一,瞅了瞅自己干瘪的钱包,没忍心入手期待已久的 macPro,只好在虚拟机里玩一下 mac好了,等以后钱包傲气的时候再来个真实的。 安装环境: windows10 VMWare14.2 2018-7-28 小嘚瑟补充:唧唧歪歪大半年,一夜回到解放前,终于剁手整了个真机,可以折腾一下了… --------------------- ...

1740

geckofx 45.0 C# FireFox

C# .NET下WebBrowser的一个BUG以及其替代品——geckofx。需要高版本VS和.Net

.NET gecko内核浏览器开发 ——GeckoFX介绍

众所周知 mozilla 只提供C/C++版本的gecko内核 嗯 人家mozilla 就是这么着说的就是没有.net的 人家也没有义务要提供 废话说道这 其实Gecko与Webkit、Trident最为世界上使用最多的三大浏览器内核来说 在最近的一个项目(WPF项目)中经过比较决定使用gecko的内核 说说我选择使用gecko内核的优势: 其一 gecko内核开发的浏览器 例如FireF...

weixin_30892037的博客 1016

GeckoFx 最新版本 完美支持HTML5 C# demo

简单易懂的一个GeckoFx demo 。 使用vs2012

GeckoFx 33.09版本源码加对应版本XULrunner

包含GeckoFx 33.09版本源码加对应版本XULrunner,提供完整的dll文件,直接可用

GeckoFX组件与C#交互

基于GeckoFX 60的组件。 1. 调用页面的JS方法,这个比较简单, 网上都有很多例子。 //调用JavaScript函数,并获取返回值; string _result = string.Empty; using (AutoJSContext context = new AutoJSContext(base.Window)) { //将js方法和参数,拼合成一个字符串。 传回f...

浮云 3309

【黑马-产品经理入门基础课笔记】01.认识产品经理

问题定义 ==> 可行性研究 ==> 需求分析。

2401_88466092的博客 1841

Geckofx拦截http response、http响应内容、http返回内容、

找了整整两天,在大海捞针之后,终于在上古代码中找到了一个可用的。。。。可以用喜极而泣来形容测试有效之后的心情!!!跟cefsharp相比geckofx最大的优点就是模式更接近于IE,包括node、xml、xpath以及单独设置cookie等。但是资料、问答等实在是太古老太古老了。如果已入坑geckofx的朋友,请一定要记住,遇到问题先不用去满世界搜索,请第一时间去官网的 Issues 版块搜索关键...

jwb7832007的博客 3192

地下水热耦合模拟FEFLOW建模

2.3 依据讲解内容,练习构建地下水数值模型(例二),学会各种源汇项、边界条件、时间序列、节点参数的添加及模拟结果的导出。对于真实模型,学习如何建立概念模型、数学模型,练习模型的各种参数和源汇项输入,进行溶质运移、水热模拟。3.通过多种实践案例应用,掌握实践工作中常见项目的模型搭建及特殊问题处理方法。4.1学习水热模型抽灌模式,网格剖分、边界条件、初始温度场赋值。3.3练习模型的各种参数和源汇项输入,进行水流和溶质运移模拟。2.掌握水热耦合的模拟方法及典型项目应用问题处理。2.4根据模拟结果,

weixin_55561616的博客 964

手把手教你用DCA1000EVM解析IWR6843毫米波雷达数据(附MATLAB代码)

本文提供了一份详尽的实战指南,手把手教你使用DCA1000EVM采集并解析TI毫米波雷达IWR6843的原始数据。内容涵盖硬件连接配置、mmWave Studio参数设置、LVDS数据流结构解析,并附有核心MATLAB代码,详细演示了从原始二进制文件到距离-速度谱的信号处理全链路,帮助开发者快速掌握数据解析与处理的关键步骤。

terraform7cloud的博客 227

geckofx获取html元素,GeckoFx 最新版本 完美支持HTML5 C# demo

【实例简介】简单易懂的一个GeckoFx demo 。 使用vs2012【实例截图】【核心代码】WindowsFormsApplication1└── WindowsFormsApplication1├── WindowsFormsApplication1│ ├── app.config│ ├── bin│ │ ├── Debug│ │ │ ├── Geckofx-Co...

weixin_32897341的博客 554

【分布式系统学习】CAP原理详解

概述:互联网最重要任务莫过于海量数据处理,即大规模分布式系统,分布式是互联网的核心技术!!!如上所述,分布式系统是无法同时满足CAP三个特性的。1.Atomicity(原子性)一个事务中的所有操作,要么全部完成,要么全部不完成,不会在中间某个环节结束。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。2.Consistency(一致性)在事务开始之前和事务结束以后,数据库的完整性没有被破坏。3.Isolation(隔离性)

大龄烤红薯的博客 5024

C#下Winform下使用WebKit、Geckofx、CefSharp对比及CefSharp代码实现

C#Winform下使用WebKit、Geckofx、CefSharp对比及CefSharp代码实现使用visual studio 2021自带的NuGet程序包管理器安装CefSharp 使用winform项目实现类似浏览器开发,获取页面html元数据,并实现操作可以使用以下几个组件: 浏览器 内核 兼容 获取cookies VS自带webBrowser IE 最差 不全 WebKit Firefox 一般 不全 Geckofx Firefox 好 不全 CefSharp ch

u011930054的博客 6391

图解基站机房:AAU、RRU与BBU之间的线缆连接与规格选择

本文以图解方式详解了5G基站机房中AAU、RRU与BBU三大核心设备之间的线缆连接方案与规格选择。重点阐述了电力线(如2×10 mm²直流电缆)、数据光缆(如野战光缆与波分复用)及射频馈线的功能、选型标准与实战布线法则,为通信工程部署与维护提供清晰指导。

weixin_29306011的博客 499

开源遥感语义分割工具箱mmsegmentation基于Lovedata数据集训练模型

开源遥感语义分割工具箱mmsegmentation基于Lovedata数据集训练模型

yilvyangguang520的博客 498
上一篇: STM32F0在读写SPI Flash时的一些注意事项
下一篇: STemWin中TEXT文本控件设置行间距的一种解决办法
路过&
博客等级 码龄19年 126粉丝 91原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值