Tag: webbrowser control

在Internet Explorer控件中禁用上下文菜单

如何禁用IE WebBrowser控件中的上下文菜单,而是在C#中执行右键单击事件的自定义处理?

如何使用WebBrowser控件捕获JSON响应

我使用WebBrowser.Navigate()到网站的JSON响应URL。 一切顺利,包括被调用的webBrowser1_DocumentCompleted()事件处理程序。 但是,我没有获得可以以编程方式处理的“安静”响应(例如webBrowser1.Document ),而是收到“文件下载”对话框: 如果我单击“ Save按钮并稍后检查该文件,它将包含我期望的JSON响应。 但我希望程序在代码中捕获此JSON响应,而不显示该对话框并且必须单击“ Save按钮。 如何使用WebBrowser控件捕获JSON响应? 注意:在发布这个问题之前,我搜索了所有我发现的是一个类似的问题,接受的答案并没有真正解释如何做到这一点(我已经处理了webBrowser1_DocumentCompleted )。 有小费吗? 更新:到目前为止,我的所有搜索都没有使用WebBrowser控件来获取JSON响应。 也许我接近这完全错了? 我错过了什么?

使用自定义IDownloadManager从WebBrowser控件访问AccessViolationException

我的.NET应用程序托管了一个WebBrowser控件,并且我附加了一个自定义下载管理器。 除了具有以下两个HTTP标头的请求之外,一切似乎都能正常工作: Content-Type: application/octet-stream Content-Disposition: attachment; filename=blahblahblah 更改或省略内容类型标题,一切正常; 它只是具有问题的application / octet-stream。 删除内容处置标头,不使用下载管理器。 有趣的是,这个问题只发生在32位机器上(我测试过XP和Win 7 32位.Win 7/8 64位不会崩溃)。 application/octet-stream什么特别之处? 如果它有帮助,这里有大量代码注册自定义下载管理器。 它的灵感来自于这个问题和答案: Windows Forms Webbrowswer控件与IDownloadManager 在我的类中,派生自WebBrowser : protected override WebBrowserSiteBase CreateWebBrowserSiteBase() { var site = new DownloadWebBrowserSite(this); return site; } 在DownloadWebBrowserSite : DownloadManager _manager = new DownloadManager(); public int QueryService(ref Guid guidService, ref Guid riid, out IntPtr […]

自定义WebBrowser(winforms)代码上的致命错误

在CustomWebBrowser(winforms)代码上获得致命exception。 “ 运行时遇到致命错误。 错误的地址是0x6c9a60c6,在线程0xf94上。 错误代码是0xc0000005。 此错误可能是CLR中的错误,也可能是用户代码的不安全或不可validation部分中的错误。 此错误的常见来源包括COM-interop或PInvoke的用户封送错误,这可能会破坏堆栈。 ” 这在安装了.Net Framework 4.5的计算机上运行良好,但不适用于具有.Net framework 4.0的计算机 // constructor public AutoCompleteWebBrowserSite(WebBrowser host) : base(host) { // get the CCW object for this _unkOuter = Marshal.GetIUnknownForObject(this); Marshal.AddRef(_unkOuter); try { // aggregate the CCW object with the helper Inner object _inner = new AutoCompleteHelper(this); _unkInnerAggregated = Marshal.CreateAggregatedObject(_unkOuter, _inner); // obtain private […]

WebBrowser控件和Windows 10问题(导航已取消)

我正在尝试在新的STA线程上运行包含表单的WebBrowser。 代码在Windows 7上按预期运行,但在Windows 10上,导航会自动取消。 我尝试将每个区域安全设置从Internet选项设置为最小,但没有任何更改。 导航到网页已取消 区域:我的电脑| 保护模式:关闭res://ieframe.dll/navcancl.htm#https://google.com/ 此页面无法显示 区域:我的电脑| 保护模式:关闭res://ieframe.dll/dnserrordiagoff.htm#https://google.com/ 有什么建议? private void button1_Click(object sender, EventArgs e) { ServicePointManager.DefaultConnectionLimit = 10; var thread = new Thread(ShowFormWebBrowser) {IsBackground = true}; thread.SetApartmentState(ApartmentState.STA); thread.Start(); } public static void ShowFormWebBrowser() { using (var dlg = new FormWebBrowser()) { if (dlg.ShowDialog() == DialogResult.OK) { } } }

什么是最好的WebBrowser控件,每个实例允许一个代理?

我正在制作一个multithreading[worker]应用程序。 每个线程都应该拥有自己的非GUI WebBrowser,它可以导航到网页并将数据写入字段并单击按钮。 我还需要每个WebBrowser拥有自己的代理。 我尝试了经典的Windows.Forms.WebBrowser,但我陷入了代理部分,因为它依赖于IE全局设置,这在我的情况下是行不通的。 欢迎任何建议。 注意:我尝试通过HttpWebRequest / Response执行此操作,但它永远不会工作,因为要传递给页面的数据包含一个名为[ab_test_data]的字段,该字段从javascript代码获取其值,根据AB测试计算值,我不知道甚至完全明白。 所以WebBrowser将是我最好的解决方案,除非有人能告诉我如何将计算ab_test_data的Javascript代码转换为C#代码。 我尝试访问的页面使用的算法非常复杂。 note2:ab_test_data值取决于无法在httpWebRequest / Response上模拟的Window.Event和Timestamp。 note3:我试过Gecko,但它不会让我对webPage做任何事情,除非在表格上绘制GeckoWebBrowser(我不想要)。 欢迎任何解决方案。 编辑:如果您知道任何WebBrowser,我想用任何不同的语言(也许Java),我想知道。 提前致谢。

C#webBrowser控制如何在鼠标指针下获取数据

嗨如果我在WebBrowser控件中打开一个站点,无论如何都要编写一个函数来获取鼠标指针下的数据? 所以我想做什么,但不知道怎么做! 加载一个网站(大多数任何网站)用户将鼠标放在页面上的某些数据上并按下控件点击,这样代码就会计算出光标下面的HTML标签并读取它的内部值。 希望有道理! 事实上,就像IE开发人员工具中的指针控件一样,它甚至设法围绕选择的方框放置一个框… 我只是在寻找没有图片的文字…… 谢谢你的帮助…

Web浏览器控件在IE上调用表单提交方法打开下一页

我正在尝试创建自动表单提交应用程序。 我需要订阅不同的网站。 它涉及提交两份表格。 我正在使用.Net网络浏览器控件。 当我填写第一个表单并调用表单的提交方法或单击按钮的方法时,两者都打开IE中的下一页。 (在窗口浏览器中,第一个表单在按下提交按钮的新选项卡中打开下一个表单) HtmlElementCollection inputs = form.GetElementsByTagName(“input”); foreach (HtmlElement input in inputs) { if (input.GetAttribute(“type”) == “text”) { inputname = input.GetAttribute(“name”); input.SetAttribute(“value”, email); } else if (input.GetAttribute(“type”) == “submit”) { //input.InvokeMember(“click”); form.InvokeMember(“submit”); break; } } 所以问题是它不会在控件中打开下一个表单而是在IE中打开它。 我怎样才能使它打开控件中的下一个表单。 任何帮助,将不胜感激。 谢谢

如何强制WebBrowser控件使用新会话或清除会话

在我的应用程序中,用户将通过单击菜单打开多个选项卡。 每个选项卡都是动态创建的,包含用于加载URL的webbrowser控件 。 每个URL指向同一个服务器,而某些URL没有访问权限,因此Resource not have access收到Resource not have access错误。 现在,问题是,例如 – 如果用户直接点击加载了webbrowser URL的Menu3和相关选项卡,然后按照下一步,URL包含其他弹出链接,那么它可以工作并能够弹出URL。 现在,用户点击没有访问权限的Menu5 ,获取此错误Resource not have access (从服务器拒绝). Its fine. NOw, again URL reach to ). Its fine. NOw, again URL reach to ). Its fine. NOw, again URL reach to Menu3 and try to open sub link to popup dialog then it […]

在iframe和Javascript完成后完成WebBrowser控制文档

我需要捕获生成的HTML的图像。 我正在使用Alex Filipovici的优秀解决方案: 将HTML字符串转换为图像 。 除非我正在尝试加载具有使用某些Javascript加载的iframe的页面,否则它的效果很好。 static int width = 1024; static int height = 768; public static void Capture() { var html = @“ “; StartBrowser(HTML); } private static void StartBrowser(string source) { var th = new Thread(()=> { var webBrowser = new WebBrowser(); webBrowser.Width = width; webBrowser.Height = height; webBrowser.ScrollBarsEnabled = false; webBrowser.DocumentCompleted […]