Tag: 浏览器

如何检测WebBrowser控件中的javascript执行

我的C#应用​​程序中有一个WebBrowser控件。 webbrowser在用户的控制之下,也就是说,他可以加载他的计算机可以在Web上访问的任何网页(当然受到代理,主机文件等的限制)。 我需要知道并在webbrowser组件中加载的页面内有javascript调用时收到通知。 第一个例子:给出这样的链接 test 当用户点击链接时,我需要知道已经调用了函数“jsFunct”。 第二个例子:给出一个叫做的电话 window.setTimeout(“jsFunct()”, 1000); 我需要知道,在执行脚本1秒后,调用了函数jsFunct。 最好的方法是在调用函数时触发事件。 如果事件可以执行javascript代码,或者至少是参数中的函数名称,那也会很棒。 编辑: 即使问题与webbrowser组件有关,任何允许用户检测javascript激活(甚至通过js)的东西也没关系,能够注入处理javascript事件的js并将其传递给触发某些事件的wb控件它可以处理。

为什么我的IDocHostUIHandler实现被忽略

我已经从WebBrowser控件创建了派生控件,该控件具有自己的IDocHostUIHandler实现,遵循CreateWebBrowserSiteBase方法的想法: WebBrowser.WebBrowserSite类提供OLE IDocHostUIHandler接口的默认实现。 您可以提供自己的此接口实现,也可以实现任何其他WebBrowser ActiveX控件接口,以自定义控件的行为。 这个问题不起作用。 我的代码看起来如下: [PermissionSetAttribute(SecurityAction.LinkDemand, Name = “FullTrust”)] public MyBrowser(){} protected override WebBrowserSiteBase CreateWebBrowserSiteBase() { var manager = new NewWebBrowserSite(this); return manager; } protected class NewWebBrowserSite : WebBrowserSite, UnsafeNativeMethods.IDocHostUIHandler { private MyBrowser host; public NewWebBrowserSite(MyBrowser h) : base(h) { this.host = h; } int UnsafeNativeMethods.IDocHostUIHandler.ShowContextMenu(int dwID, NativeMethods.POINT pt, object pcmdtReserved, object pdispReserved) […]

C# – 如何将PostMessage嵌入WebBrowser中嵌入的Flash窗口?

我想知道是否有任何方法可以锁定Flash窗口并向其发送消息? 这里的另一个人得到了答案,他的名字是Spencer K.他的问题是: 通过C#中的WebBrowser将模拟点击发送到HTML中嵌入的flash对象 不幸的是,K先生并不是非常具体,而且他为阅读他的问题的人留下的只是他“得到了手柄,然后通过手柄迭代。” 我不太确定他的意思。 我使用EnumWindows遍历所有可见的句柄无济于事,因为它没有返回一个闪存窗口的窗口。 我希望有人能告诉我,因为这几天让我发疯了。 编辑:我刚刚决定将SWF对象插入到我的表单中并将消息发布到该句柄。

InvokeMember(“click”)webBrowser帮助

我试图通过weBrowser自动化一个网页,我试图点击的按钮没有ID只有一个值。 这是它的html代码: Accept 我不能使用GetElementById因为按钮没有ID。 如果我做 HtmlElement goButton = this.webBrowser1.Document.All[“Accept”]; goButton.InvokeMember(“click”); 我的脚本停止显示空引用错误,突出显示“goButton.InvokeMember(”click“);” 如果我做 var inputControls = (from HtmlElement element in webBrowser1.Document.GetElementsByTagName(“input”) select element).ToList(); HtmlElement submitButton = inputControls.First(x => x.Name == “Accept”); 我的脚本在“HtmlElement submitButton”行给出了一个“Sequence contains no matching element”错误,有时页面上有多个这样的Accept按钮,所以我需要能够分辨出每个按钮之间的区别或者至少能够在没有脚本破坏的情况下点击一个 任何有关这方面的帮助将不胜感激

DocumentCompleted多次触发 – 接受StackOverflow回答不起作用

我测试我的WebBrowser是否完成了: webBrowser2.DocumentCompleted += (s, e) => { // Do stuff } 我访问的网页是大量的JS文件和iframe和东西,所以我使用下面的函数来确保它是完成加载的实际页面。 webBrowser2.DocumentCompleted += (s, e) => { if (e.Url.AbsolutePath != (s as WebBrowser).Url.AbsolutePath) { return; } // Do stuff } 但是,它似乎仍然无法正常工作。 我做错了什么,或者这在语法上是否正确,我的代码中还有其他错误?

C#WebBrowser控件:清除缓存而不清除cookie

我有这个代码清除C#WebBrowser控件中的缓存。 它的问题是它也清除了cookie。 我似乎是整个互联网上唯一不想要的人。 我需要维护cookie,但要丢弃缓存。 特别感兴趣的是这一行: const int CACHEGROUP_SEARCH_ALL = 0x0; 它似乎定义了哪些“缓存组”(无论那些是什么)都被清除了,我希望cookie是一个缓存组,我可以以某种方式跳过。 然而,试图找到关于此的任何信息只会产生令人头痛的问题。 此代码最初来自MSDN文章,但它甚至没有提到cookie或缓存组。 您可以在代码顶部看到MSDN文章。 /** * Modified from code originally found here: http://support.microsoft.com/kb/326201 **/ using System; using System.Runtime.InteropServices; using System.Runtime.InteropServices.ComTypes; using System.Diagnostics; namespace Goop { // Class for deleting the cache. public static class WebBrowserHelper { #region Definitions/DLL Imports // For PInvoke: Contains information about […]

禁止WebBrowser控件中的“保存/打开”对话框

我有一个WebBrowser控件,它会自动将我登录到一个网站并尝试自动下载CSV数据。 一切都运行正常,除了当它试图下载CSV数据时,它会弹出一个对话框,询问我是要保存文件还是打开它(就像在IE中一样)。 我要做的是自动将CSV文件下载到我选择的文件中(或者更好,将CSV文件直接保存到字符串变量中)。 我似乎无法弄清楚如何压制对话框并自动捕获下载。 我搜索并找到了一些解决方案,然而,它们对我不起作用,因为: 1)我现在正在使用GUI。 所有这些都是在一个类中完成的(因此,诸如SendKeys之类的方法不是一个可行的解决方案) 2)下载来自安全站点并需要身份validation。 WebBrowser控件为我处理所有这些,但如果我使用WebRequest和WebResponse尝试捕获下载,我将不再进行身份validation。 我正在使用C#。 任何帮助,将不胜感激。

