Tag: webbrowser control

如何统计webbrowser控件C#中的字符数?

使用webbrowser控件。 我想计算webbrowser中的字符数,就像Textbox类的textchange一样。 我只想计算文本中显示WebBrowser没有html,没有图像等的字符数。有关如何模拟更改文本显示时触发的文本框行为的任何想法? 谢谢 我正在用C#开发Winforms。 没有ASP.NET。

C#WPF – 等待加载页面

我在StackOverflow上看到了关于这个主题的几个线程,但是它们似乎都没有提供答案。 我有一个按钮,当点击它时,会打开一个不可见的网页,导航到一个URL,将信息输入一个框,按一个按钮,然后抓取屏幕以获取信息。 我的代码的骨头基本上在点击中: WebBrowser wb = new WebBrowser; wb.Visibility = System.Windows.Visibility.Hidden; wb.Navigate(“http://somepage.com”); 这就是它变得棘手的地方。 我正在寻找一种方法来确保在尝试输入数据或刮擦屏幕之前加载页面。 我已经看过几个讨论Navigated , IsLoaded , LoadCompleted以及BackgroundWork东西的线程,但是我无法使用其中的任何一个。 哪个是用于确定页面已完全加载的最佳选项? 您如何获得所选择的方法? 我也无法从屏幕上获取数据,因为WPF不使用相同的GetElementByID 。 编辑: 根据下面的评论,以下是我遇到的错误: 一旦页面被导航,首先导航,并且不一定等到所有对象都被加载。 这可以按预期工作,但不能用于我的目的。 IsLoaded永远不会返回true private void GetData_Click(object sender, RoutedEventArgs e) { int x=0; HTMLDocument doc; wb = new WebBrowser(); wb.Visibility = System.Windows.Visibility.Visible; wb.Navigate(“somesite.com”); doc = wb.Document as mshtml.HTMLDocument; while(!wb.IsLoaded) { //Wait […]

使用线程池限制最大线程数 – 尝试读取或写入受保护的内存错误

我正在使用Noseratio的一些报废代码,请访问https://stackoverflow.com/a/22262976/3499115 。 他写了它来刮取一个url列表,但是我正在使用它,但是在我正在使用的另一个网络爬虫MVC控制器中一次只渲染一个url。 每当我找到特定类型的链接时,我都会调用此代码,并且看起来多次这样做会导致内存不足。 也许解决方案是使用线程池并限制最大线程数,但我将如何对此代码执行此操作? 以下是调用webbrowser代码的Web爬网程序代码: public static HtmlDocument renderJavascript(string url) { HtmlDocument doc = new HtmlDocument(); // using webBrowserScrapper try { WebBrowserExt.SetFeatureBrowserEmulation(); // enable HTML5 var cts = new CancellationTokenSource((int)TimeSpan.FromMinutes(3).TotalMilliseconds); var task = WebBrowserScrapper.ScrapSitesAsync( url, cts.Token); task.Wait(); //Console.WriteLine(“Press Enter to exit…”); //Console.ReadLine(); doc.LoadHtml(task.Result); return doc; } catch (Exception ex) { while (ex is AggregateException […]

在WebBrowser控件中查看Docx文档

我已经尝试了几天,将一个单词docx文件加载到一个存在于windows窗体c#中的webbrowser控件中。 经过几天的努力才能完成这项工作,但在谷歌的帮助下以及一些有用的post我已经成功完成了它并且它是完美的。 我通过以下方式完成了: 将docx文件转换为临时html文件。 我将我的webbrowser控件导航到该临时html文档。 只有我注意到一个问题:webbrowser控件似乎在Web Layout中查看文件。 这就是Ms-Word Web Layout,您知道在Ms-Word,读取模式,打印布局和Web布局中有3种主要的查看布局。 问题在于,一些格式错误的docx文件在该webbrowser控件中全部出现偏差,因为它会将它们拉伸出来,好像它们会出现在实际的Web浏览器应用程序中一样。 现在我想要实现的是能够以与Ms-Word中的Print Layout类似的方式查看该webbrowser控件的内容,或者至少是控件在控件自己的大小内重新调整内容。 (如果我的代码是必要的,那么我可以提供它)

如何将Firefox和Chrome添加到C#浏览器控件?

你能否告诉我如何将其他浏览器控件(如Chrome,Firefox等)添加到C#Web浏览器控件中?我正在尝试在C#中创建一个HTML和CSS规则测试器,我需要将所有这些控件都安装在C#中应用

C#WebBrowser控件:window.external访问子对象

将对象分配给WebBrowser控件的ObjectForScripting属性时,JavaScript可以使用windows.external.[method_name]调用此对象的方法windows.external.[method_name] 。 这没有问题。 但是当我有这样的JavaScript函数(访问子对象)时,我需要如何设计这个C#对象: window.external.app.testfunction(); 我使用分配给ObjectForScripting属性的以下C#对象测试了它: [ComVisible(true)] public class TestObject { public App app = new App(); } public class App { public void testfunction() { } } 但不幸的是,这不起作用并导致JavaScript错误说“function预期”。 关于C#对象如何看起来像这个JavaScript命令工作的任何想法? 谢谢你的任何提示 安德烈亚斯

从WebBrowserControl中单击的HtmlElement获取XPath

如何从WebBrowserControl中单击的HtmlElement获取XPath? 这是我检索点击的HtmlElement的方法: System.Windows.Forms.HtmlDocument document = this.webBrowser1.Document; document.MouseUp += new HtmlElementEventHandler(this.htmlDocument_Click); private void htmlDocument_Click(object sender, HtmlElementEventArgs e) { HtmlElement element = this.webBrowser1.Document.GetElementFromPoint(e.ClientMousePosition); } 我想在网站上点击特定元素(价格,商品编号,描述等)并获取他们的XPath表达式。 谢谢!

允许System.Windows.Forms.WebBrowser运行javascript

认真地 – 在尝试回答之前一直阅读问题。 “使用其他浏览器”不回答这个问题。 问题是: 当我无法控制传入页面时,如何获取System.Windows.Forms.WebBrowser控件以显示嵌入了Javascript的网页? 我已经看到人们建议为IE模拟添加注册表值( 允许javascript在Windows窗体Web浏览器上运行 )并更改Internet选项/安全性中的脚本设置。 我已经这样做了 。 所以,这是测试 – 使用System.Windows.Forms.WebBrowser控件访问www.hulu.com。 我们仍然得到这个。 还有其他想法吗?

通过“C#”清除临时Internet文件

我在windows application.i中使用webbrowser控件正在webbrowser控件中查看url内容。 这里url内容值存储在用户机器的临时Internet文件中。 当我点击我的表单中的关闭按钮时,我正在以编程方式删除临时Internet文件。 它工作正常。 但在删除过程中,“消息框出现并说删除临时Internet文件”。 在这里我不想在删除期间显示该对话框。 下面是删除用户机器临时文件的代码。 怎么处理这个.. void DeleteBrowserTempFile() { string args = “”; args = (“InetCpl.cpl,ClearMyTracksByProcess 8”); System.Diagnostics.Process process = null; System.Diagnostics.ProcessStartInfo processStartInfo; processStartInfo = new System.Diagnostics.ProcessStartInfo(); processStartInfo.FileName = Environment.GetFolderPath(Environment.SpecialFolder.System) + “\\Rundll32.exe”; if ((System.Environment.OSVersion.Version.Major >= 6)) { // Windows Vista or higher processStartInfo.Verb = “runas”; } processStartInfo.Arguments = args; processStartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; […]

如何在WPF WebBrowser中使用“后退”和“前进”导航按钮事件?

WPF中的WebBrowser控件inheritance自UIElement ,但我们无法在UIElement事件中注册事件处理程序。 为什么? 在WPF WebBrowser鼠标事件没有按预期工作 ,它得到了回答,但我仍然无法理解。 无论如何,将处理程序连接到WebBrowser文档提供的事件可以捕获大多数鼠标事件,但不能使用“后退”和“前进”导航按钮事件。 由于互联网浏览器可以做到这一点,我认为这是可能的。 有什么方法可以解决这个问题吗? 更新:在这个问题中, ‘Back’ & ‘Forward’ navigation buttons意味着5键鼠标系统中的XButton1和XButton2。 更新2:我用Navid Rahmani的答案解决了这个问题。 我认为有人会需要这个答案,所以我附上了主要部分。 如果发现任何问题或更合理的解决方案,请告诉我。 //This code assumes the `WebBrowser` field named _webBrowser is already initiated. //For the detail out of this code, please refer to the Navid Rahmani’s answer. private bool _isMouseOver; private HTMLDocumentEvents2_Event _docEvent; public ctor() { _webBrowser.LoadCompleted += […]