0

I have been given a task to integrate Gecko browser component to a existing winform control, but the issue i m facing is how to configure dll, I am trying with different version as well, but no luck, at point it does not load dll and gives the error

Unable to find an entry point named 'NS_Alloc' in DLL 'xul'.

I have downloaded separately from given link. Xulrunner the latest and also the 29 but it says ,

An error occurred creating the form. See Exception.InnerException for details. The error is: Unable to load DLL 'xul': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

Imports System.IO

Imports System.Xml Imports Gecko Imports Microsoft.Win32

Public Class Form1

Public Sub New()
    InitializeComponent()
    'D:\xulrunner\bin
    Xpcom.Initialize("D:\\xulrunner\\") 'xulrunner
    'Xpcom.Initialize("C:\Program Files (x86)\Mozilla Firefox\")
End Sub

End Class

please help me out if anybody has already done with that.

1 Answer 1

2

Finally I managed to do so,

At the time of writing, I choose the latest version GeckoFX-33.0, and XULRunner 33.1. ,

  • Unpack the GeckoFX-330.zip, you will get below files: enter image description here
  • GeckoFx Files enter image description here

  • Add references to the dlls as shown above, click browse and select the Geckofx-Core.dll and Geckofx-Winforms.dll enter image description here enter image description here

  • In the toolbox, right click, and then select “Choose Item”, select Geckofx-Winforms.dll, and the Gecko winform control will be shown in the toolbox enter image description hereenter image description here
  • Drag a GeckoWebBrowser control to the winform designer, and let’s call it “browse” enter image description here
  • In the form1.cs file, add below code: enter image description here AND FINALLY CODE:

                using System;
            using System.Collections.Generic;
            using System.ComponentModel;
            using System.Data;
            using System.Drawing;
            using System.Linq;
            using System.Text;
            using System.Windows.Forms;
            using System.Drawing.Printing;
    
            namespace GECKO_FORMS
            {
                public partial class Form1 : Form
                {
                    Bitmap bitmap;
                    Bitmap memoryImage;
                    public Form1()
                    {
                        InitializeComponent();
                        Gecko.Xpcom.Initialize(@"D:\\xulrunner\bin\\");
                    }              
                    private void cmdbrowse_Click(object sender, EventArgs e)
                    {
                        try
                        {
                            if (browse.IsBusy == false)
                            {
                                browse.Navigate(textBox1.Text);
                            }
                            else
                            {
                                lbox.Items.Add(browse.StatusText);
                                lbox.Items.Add(browse.History);
                            }               
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message);
                        }
                    }
    
                    private void cmdstop_Click(object sender, EventArgs e)
                    {
                        browse.Stop();
                    }
    
                                                                    private void browse_ProgressChanged(object sender, Gecko.GeckoProgressEventArgs e)
    {
        lbox.Items.Add(e.CurrentProgress + " of " + e.MaximumProgress);
    }
                                                                                                                                    private void CaptureScreen()
    {
        Graphics myGraphics = this.CreateGraphics();
        Size s = this.Size;
        memoryImage = new Bitmap(s.Width, s.Height, myGraphics);
        Graphics memoryGraphics = Graphics.FromImage(memoryImage);
        memoryGraphics.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, s);
    }
    
                                                                                                                                                                                                                                                                                                                                                                                                                                    private void cmdprint_Click(object sender, EventArgs e)
    {
        try
        {
            CaptureScreen();
            pDoc.Print();
            ////Add a Panel control.
            //Panel panel = new Panel();
            //this.Controls.Add(panel);
            ////Create a Bitmap of size same as that of the Form.
            //Graphics grp = panel.CreateGraphics();
            //Size formSize = this.ClientSize;
            //bitmap = new Bitmap(formSize.Width, formSize.Height, grp);
            //grp = Graphics.FromImage(bitmap);
    
            ////Copy screen area that that the Panel covers.
            //Point panelLocation = PointToScreen(panel.Location);
            //grp.CopyFromScreen(panelLocation.X, panelLocation.Y, 0, 0, formSize);
    
            ////Show the Print Preview Dialog.
            //ppd.Document = pDoc;
            //ppd.PrintPreviewControl.Zoom = 1;
            //ppd.ShowDialog();
        }
        catch (Exception ex)
        {
        }
    }        
    
                                                                    private void pDoc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
        e.Graphics.DrawImage(bitmap, 0, 0);
    }
                }
            }
    
  • Here is output: enter image description here

Sign up to request clarification or add additional context in comments.

1 Comment

By the way, if the only reason of not using the WebBrowser control is because it doesn't show the site correctly, take a look at this post. Hope you find it helpful :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.