C#:将CSS注入MSHTML实例的最佳方法是什么?

我正在尝试将一些其他HTML附带的CSS注入到C#托管的WebBrowser控件中。 我试图通过底层的MSHTML(DomDocument属性)控件来执行此操作,因为此代码用作完整IE8 BHO的各​​种原型。 问题是,虽然我可以注入HTML(通过mydomdocument.body.insertAdjacentHTML)和Javascript(通过mydomdocument.parentWindow.execScript),但它完全拒绝我的CSS代码。 如果我在注入后将包含我要插入的HTML的字符串与目标页面源进行比较,那么MSHTML的源代码将包含除 元素及其基础源之外的所有内容。 CSS通过了CSS 2.1的W3Cvalidation。 它没有做任何太棘手的事情,除了一些背景图像属性将图像直接嵌入到CSS中(例如background-image: url(“data:image/png;base64 …)”,并注释掉这些行不会改变结果。 更奇怪的是(而且我不确定这是否相关),是我上周没有遇到任何问题。 本周我又回到了它,在切换了一些在实际注入之前处理要注入的HTML的代码之后,它不再起作用了。 当然,我认为我的某个更改可能会出现问题,但在对所有逻辑进行评论并将其直接输入后,HTML仍然显示为未格式化。 目前我正在注入标签,虽然我试图注入并且遇到了类似的结果。 在此先感谢您的帮助! 汤姆

如何使用C#在Windows 8中设置默认浏览器?

我们都很容易在Windows 8之前(在XP / VISTA / WIN7中)执行此操作,只需对Registry进行少量更改即可完成。 使用Windows 8并不是那么容易(我还没弄清楚如何)。 Windows 8也没有下面提到的更改注册表设置,但除此之外,它还为每台计算机存储一个唯一的哈希。 任何正文都可以帮助我为每台计算机创建此哈希,或者使用Microsoft提供的某些API来设置默认浏览器(’SetAppAsDefaultAll’不起作用)。 以下是注册表项。 计算机\ HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts.htm \ UserChoice Progid:IE.AssocFile.HTM哈希:XXXXXXXXXXX 计算机\ HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts.html \ UserChoice Progid:IE.AssocFile.HTM哈希:XXXXXXXXXXX 计算机\ HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ […]

如何为webBrowser导航事件设置超时

如何为webBrowser导航(url)事件设置超时 c #netframework 4.0