在GeckoFX的'AddMessageEventListener'中出错
我希望我的浏览器(geckofx)在我的网页中单击按钮时执行.NET函数.我有以下代码: public Form1() { InitializeComponent(); AddMessageEventListener("myFunction", ((string s) => this.showMessage(s))); browser.LoadHtml ( @" function fireEvent(name, data) {
0 2023-04-30
编程技术问答社区
运行多个UI线程
跳到底部以获取问题;这只是一些额外信息 我正在使用一个组件(geckofx)渲染一些网站,很好,但是只能在窗口表单中使用.因为它必须绑定到可以绘制的winforms对象.因为所有的Winforms都在同一线程中运行,所以我一次只能使用一个geckofx实例.因此,我决定以Winform的形式创建一个"工人类",并在其中添加所有逻辑.该表格不需要与主形式进行通信. 现在,我可以启动10个窗口,最终可以工作,但是每种新表单都会等待,然后所有其他表格都处理了所有壁虎事件,因为您不能在一个线程上使用多个实例.此外,浏览器必须在UITHREAD上.所以: 是否可以创建多个UI线程(每个形式一个)? 我已经看到有人在这样做([编辑:删除'bad'链接]),但没有人能使他的代码示例有效.最初使用它的人使用某种形式的自定义消息来做这种事情,但是我不知道如何实现这样的事情. 解决方案 我认为您所问的不是您想要的,但是每个线程创建消息泵很容易,您只需要调用应用程序. sta
14 2023-04-05
编程技术问答社区
如何在visual basic中用mozilla xul15处理gecko15的下载?
我正在将gecko15与mozilla xul15一起用作我的Visual Basic应用程序上的Web浏览器 有人知道我如何处理下载? 因为,当我单击文件以从该浏览器下载时,什么都不会发生. 非常感谢您的任何帮助. 解决方案 也: @Form负载事件: 添加: Addhandler Gecko.launcherdialog.download,downerog_download的地址 然后 私有sub sub launcherdialog_download(byval sender作为对象,byval e gecko.launcherdialogevent) e.cancel() 尝试 将EX视为例外 最后 E.Navigate(Nothing)'防止异常的DM行为 结束尝试 结束子 希望有帮助, 其他解决方案 这是我们所有人的头痛,无法让用户在嵌入式(VB Net)壁虎浏览器中下载文件.匿名天才的" kixpsider(我的朋友万岁)"结束
0 2023-04-01
编程技术问答社区
这可能吗?GeckoFX可以在每个实例中使用单独的CookieContainer吗?
我正在使用Geckfx22.0和xulrunner22.0.由于.net中的geckowebbrowser与所有其他实例的geckowebbrowsers共享cookie,所以我希望geckowebbrowser拥有自己的cookie容器,该容器没有共享以前在其他geckowebbrowsers或其他实例中创建的cookie. 例如,当我创建geckowebbrowser时,它不应该有任何cookie.当我运行2个geckowebbrowser的实例时,他们有自己的cookie容器,并且不会彼此共享或冲突饼干. 怎么可能? 我通过创建不同的类和启动geckofx尝试了各种可能的方法,但是当同时运行不同的浏览器时,它在其他浏览器中共享cookie.如果我从一个浏览器中删除cookie,其他浏览器也会发生同样的情况.我已经在不同的时间及其作品启动了proxy和useragent,但不能同时将各种用户应用于多个浏览器. public void Initiate()
10 2023-03-31
编程技术问答社区
为GeckoFX网络浏览器设置cookies?
如何为壁虎网络浏览器设置cookie? 我知道我必须打电话: geckowebbrowser.Document.Cookie = ...; 但是您也需要在全球设置cookie.例如,在.NET中包含Microsoft IE WebBrowserControl,您可以使用以下Winapi函数设置它们: static extern bool InternetSetCookie(string lpszUrl, string lpszCookieName, string lpszCookieData); 这适用于IE Web浏览器,但对Gecko不正常. 我尝试通过调用cookiemanager.add(...) 来使用gecko库中的cookiemanager类 解决方案 这对我有用geckofx浏览器29.0: string cookieName = "testName";
48 2023-03-31
编程技术问答社区
如何让 Gecko 在每个实例中使用单独的 CookieContainer?
由于.net中的geckowebbrowser与所有其他实例的geckowebbrowsers共享cookie,所以我希望geckowebbrowser拥有自己的cookie容器,该容器没有共享以前在其他geckowebbrowsers或其他实例中创建的cookie. 因此,例如,当我创建geckowebbrowser时,它不应该有任何cookie.当我运行2个壁虎的实例时,他们会有自己的cookie容器,并且不会彼此共享或冲突饼干. 怎么可能? 解决方案 您可以更改cocie(以及所有其他用户设置)的独特副本: string profileDir = "UniqueIdentifier"; string directory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), Path.Combine("Geckofx", profileD
32 2023-03-31
编程技术问答社区
在vb.net中使用GeckoFX浏览器获得Recaptcha2 Iframe HTML但总是空的。
我正在为vb.net使用最新的geckofx-45浏览器. 我的问题: 我无法获得iframe的HTML. 这是我的代码: 'Open Recaptcha2 test site Browser.Navigate("http://patrickhlauke.github.io/recaptcha/") 'Wait for loading (all ways I know) Browser.NavigateFinishedNotifier.BlockUntilNavigationFinished() Dim maxTimeouttime As DateTime = DateTime.Now.AddSeconds(4) While DateTime.Now
4 2023-03-07
编程技术问答社区
向下滚动[GeckoFx + Javascript]
我试图用geckofx v33和javaScript向下滚动页面. 我的C#代码如下: private void scrollWb() { string command = "window.scrollTo(0, document.body.scrollHeight);"; using (Gecko.AutoJSContext context = new AutoJSContext(wb.Window.JSContext)) { var result = context.EvaluateScript(command, wb.Window.DomWindow); } 我的代码不起作用...有人可以帮我吗? 谢谢. 解决方案 使用窗口对象的方法处理滚动: 另外,您可以使用geckohtmlelement的.scrollintoview()属性进入特定元素.
6 2023-02-23
编程技术问答社区
如何在C#中隐藏Gecko浏览器控件的滚动条?
我试图隐藏geckofx webbrowser控件的滚动条,在Windows表单中,有方法可以隐藏scrollbar webbrowser1.scrollbarsenabled = false; 但是在geckofx webbrowser中,没有这样的属性 我正在使用导航方法 geckowebbrowser.navigate(" url"); 解决方案 这有效.如果需要,您可以创建自己的ScrollBarseNabled属性. webBrowser1.Document.Body.Style.CssText = "overflow: hidden ! important;";
46 2023-02-23
编程技术问答社区
如何从GeckoWebBrowser控件加载另一个JQuery版本
我在C#中使用壁虎浏览器.以下代码显示jQuery已加载. GeckoWebBrowser GWB = new GeckoWebBrowser ..... bool JSExec; string JSresult = ""; string JStext = @"alert(jQuery.fn.jquery);"; using (AutoJSContext JScontext = new AutoJSContext(GWB.Window.JSContext)) { JSExec = JScontext.EvaluateScript(JStext, (nsISupports)GWB.Window.DomWindow, out JSresult); } 警报框显示1.4.4 是否可以加载较新版本的jQuery?例如2.0.2 => .com/ajax/libs/jquery/2.0.2/jquery.min.js 编辑以重播@john 是的,我正在使用ge
4 2023-02-22
编程技术问答社区
提交按钮在GeckoFX中不起作用
我有此代码: 并在C#中尝试了此操作: GeckoInputElement enter = new GeckoInputElement(myBrowser.Document.GetElementByTagName("input").DomObject); enter.click(); c#没有任何错误,但行不通! 解决方案 尝试以下代码 GeckoInputElement enter = (GeckoInputElement)myBrowser.Document.GetElementsByTagName("input") .First(inp => ((GeckoInputElement)inp).Value == "enter"); DomEventArgs ev =
24 2023-02-21
编程技术问答社区
如何在geckoFX中覆盖报头?
我正在尝试使用此方法: GeckoMIMEInputStream postdata = new GeckoMIMEInputStream(); postdata.AddHeader("Accept-Language", "ru,en-us;q=0.7,en;q=0.3"); browser.Navigate(someurl, flags, referer, postData); ,但它添加了" ru,en-us; q = 0.7,en; q = 0.3"已存的"接受语言"字符串!如何覆盖? 解决方案 我找到了它,要更改accept_languages: GeckoPreferences.User["intl.accept_languages"] = "ru";
48 2023-02-21
编程技术问答社区
如何从gecko网页浏览器中获取HTML源代码?InnerHtml不存在了
geckofx v22 GeckoElement element = null; var geckoDomElement = WebBrowser1.Document.DocumentElement; if(geckoDomElement is GeckoElement) element = (GeckoElement)geckoDomElement ; var innerHtml = element.InnerHtml; 但是没有更多的InnerHtml方法.如何从Gecko Web浏览器中获取源html? 解决方案 铸成geckohtmlelement而不是壁虎. GeckoHtmlElement element = null; var geckoDomElement = WebBrowser1.Document.DocumentElement; if(geckoDomElement is GeckoHtmlElement) { element =
12 2023-02-21
编程技术问答社区
禁用 JavaScript 警报 GeckoFX C#
我正在尝试在Geckofx-33 + Xulrunner 33(Winforms C#)中禁用JavaScript警报,但我找不到解决方案.我检查了示例代码,源代码,但是我找不到可以阻止警报的东西.我也在about:config中搜索,没有成功. 有人知道我可以在哪里找到参考? 解决方案 geckoWebBrowser1.JavascriptError += (sender, error) => { GeckoWebBrowser browser = geckoWebBrowser1; string text = "window.alert = function(){};"; using (AutoJSContext context = new AutoJSContext(browser.Window.JSContext)) {
4 2023-02-20
编程技术问答社区
如何知道gecko浏览器是否完成了网页的加载?
正如标题所说,我怎么知道壁虎浏览器是否完成了加载网页? 我知道有document_completed事件.但是,每当网页加载时,它都会触发. 还有其他方法可以检查当前网页是否已完成加载. 解决方案 我在vb.net和geckofx v45.0.34.0中的求解您可以使用此工具转换为c#( http://converter.telerik.com/): Private vWeb As GeckoWebBrowser = New GeckoWebBrowser Private Property pageready As Boolean = False Private Sub WaitForPageLoad() AddHandler vWeb.DocumentCompleted, New EventHandler(Of GeckoDocumentCompletedEventArgs)(AddressOf PageWaiter) While Not pagere
8 2023-02-17
编程技术问答社区
GeckoFX观察员服务
我正在尝试将页面上的特定图像加载,但我遇到了一些麻烦. geckowebbrowser的httpactivitivitivity observer正在返回未实现的异常并崩溃了我的程序,因此我试图实现自己的观察者,但是观察方法未被调用. . 任何想法都会有所帮助. public class HttpObserver : nsIObserver { private nsIObserverService service; private List bans; public HttpObserver() { bans = new List(); service = Xpcom.CreateInstance("@mozilla.org/observer-service;1"); } public void Register(
6 2023-02-15
编程技术问答社区
禁用GeckoFX确认信息
我正在使用Windows应用程序中的Gecko Web浏览器版本21.0.1和.NET Framework 4.0. 当我导航到某些网页时,我会得到弹出确认消息: 此网页正在重定向到新位置.你是否想要 将您输入的表单数据重新发送到新位置? 如何禁用这种消息? 到目前为止,我已经尝试了以下设置,但它们没有帮助: GeckoPreferences.User["security.warn_viewing_mixed"] = false; GeckoPreferences.User["plugin.state.flash"] = 0; GeckoPreferences.User["browser.cache.disk.enable"] = false; GeckoPreferences.User["browser.cache.memory.enable"] = false; 解决方案 您可以尝试提供自己的nsIPromptService2/nsIPrompt实
52 2023-02-14
编程技术问答社区
C#结合GeckoFX + Tor.NET库
我正在尝试将geckofx库和tor.net库. 在我的代码中,我都准备使用Tor Network, ClientCreateParams createParameters = new ClientCreateParams(); createParameters.ConfigurationFile = ConfigurationManager.AppSettings["torConfigurationFile"]; createParameters.ControlPassword = ConfigurationManager.AppSettings["torControlPassword"]; createParameters.ControlPort = Convert.ToInt32(ConfigurationManager.AppSettings["torControlPort"]); createParameters.DefaultConfigurationFile =
12 2023-02-13
编程技术问答社区
使用geckofx c#填充一个选择框
我正在使用代码: ((GeckoSelectElement) geckoWebBrowser1.Document.GetElementById("OA0001_dob_month")).Value = "Jul"; 但它不起作用.如何在geckofx c#中的selectbox中选择一个值,而无需使用jscontext? 解决方案 通过索引选择一个值: var document = GeckoWebBrowser1.Document; var selectElement = (GeckoSelectElement)document.GetElementById("OA0001_dob_month"); selectElement.SelectedIndex = 2;
12 2023-02-13
编程技术问答社区