Tag: webbrowser control

Web浏览器行为问题

我试图用.NET C#自动化Webbrowser。 问题是控件或我应该说IE浏览器在不同的计算机上表现得很奇怪。 例如,我点击链接并在第一台计算机上填充Ajax弹出窗体,如下所示,没有任何错误: private void btn_Start_Click(object sender, RoutedEventArgs e) { webbrowserIE.Navigate(“http://www.test.com/”); webbrowserIE.DocumentCompleted += fillup_LoadCompleted; } void fillup_LoadCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e) { System.Windows.Forms.HtmlElement ele = web_BrowserIE.Document.GetElementById(“login”); if (ele != null) ele.InvokeMember(“Click”); if (this.web_BrowserIE.ReadyState == System.Windows.Forms.WebBrowserReadyState.Complete) { web_BrowserIE.Document.GetElementById(“login”).SetAttribute(“value”, myUserName); web_BrowserIE.Document.GetElementById(“password”).SetAttribute(“value”, myPassword); foreach (System.Windows.Forms.HtmlElement el in web_BrowserIE.Document.GetElementsByTagName(“button”)) { if (el.InnerText == “Login”) { el.InvokeMember(“click”); } } web_BrowserIE.DocumentCompleted […]

根据停靠在其中的webBrowser控件中的数据调整自定义用户控件的大小

我有一个名为webBrowser1的webBrowser控件,它在自定义用户控件上添加并停靠为DockStyle.Full 。 Web浏览器动态接受一些HTML文本并显示它。 我禁用了webBrowser控件的滚动条。 我的问题是,只要内容有点冗长, webBrowser就会从下面隐藏它。 但是我的项目目标的要求是webBrowser不能显示滚动条或它不应该隐藏一些内容。 必须完全显示内容,而不滚动。 这意味着webBrowser停靠的用户控件必须根据webBrowser的内容调整自身大小。 所以,任何人都可以建议我如何实现这一目标? 我搜索了整个互联网,但没有发现任何东西。

Web浏览器控件:获取元素值并将其存储到变量中

Winform: Web浏览器控件 Web浏览器在html表中具有以下显示内容。 [Element] [Value] Name John Smith Email jsmith@hotmail.com 对于上面的示例,html代码可能看起来像这样 Name John Smith Email jsmith@hotmail.com 。 我想获取元素值,标签右侧的值。 做这个的最好方式是什么? (我可以使用DOM还是需要使用正则表达式对html代码进行分阶段?)。

我如何在工作线程上创建和使用WebBrowser控件?

我正在创建一个应用程序,使用以下方法对网站进行屏幕截图http://pietschsoft.com/post/2008/07/C-Generate-WebPage-Thumbmail-Screenshot-Image.aspx 我试图使应用程序multithreading,但我遇到了以下错误: [ActiveX控件’8856f961-340a-11d0-a96b-00c04fd705a2’无法实例化,因为当前线程不在单线程单元中。 有任何建议如何解决这个问题? 我的代码基本如下: List lststrWebSites = new List(); lststrWebSites.Add(“http://stackoverflow.com”); lststrWebSites.Add(“http://www.cnn.com”); foreach (string strWebSite in lststrWebSites) { System.Threading.ThreadStart objThreadStart = delegate { Bitmap bmpScreen = GenerateScreenshot(strWebSite, -1, -1); bmpScreen.Save(@”C:\” + strWebSite + “.png”, System.Drawing.Imaging.ImageFormat.Png); }; new System.Threading.Thread(objThreadStart).Start(); } 从上面的URL复制GenerateScreenShot()函数实现: public Bitmap GenerateScreenshot(string url) { // This method gets a screenshot of the webpage // […]

如何在WebBrowser中以编程方式提交没有提交按钮的表单

我导航到一个网站,其表单没有提交按钮,但确实有表格。 我想提交此表格。 如何使用C#和WebBrowser控件执行此操作?

