Tag: webbrowser control

打印从WebBrowser控件在设置默认值后打印到错误的打印机

我在VB.NET WinForms应用程序中有一个WebBrowser控件。 我可以在不提示用户的情况下从代码和打印设置默认打印机。 但是,还有一个显示PrintDialog的打印按钮。 如果首先执行此操作,则将打印页面。 然后,如果我尝试稍后以编程方式打印(再次将默认打印机设置为其他打印​​机),它将打印到PrintDialog框中选择的最后一台打印机,即使我正在重置默认打印机并看到在Windows中更改默认打印机。 有任何想法吗? 除非ShowPrintDialog首先选择了打印机,否则它可以正常工作。 一旦发生这种情况,似乎总是使用该打印机,无论我做什么。 For Each strPrinter In PrinterSettings.InstalledPrinters If strPrinter.Contains(“My Printer”) Then wScript.SetDefaultPrinter(strPrinter) End If Next browser.Print()

WebBrowser控件的安全级别

我正在尝试将.hta应用程序迁移到C#可执行文件。 当然,因为它是.hta,所以代码都是HTML和Jscript ,并且调用了本地ActiveX对象。 我创建了一个C#可执行项目,我只是使用WebBrowser控件来显示HTML内容。 只需将.hta重命名为.html并取出HTA声明。 一切都很好,除了当我调用ActiveX对象时,我得到一个安全弹出警告,指出在页面上运行ActiveX控件。 我理解为什么会发生这种情况,因为WebBrowser控件本质上是IE并使用Internet选项安全设置,但有没有办法让WebBrowser控件绕过安全弹出窗口,或者将可执行文件或DLL注册为可信任的方法更改Internet选项中的设置? 即使是在部署包上执行的方法也可以。

Web浏览器控制IE8兼容模式开/关开关

我在使用WebBrowser控件导航到网站时遇到IE8兼容性问题。 奇怪的是有时网站有效,但很可能不会。 我有时可以刷新页面,也可以。 只是去IE8中的页面我遇到了相同的CSS渲染问题所以我切换到兼容模式,它刷新并正确呈现。 有没有办法模拟WebBrowser控件的这种效果。 我希望能够像在Internet Explorer中一样关闭按钮并关闭和打开模式。 这可能吗? 如果是这样,有人知道怎么做? 谢谢

让WebBrowser控件在控制台应用程序中工作?

我有一个能够通过WebBrowser对象打印HTML的打印机类。 我希望能够从控制台应用程序打印,但是当我的打印机类尝试创建WebBrowser对象时出现错误: WebBrowser browser = new WebBrowser(); 错误: ActiveX control ‘8856f961-340a-11d0-a96b-00c04fd705a2’ cannot be instantiated because the current thread is not in a single-threaded apartment. 我尝试将对System.Windows.Forms的引用添加到我的控制台应用程序中,但这不起作用。 我对这里发生的事情一无所知,但我很感激你的帮助。

WebBrowser控件页面加载错误

我的winform上有WebBrowser控件。 当我尝试导航到一些网站时,我得到标准的IE错误页面,如: “导航到网页已被取消” “地址无效” “页面无法加载” 等等 我需要处理这些错误并将自定义错误消息返回给用户。 有什么方法可以解决这个问题吗?

以编程方式更改WinForms WebBrowser控件的目标打印机

我正在尝试使用不可见的WebBrowser控件来打印一个非常简单的HTML文档。 我们的应用程序要求我们能够以这种方式打印多个文档,并且它们都可以发送到不同的打印机。 不幸的是,我没有非常成功地使输出转到正确的打印机。 它现在的工作方式是在打印文档之前,应用程序确定要接收哪个打印机,并相应地设置默认打印机。 为此,它使用从WinSpool.drv导入的SetDefaultPrinter()。 如果我在调试模式下执行代码,我可以清楚地看到默认打印机更改(并且此更改反映在控制面板UI中),但WebBrowser仍然坚持使用原始默认打印机。 从我所看到的MSDN文档并没有真正为这种情况提供解决方案。 我非常感谢有关如何以编程方式完成此操作的一些输入。

使用带有webBrowser控件C#/。net 3.5的代理

我需要一些已经使用webBrowser控件和代理的人的帮助。 我需要的是以下内容。 1 – 为webBrowser控件设置代理。 2 – 加载特定站点。 3 – 在站点上执行例程。 4 – 为webBrowser控件设置不同的代理。 5 – 加载另一个站点。 6 – 从第3点开始执行相同的程序。 并且该过程以这种方式保持,从代理列表循环,直到所有代理都被使用。 但。 我在应用程序方面遇到了一些问题。 要做到这一点: 1 – 我正在使用附加的代码将代理设置到webBrowser控件中,但在执行期间似乎只工作一次,当我在循环中再次调用它时它只是不起作用,我可以理解为什么。 2 – 我有问题确定页面何时完全加载,我的意思是,当我设置第一个站点加载时,我需要程序等到它完成加载,然后在它上面执行例程,并继续这个过程。 希望有人可以帮助我… ///我正在使用的function—————————– private void SetProxy(string Proxy) { MessageBox.Show(“Setting :” + Proxy); string key = “Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings”; RegistryKey RegKey = Registry.CurrentUser.OpenSubKey(key, true); RegKey.SetValue(“ProxyServer”, Proxy); RegKey.SetValue(“ProxyEnable”, 1); […]

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

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

如何调用WebBrowser导航来浏览一些url?

要收集网页上的信息,我可以使用WebBrowser.Navigated事件。 首先,导航到url: WebBrowser wbCourseOverview = new WebBrowser(); wbCourseOverview.ScriptErrorsSuppressed = true; wbCourseOverview.Navigate(url); wbCourseOverview.Navigated += wbCourseOverview_Navigated; 然后在调用Navigated时处理网页: void wbCourseOverview_Navigated(object sender, WebBrowserNavigatedEventArgs e) { //Find the control and invoke “Click” event… } 当我尝试通过字符串数组的url时,困难的部分出现了。 foreach (var u in courseUrls) { WebBrowser wbCourseOverview = new WebBrowser(); wbCourseOverview.ScriptErrorsSuppressed = true; wbCourseOverview.Navigate(u); wbCourseOverview.Navigated += wbCourseOverview_Navigated; } 在这里,因为页面加载需要时间, wbCourseOverview_Navigated永远不会达到wbCourseOverview_Navigated 。 我试图在C#5中使用async await 。 […]

WebBrowser Navigate和InvokeScript的流程

我无法理解我正在构建的这个函数的流程。 public void PortalLogin(AutoResetEvent signal) { // Navigate to portal string portalUrl = “website_name”; string portalEmail = “email@email.com”; string portalPassword = “password”; Action action2 = () => { webBrowser2.Tag = signal; webBrowser2.Navigate(portalUrl); webBrowser2.DocumentCompleted -= WebBrowserDocumentCompleted; webBrowser2.DocumentCompleted += WebBrowserDocumentCompleted; }; webBrowser2.Invoke(action2); signal.WaitOne(); // Login to O365 portal webBrowser2.Invoke(new Action(() => { HtmlElement head = webBrowser2.Document.GetElementsByTagName(“head”)[0]; HtmlElement […]