public void EvaluateScript_JavascriptIncreasePriviligesCrossFrameAccess_ScriptExecutesAndReturnsExpectedResult() { string result; string aboutBlank; using (var page = new GeckoWebBrowser()) { IntPtr unused = page.Handle; page.CreateWindow += (s, e) => { e.WebBrowser = browser; }; using (AutoJSContext context = new AutoJSContext(page.Window.JSContext)) { Assert.IsTrue(context.EvaluateScript("window.open('http://www.google.com'); window.location.href", out aboutBlank)); } browser.NavigateFinishedNotifier.BlockUntilNavigationFinished(); using (AutoJSContext context = new AutoJSContext(browser.Window.JSContext)) { Assert.IsTrue(context.EvaluateScript("window.location.href", out result)); Assert.AreNotEqual(aboutBlank, result); // cross frame access Assert.IsFalse(context.EvaluateScript("opener.location.href", out result)); Assert.IsTrue(context.EvaluateTrustedScript("opener.location.href", out result)); Assert.AreEqual(aboutBlank, result); } page.Stop(); } }
private Size SetWidthAndHeight(GeckoWebBrowser browser) { try { if (_syncControl.InvokeRequired) { return((Size)_syncControl.Invoke(new Func <GeckoWebBrowser, Size>(SetWidthAndHeight), browser)); } } catch (Exception e) { //Debug.Fail("Reproduction of BL-524: Crash making thumbnail?"); //otherwise, don't tell the user, just log and send exception if they're online Logger.WriteEvent("***Error making thumbnail, possible bl-524 reproduction, swallowed. " + e.Message); Analytics.ReportException(e); return(new Size(0, 0)); // this tells the caller we failed } Guard.AgainstNull(browser.Document.ActiveElement, "browser.Document.ActiveElement"); var div = browser.Document.ActiveElement.EvaluateXPath("//div[contains(@class, 'bloom-page')]").GetNodes().FirstOrDefault() as GeckoElement; if (div == null) { var order = (ThumbnailOrder)browser.Tag; Logger.WriteEvent("HtmlThumNailer ({1}): found no div with a class of bloom-Page ({0})", order.ThumbNailFilePath, Thread.CurrentThread.ManagedThreadId); throw new ApplicationException("thumbnails found no div with a class of bloom-Page"); } browser.Height = div.ClientHeight; browser.Width = div.ClientWidth; return(new Size(browser.Width, browser.Height)); }
private Size SetWidthAndHeight(GeckoWebBrowser browser) { try { if (_syncControl.InvokeRequired) { return((Size)_syncControl.Invoke(new Func <GeckoWebBrowser, Size>(SetWidthAndHeight), browser)); } } catch (Exception e) { NonFatalProblem.Report(ModalIf.None, PassiveIf.Alpha, "Could not make thumbnail", "Ref bl-524", e); return(new Size(0, 0)); // this tells the caller we failed } Guard.AgainstNull(browser.Document.ActiveElement, "browser.Document.ActiveElement"); var div = browser.Document.ActiveElement.EvaluateXPath("//div[contains(@class, 'bloom-page')]").GetNodes().FirstOrDefault() as GeckoElement; if (div == null) { var order = (ThumbnailOrder)browser.Tag; Logger.WriteEvent("HtmlThumNailer ({1}): found no div with a class of bloom-Page ({0})", order.ThumbNailFilePath, Thread.CurrentThread.ManagedThreadId); throw new ApplicationException("thumbnails found no div with a class of bloom-Page"); } browser.Height = div.ClientHeight; browser.Width = div.ClientWidth; // This is probably not needed...width zero came about in debugging incomplete code where a stylesheet // did not take effect..but it seems like a reasonable bit of defensive programming to keep. if (browser.Width == 0) { browser.Width = browser.Height / 2; // arbitrary way of avoiding crash } return(new Size(browser.Width, browser.Height)); }
/// <summary> /// Create the UX. /// </summary> public LeanWinForm() { InitializeComponent(); //Form Setup: CenterToScreen(); WindowState = FormWindowState.Maximized; Text = "QuantConnect Lean Algorithmic Trading Engine: v" + Globals.Version; //GECKO WEB BROWSER: Create the browser control // https://www.nuget.org/packages/GeckoFX/ // -> If you don't have IE. #if !__MonoCS__ Gecko.Xpcom.Initialize(); _geckoBrowser = new GeckoWebBrowser { Dock = DockStyle.Fill, Name = "browser" }; splitPanel.Panel1.Controls.Add(_geckoBrowser); #else // MONO WEB BROWSER: Create the browser control // Default shipped with VS and Mono. Works OK in Windows, and compiles in linux. _monoBrowser = new WebBrowser() { Dock = DockStyle.Fill, Name = "Browser" }; splitPanel.Panel1.Controls.Add(_monoBrowser); #endif _logging = new QueueLogHandler(); }
public static void NavigateTo(GeckoWebBrowser browser, CurrentWindow window) { try { string location = @"\html\index.html"; switch (window) { case CurrentWindow.Dependent: location = @"\html\dependent.html"; break; case CurrentWindow.EnterNumber: location = @"\html\enter_number.html"; break; case CurrentWindow.Pay: location = @"\html\pay.html"; break; case CurrentWindow.Encashment: location = @"\html\encashment.html"; break; case CurrentWindow.MakeEncashment: location = @"\html\make_encashment.html"; break; case CurrentWindow.BlockTerminal: location = @"\html\terminal_blocked.html"; break; } browser.Navigate(Directory.GetCurrentDirectory() + location); } catch (Exception exception) { Log.Error("Cannot navigate to the page"); } }
/// <summary> /// 启动任务 /// </summary> /// <param name="iCheerPrintArgs"></param> public void StartTask(CheerPrintArgs iCheerPrintArgs) { //如果浏览器环境没有初始化 if (!Gecko.Xpcom.IsInitialized) { CheerLib.LogWriter.Error("{0}.StartTask Faild,Gecko.Xpcom.IsInitialized==false", this.GetType().FullName); this.RaiseStatusFinished(501); return; } Gecko.GeckoPreferences.User["gfx.direct2d.disabled"] = true; //准备数据目录、路径 var dateTimeStr = DateTime.Now.ToString("yyyyMMddHHmmss"); var pid = Process.GetCurrentProcess().Id; this.mDataRoot = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "PdfData", string.Format("{0}_{1}", dateTimeStr, pid)); if (!Directory.Exists(this.mDataRoot)) { Directory.CreateDirectory(this.mDataRoot); } this.mHtmlPdfPath = Path.Combine(this.mDataRoot, "html_pdf.pdf"); this.mPdfPath = Path.Combine(this.mDataRoot, "pdf_pdf.pdf"); //外部参数 this.mCheerPrintArgs = iCheerPrintArgs; //创建浏览器对象 this.mWebBrowser = new GeckoWebBrowser(); this.components.Add(this.mWebBrowser); this.mWebBrowser.Size = new Size(this.mCheerPrintArgs.htmlWindowWidth, this.mCheerPrintArgs.htmlWindowHeight); this.mWebBrowser.ConsoleMessage += MWebBrowser_ConsoleMessage; //控制台消息 this.mWebBrowser.DocumentCompleted += MWebBrowser_DocumentCompleted; //当文档加载完成 var htmlPath = this.mCheerPrintArgs.htmlInputFilePath; if (!File.Exists(htmlPath)) { this.RaiseStatusChanged(0, "Loading Html File Not Exsist!"); CheerLib.LogWriter.Log("Not Exsist htmlPath=" + htmlPath); this.RaiseStatusFinished(501); return; } var htmlContent = File.ReadAllText(htmlPath, Encoding.UTF8); this.mWebBrowser.LoadHtml(htmlContent); //浏览器访问html文件地址 this.RaiseStatusChanged(0, "Loading Html..."); //下一步到浏览器文档加载完成 }
private void geckoWebBrowser2_Navigating(object sender, GeckoNavigatingEventArgs e) { GeckoWebBrowser geckoWebBrowser2 = new GeckoWebBrowser(); //throw new NotImplementedException(); geckoWebBrowser1_Navigating(geckoWebBrowser2, e); }
public static void Main(string[] args) { // Uncomment the follow line to enable CustomPrompt's GeckoWebBrowser.UseCustomPrompt(); // If you want to further customize the GeckoFx PromptService then // you will need make a class that implements nsIPromptService2 and nsIPrompt interfaces and // set the PromptFactory.PromptServiceCreator delegate. for example: // PromptFactory.PromptServiceCreator = () => new MyPromptService(); #if GTK if (!Environment.GetEnvironmentVariable("LD_LIBRARY_PATH").Contains("/usr/lib/firefox/")) { throw new ApplicationException(String.Format("LD_LIBRARY_PATH must contain {0}", "/usr/lib/firefox/")); } Xpcom.Initialize("/usr/lib/firefox/"); #else Xpcom.Initialize(XULRunnerLocator.GetXULRunnerLocation()); #endif // Uncomment the follow line to enable CustomPrompt's // GeckoPreferences.User["browser.xul.error_pages.enabled"] = false; GeckoPreferences.User["gfx.font_rendering.graphite.enabled"] = true; Application.ApplicationExit += (sender, e) => { Xpcom.Shutdown(); }; //Application.Idle += (s, e) => Console.WriteLine(SynchronizationContext.Current); Application.Run(new MyForm()); }
public HTTPBase(RenderingEngine RenderingEngine) { try { if (RenderingEngine == RenderingEngine.Gecko) { if (!Xpcom.IsInitialized) { Xpcom.Initialize("Firefox"); } Control = new GeckoWebBrowser(); } else { Control = new WebBrowser(); } NewExtended(); } catch (Exception ex) { Runtime.MessageCollector.AddExceptionStackTrace(Language.strHttpConnectionFailed, ex); } }
void Browser_DocumentCompleted_Init(object sender, EventArgs e) { GeckoWebBrowser br = sender as GeckoWebBrowser; if (br.Url.ToString() == "about:blank") { return; } ShowClickMsg("开始加载全国的城市数据" + br.Url.ToString()); Log.logger("开始加载全国的城市数据" + br.Url.ToString()); foreach (Skybound.Gecko.GeckoElement a in br.Document.Links) { if (a.Parent != null && a.Parent.Parent != null && a.Parent.Parent.ClassName != null && a.Parent.Parent.ClassName == "cBox" && a.Parent.Parent.ClassName != null && a.Parent.Parent.Parent.ClassName != null && a.Parent.Parent.Parent.ClassName == "s_Box_1 hidden" ) { if (!ListCItyUrl.ContainsKey(a.TextContent.Trim())) { ShowClickMsg(a.TextContent.Trim() + a.GetAttribute("href")); ListCItyUrl.Add(a.TextContent.Trim(), a.GetAttribute("href")); } } } //绑定到下拉框中啊 IEUtil.CleanCookie(); comboBox1.DataSource = ListCItyUrl.Keys.ToList(); button1.Enabled = true; }
private void Window_Loaded(object sender, RoutedEventArgs e) { var host = new WindowsFormsHost(); _Browser = new GeckoWebBrowser(); _Browser.Navigating += _Browser_Navigating; _Browser.Navigated += _Browser_Navigated; ViewModel.AddObserver(); host.Child = _Browser; webViewParent.Children.Add(host); if (!string.IsNullOrEmpty(ViewModel?.Url)) { _Browser.Navigate(ViewModel.Url); } ViewModel.DownloaderLog.CollectionChanged += (_, __) => { var l = ViewModel.DownloaderLog.LastOrDefault(); if (l != null) { downloaderLogListBox.ScrollIntoView(l); } }; }
private void InitializeComponent() { // System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(HtmlControl)); //this.m_browser = new AxSHDocVw.AxWebBrowser(); this.m_browser = new GeckoWebBrowser(); //((System.ComponentModel.ISupportInitialize)(this.m_browser)).BeginInit(); this.SuspendLayout(); // // m_browser // this.m_browser.Dock = System.Windows.Forms.DockStyle.Fill; //this.m_browser.Enabled = true; //this.m_browser.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("m_browser.OcxState"))); this.m_browser.Size = new System.Drawing.Size(320, 184); this.m_browser.TabIndex = 1; // // HtmlControl // this.Controls.AddRange(new System.Windows.Forms.Control[] { this.m_browser }); this.Name = "HtmlControl"; this.Size = new System.Drawing.Size(320, 184); //((System.ComponentModel.ISupportInitialize)(this.m_browser)).EndInit(); this.ResumeLayout(false); }
/// ----------------------------------------------------------------------------------- /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing"><c>true</c> to release both managed and unmanaged /// resources; <c>false</c> to release only unmanaged resources. /// </param> /// ----------------------------------------------------------------------------------- protected override void Dispose(bool disposing) { //Debug.WriteLineIf(!disposing, "****************** " + GetType().Name + " 'disposing' is false. ******************"); // Must not be run more than once. if (IsDisposed) { return; } if (disposing) { if (m_browser != null) { #if Old SHDocVw.WebBrowser_V1 axDocumentV1 = m_browser.GetOcx() as SHDocVw.WebBrowser_V1; if (axDocumentV1 != null) { axDocumentV1.BeforeNavigate -= new SHDocVw.DWebBrowserEvents_BeforeNavigateEventHandler(OnBeforeNavigate); } #endif m_browser.Dispose(); } if (components != null) { components.Dispose(); } } m_url = null; m_browser = null; base.Dispose(disposing); }
public PrintRoute(int sesID, int rourID) { InitializeComponent(); sessionId = sesID; routeId = rourID; db = new DBWork(); db.getPointBySession(sessionId); Gecko.Xpcom.Initialize("Firefox"); WindowsFormsHost host = new WindowsFormsHost(); browser = new GeckoWebBrowser(); browser.DocumentCompleted += (sender, e) => { DrawRoutesOnMap(); }; host.Child = browser; GridWeb.Children.Add(host); browser.Navigate(URL); setRoutes(); //point Update PrintDialog printDlg = new PrintDialog(); printDlg.PrintVisual(GridPanel, "GridPrinting"); }
private void geckoWebBrowser1_Navigating(object sender, Gecko.Events.GeckoNavigatingEventArgs e) { GeckoWebBrowser geckoWebBrowser2 = new GeckoWebBrowser(); if (this.ActiveControl == geckoWebBrowser1) { textbox_navigate.Text = geckoWebBrowser1.Url.AbsoluteUri; label_statusbrowser.Text = geckoWebBrowser1.StatusText; if (progressbar_browser.Value < 0) { progressbar_browser.Value = 0; } else if (progressbar_browser.Value > 100) { progressbar_browser.Value = 100; } } else if (this.ActiveControl == geckoWebBrowser2) { textbox_navigate.Text = geckoWebBrowser2.Url.AbsoluteUri; label_statusbrowser.Text = geckoWebBrowser2.StatusText; if (progressbar_browser.Value < 0) { progressbar_browser.Value = 0; } else if (progressbar_browser.Value > 100) { progressbar_browser.Value = 100; } } }
void ObjWebBrowser_DocumentCompleted(object sender, EventArgs e) { GeckoWebBrowser web_control = (GeckoWebBrowser)sender; Logging.Info("Browser page contents received at url {0}", web_control.Url.ToString()); web_browser_host_control.ObjWebBrowser_LoadCompleted(this); }
/// <summary> /// This code (and the two methods above) were taken from https://bitbucket.org/duanyao/moz-devtools-patch /// with thanks to Duane Yao. /// It starts up a server that allows FireFox to be used to inspect and debug the content of geckofx windows. /// See the ReadMe in remoteDebugging for instructions. /// Note that this should NOT be done in production. There are security issues. /// </summary> static void StartDebugServer() { GeckoPreferences.User["devtools.debugger.remote-enabled"] = true; // It seems these files MUST be in a subdirectory of the application directory. At least, I haven't figured out // how it can be anywhere else. Therefore the build copies the necessary files there. // If you try to change it, be aware that the chrome.manifest file contains the name of the parent folder; // if you rename the folder and don't change the name there, you get navigation errors in the code below and // remote debugging doesn't work. var chromeDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "remoteDebugging"); registerChromeDir(chromeDir); var browser = new GeckoWebBrowser(); browser.NavigationError += (s, e) => { Console.WriteLine(">>>StartDebugServer error: " + e.ErrorCode.ToString("X")); browser.Dispose(); }; browser.DocumentCompleted += (s, e) => { Console.WriteLine(">>>StartDebugServer complete"); browser.Dispose(); }; browser.Navigate("chrome://remoteDebugging/content/moz-remote-debug.html"); }
private void Plays_Load(object sender, EventArgs e) { //Starts the Gecko browser Xpcom.Initialize("Firefox"); geckoWebBrowser = new GeckoWebBrowser { Dock = System.Windows.Forms.DockStyle.Bottom, Location = new System.Drawing.Point(0, 0), MinimumSize = new System.Drawing.Size(479, 293), Name = "geckoBrowser", Size = new System.Drawing.Size(479, 293), MaximumSize = new System.Drawing.Size(479, 293), TabIndex = 1 }; //Hides the browser for the end user this.Controls.Add(geckoWebBrowser); geckoWebBrowser.Hide(); //Deletes the temp file File.Delete(AppDomain.CurrentDomain.BaseDirectory + "temporary.zip"); //Starts the process Load0SiteAsync(); }
void ObjWebBrowser_StatusTextChanged(object sender, EventArgs e) { GeckoWebBrowser web_control = (GeckoWebBrowser)sender; StatusManager.Instance.UpdateStatus("WebBrowser", web_control.StatusText); //Logging.Info("Browser:{0}", web_control.StatusText); }
private void BrowserLoad(object sender, EventArgs e) { Xpcom.Initialize("Firefox"); nsICookieManager CookieMan; CookieMan = Xpcom.GetService <nsICookieManager>("@mozilla.org/cookiemanager;1"); CookieMan = Xpcom.QueryInterface <nsICookieManager>(CookieMan); CookieMan.RemoveAll(); GeckoPreferences.User["browser.xul.error_pages.enabled"] = false; GeckoPreferences.User["browser.download.manager.showAlertOnComplete"] = false; GeckoPreferences.User["security.warn_viewing_mixed"] = false; GeckoPreferences.User["privacy.popups.showBrowserMessage"] = false; GeckoPreferences.User["browser.xul.error_pages.enabled"] = true; browserPanel.Visible = false; browser = new GeckoWebBrowser() { Dock = DockStyle.Fill }; browser.NoDefaultContextMenu = true; browser.Navigated += BrowserNavigated; Controls.Add(browser); browser.Navigate(Url); }
/// <summary> /// create browser /// </summary> /// <returns></returns> private static GeckoWebBrowser CreateBrowserInternal() { GeckoWebBrowser browser = new GeckoWebBrowser(); browser.CreateControl(); return(browser); }
private void AdditionalDesignSettings() { this.Dock = DockStyle.Fill; UrlTextBox = new TextBox() { Width = UsrCntrlBrowser_Table_wrapper.Width, Font = new Font("Arial", 10f) }; GoButton = new Button() { Text = "Go", Width = 45, FlatStyle = FlatStyle.Flat, Font = new Font("Arial", 9f) }; BackButton = new Button() { Text = "<", Width = 25, FlatStyle = FlatStyle.Flat }; geckoWebBrowser = new GeckoWebBrowser { Dock = DockStyle.Fill }; Gecko.CertOverrideService.GetService().ValidityOverride += MdiMain_UsrControl_Browser_ValidityOverride; UsrCntrlBrowser_Table_wrapper.Controls.Add(UrlTextBox, 1, 0); UsrCntrlBrowser_Table_wrapper.Controls.Add(GoButton, 2, 0); UsrCntrlBrowser_Table_wrapper.Controls.Add(BackButton, 0, 0); UsrCntrlBrowser_Table_wrapper.Controls.Add(geckoWebBrowser, 0, 1); UsrCntrlBrowser_Table_wrapper.SetColumnSpan(geckoWebBrowser, 3); GoButton.Click += GoButton_Click; BackButton.Click += BackButton_Click; UrlTextBox.KeyPress += UrlTextBox_KeyPress; geckoWebBrowser.DomContextMenu += GeckoWebBrowser_DomContextMenu; //geckoWebBrowser.DomMouseOver += GeckoWebBrowser_DomMouseOver; //geckoWebBrowser.DomMouseOut += GeckoWebBrowser_DomMouseOut; }
public void SpiderMonkeyEntryPointTests() { foreach (var entryPoint in EntryPoints()) { var dummy = new GeckoWebBrowser(); dummy.CreateControl(); var dummyHandle = dummy.Handle; // Try us around the using because, AutoJSContext can throw exception caused by the junk arguments we pass to EntryPoints. try { using (var cx = new AutoJSContext(GlobalJSContextHolder.BackstageJSContext)) { entryPoint.Value(IntPtr.Zero); } } catch (Exception e) { if (e is EntryPointNotFoundException) { Assert.Fail(String.Format("{0} EntryPoint is wrong: {1}", entryPoint.Value, e.Message)); } } dummy.Dispose(); } }
public CSLProcessorOutputConsumer(string script_directory, string citations_javascript, BibliographyReadyDelegate brd, object user_argument) { WPFDoEvents.AssertThisCodeIsRunningInTheUIThread(); this.citations_javascript = citations_javascript; this.brd = brd; this.user_argument = user_argument; // Create the browser Logging.Info("Creating web browser for InCite CSL processing"); web_browser = new GeckoWebBrowser(); web_browser.CreateControl(); // Add the name of the script to run script_directory = Path.GetFullPath(Path.Combine(script_directory, @"runengine.html")); script_directory = script_directory.Replace(@"\\", @"\"); script_directory = script_directory.Replace(@"//", @"/"); Uri uri = new Uri(script_directory); Logging.Info("CSLProcessorOutputConsumer is about to browse to {0}", uri); // This is the only way we can communicate from JavaScript to .NET!! web_browser.EnableConsoleMessageNotfication(); web_browser.ConsoleMessage += web_browser_ConsoleMessage; // Kick off citeproc computation web_browser.Navigate(uri.ToString()); }
private static Image ReadBitmap(GeckoWebBrowser webBrowser, CaptureZone captureZone, IActiveDocument activeDocument) { webBrowser.Stop(); var rectangle = captureZone.GetZone(activeDocument); if (rectangle.Width == 0 || rectangle.Height == 0) { throw new CaptureEngineException($"Selected zone is 0 area {rectangle}", CaptureEngineState.InvalidCaptureZone); } try { return(webBrowser.GetBitmap( (uint)rectangle.X, (uint)rectangle.Y, (uint)rectangle.Width, (uint)rectangle.Height)); } catch (InvalidOperationException) { throw new CaptureEngineException("Out of memory. Result bitmap size is too large", CaptureEngineState.InternalError); } }
protected void AddTab() { var tabPage = new TabPage(); tabPage.Text = "blank"; var browser = new GeckoWebBrowser(); browser.Dock = DockStyle.Fill; tabPage.DockPadding.Top = 25; tabPage.Dock = DockStyle.Fill; // add a handler showing how to view the DOM // browser.DocumentCompleted += (s, e) => TestQueryingOfDom(browser); // add a handler showing how to modify the DOM. // browser.DocumentCompleted += (s, e) => TestModifyingDom(browser); AddToolbarAndBrowserToTab(tabPage, browser); m_tabControl.TabPages.Add(tabPage); tabPage.Show(); m_tabControl.SelectedTab = tabPage; // Uncomment this to stop links from navigating. // browser.DomClick += StopLinksNavigating; // Demo use of ReadyStateChange. browser.ReadyStateChange += (s, e) => this.Text = browser.Document.ReadyState; }
protected virtual void Dispose(bool disposing) { Logging.Debug("CSLProcessorOutputConsumer::Dispose({0}) @{1}", disposing, dispose_count); WPFDoEvents.InvokeInUIThread(() => { WPFDoEvents.SafeExec(() => { if (dispose_count == 0) { // Get rid of managed resources web_browser?.Dispose(); } }); WPFDoEvents.SafeExec(() => { web_browser = null; brd = null; user_argument = null; }); WPFDoEvents.SafeExec(() => { position_to_inline.Clear(); inline_to_positions.Clear(); position_to_text.Clear(); bibliography.Clear(); logs.Clear(); }); ++dispose_count; }); }
/// <summary> /// Constructor. /// </summary> public MGAHtmlHelpDialog(FdoCache cache, Mediator mediator, string sMorphemeForm) : base(cache, mediator, sMorphemeForm) { #if __MonoCS__ m_browser = new GeckoWebBrowser { Dock = DockStyle.Fill, Location = new Point(0, 0), TabIndex = 1, MinimumSize = new Size(20, 20), NoDefaultContextMenu = true }; splitContainerHorizontal.Panel2.Controls.Add(m_browser); #else m_webBrowserInfo = new WebBrowser { Dock = DockStyle.Fill, Location = new Point(0, 0), TabIndex = 1, IsWebBrowserContextMenuEnabled = false, MinimumSize = new Size(20, 20), Name = "webBrowserInfo", WebBrowserShortcutsEnabled = false }; splitContainerHorizontal.Panel2.Controls.Add(m_webBrowserInfo); #endif }
public frm_Main(ObservableCollection <LogEvent> LogEvents) { InitializeComponent(); // Initialize Browser Xpcom.Initialize("Firefox"); BrowserContainer browserContainer = new BrowserContainer() { Dock = DockStyle.Fill }; this.splitContainerControl1.Panel2.Controls.Add(browserContainer); this.Browser = browserContainer.Browser; Browser.UseHttpActivityObserver = true; Browser.ObserveHttpModifyRequest += Browser_ObserveHttpModifyRequest; Browser.DocumentCompleted += Browser_DocumentCompleted; ResponseObserver responseObserver = new ResponseObserver(); responseObserver.AuthResponseReceived += ResponseObserver_AuthResponseReceived; responseObserver.SearchResponseReceived += ResponseObserver_SearchResponseReceived;; ObserverService.AddObserver(responseObserver); // Initialize Variables this.LogEvents = LogEvents; this.countryWiseData = new Dictionary <string, List <ExportData> >(); }
//private static bool IsSingleInstance() //{ // _mutex = new Mutex(false, "RelayMutex"); // GC.KeepAlive(_mutex); // try // { // return _mutex.WaitOne(0, false); // } // catch (AbandonedMutexException) // { // _mutex.ReleaseMutex(); // return _mutex.WaitOne(0, false); // } //} protected override void OnStartup(System.Windows.StartupEventArgs e) { bool createdMutex; this.ShutdownMode = IsRelease == true ? ShutdownMode.OnExplicitShutdown : ShutdownMode.OnMainWindowClose; _mutex = new Mutex(true, "MyApplicationMutex", out createdMutex); GeckoWebBrowser.UseCustomPrompt(); Xpcom.Initialize(System.AppDomain.CurrentDomain.BaseDirectory + "xulrunner"); GeckoPreferences.Default["extensions.blocklist.enabled"] = false; RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly; if (!createdMutex) { _mutex = null; MessageBox.Show("The application is already running."); Application.Current.Shutdown(); return; } else { ; } base.OnStartup(e); }
public static byte[] CapturePng( GeckoWebBrowser browser ) { // TODO req. mono.cairo //var src_context = Gdk.CairoHelper.Create(win); //var src_surface = src_context.Target; //var dst_surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, win.Allocation.Width, win.Allocation.Height); //var dst_context = new Cairo.Context(dst_surface); //dst_context.SetSourceSurface(src_surface, 0, 0); //dst_context.Paint(); //dst_surface.WriteToPng("screenshot.png"); return null; }
public static Bitmap CanvasGetBitmap(GeckoWebBrowser browser, uint width, uint height) { return CanvasGetBitmap(browser, 0, 0, width, height); }
/// <summary> /// Capture whole WebBrowser window (Only on MS Windows Platform) /// </summary> /// <returns></returns> public static byte[] CapturePng(GeckoWebBrowser browser) { return WindowsCapturePng(browser.Handle); }
/// <summary> /// Return a Bitmap Image of the current WebBrowsers Rendered page. /// </summary> /// <param name="xOffset"></param> /// <param name="yOffset"></param> /// <param name="width">Width of the bitmap</param> /// <param name="height">Height of the bitmap</param> /// <returns></returns> public static Bitmap GetBitmap(GeckoWebBrowser browser, uint xOffset, uint yOffset, uint width, uint height) { return CanvasGetBitmap(browser, xOffset, yOffset, width, height); }
/// <summary> /// Get a bitmap of the current browsers Window. /// Works on Visible or InVisible windows. /// Not captures plugin (Flash,etc...) windows /// </summary> /// <param name="xOffset"></param> /// <param name="yOffset"></param> /// <param name="width">Width length of returned bitmap in pixels</param> /// <param name="height">Height length of returned bitmap in pixels</param> /// <returns></returns> /// <throws>ArgumentException if width or height is zero</throws> public static Bitmap CanvasGetBitmap(GeckoWebBrowser browser, uint xOffset, uint yOffset, uint width, uint height) { var bytes = ImageCreator.CanvasGetPngImage(browser, xOffset, yOffset, width, height); //var bytes = browser.CanvasGetPngImage(xOffset, yOffset, width, height); return (Bitmap)Image.FromStream(new System.IO.MemoryStream(bytes)); }