如何从C#主机应用程序执行Javascript回调函数

我正在C#中创建一个应用程序,它为大多数GUI提供自定义网页。 作为主持人,我想提供一个javascript API,以便嵌入式网页可以访问主机应用程序提供的一些服务。 我已经能够使用WebBrowser.ObjectForScripting属性和实现脚本类来获得这个工作的简单案例。 这适用于同步javascript调用。 但是,主机提供的一些操作是长时间运行的,并且我希望能够在操作完成时回调javascript。 这就是我遇到麻烦的地方。 使用Javascript: function onComplete( result ) { alert( result ); } function start() { window.external.LongRunningProcess( ‘data’, onComplete ); } C#: [ComVisible(true)] public class ScriptObject { public void LongRunningProcess( string data, callback ) { // do work, call the callback } } javascript中的’start’函数将整个过程踢掉。 我遇到的问题是,回调的类型是什么? 我该怎么称呼它来自C#? 如果我使用字符串类型进行回调,它会编译并运行,但是在LongRunningProcess方法中,回调实际上包含onComplete函数的全部内容(即’function onComplete(result){alert(result)}’) 如果我使用对象类型,它将作为COM对象返回。 使用Microsoft.VisualBasic.Information.TypeName方法,它返回’JScriptTypeInfo’。 但据我所知,这不是一个真正的类型,也没有通过所有MSDN真正提到它。 […]

WebBrowser控件和Windows窗体之间的交互

我正在管理各种联系信息 – 电话,地址,电子邮件,IM,其他我希望它看起来不错并节省空间,所以我想在WebBrowser控件中显示它。 我可以动态地将标记和内容创建到流中,并以任何格式显示它,颜色和字体大小可以轻松调整。 我还可以将按钮添加到“添加”,“编辑”和“删除”。 我喜欢这种方法,因为它看起来比RichTextBox更容易和更好看(如果不这样的话,请更正我。) 问题是关于响应这些按钮。 如果选择了一个,我想隐藏WebBrowser并取消隐藏Panel,其中包含允许输入新联系人或编辑现有联系人所需的TextBox控件。 我听说过这个可以做到的。 我希望得到一些建议。 我能想到的只是一些代码来获取一个AJAX调用,这会引发一个Windows事件,但这看起来很奇怪。 任何想法,链接或建议都会受到赞赏..或者甚至是一个很好的理由,为什么不这样做,但它似乎是高质量的信息呈现的好主意,我已经动态生成了大量的HTML。

如何捕获Web浏览器控件中任何按钮的单击事件?

假设我的网页浏览器显示的是一个html页面,其中有许多按钮。 我只想知道如何从c#win apps中捕获网页浏览器控件中的任何按钮。 如果可能那么从那个事件我想要捕获按钮名称,高度和宽度以及任何自定义属性。 等。请指导我。

在控制台应用程序中使用WebBrowser

我想用它来调用网页上的一些JS脚本。 我有这个: static void Stuff() { WebBrowser browser = new WebBrowser(); browser.Navigate(“http://www.iana.org/domains/example/”); HtmlDocument doc = browser.Document; //doc.InvokeScript(“someScript”); Console.WriteLine(doc.ToString()); } static void Main(string[] args) { Console.WriteLine(“hi”); var t = new Thread(Stuff); t.SetApartmentState(ApartmentState.STA); t.Start(); } 问题1:当我尝试获取doc.ToString()时,我收到“对象引用未设置”exception。 为什么? 问题2:如何从HTML文档中将一些数据导入主程序? WebBrowser需要一个单独的线程,这需要一个不能返回任何值的静态方法。 如何将doc返回到Main()以便我可以用它做些什么?

如何为WebBrowser Control设置和删除任意域的cookie

如何在不使用Javascript的情况下在webbrowser控件中设置和删除域的cookie( 如果不首先导航到网站,则不允许设置/删除cookie。 )