Как настроить Gecko с помощью приложения Vb.NET Forms

Мне была поставлена ​​задача интегрировать компонент браузера Gecko в существующий элемент управления winform, но проблема, с которой я столкнулся, заключается в том, как настроить dll, я также пытаюсь использовать другую версию, но не повезло, на данный момент она не загружает dll и дает Ошибка

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

Я скачал отдельно по данной ссылке. Xulrunner последний, а также 29, но он говорит:

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

Импорт System.Xml Импорт Gecko Импорт Microsoft.Win32

Открытый класс Form1

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

Конец класса

пожалуйста, помогите мне, если кто-то уже сделал с этим.


person DareDevil    schedule 23.07.2016    source источник


Ответы (1)


Наконец-то мне это удалось,

На момент написания я выбрал последнюю версию GeckoFX-33.0, и XULRunner 33.1.,

  • Распакуйте GeckoFX-330.zip, вы получите следующие файлы:  введите описание изображения здесь
  • Файлы GeckoFx  введите здесь описание изображения

  • Добавьте ссылки на библиотеки DLL, как показано выше, нажмите "Обзор" и выберите Geckofx-Core.dll и Geckofx-Winforms.dll  введите описание изображения здесь  введите описание изображения здесь

  • На панели инструментов щелкните правой кнопкой мыши, затем выберите «Выбрать элемент», выберите Geckofx-Winforms.dll, и элемент управления Winform Gecko отобразится на панели инструментов  введите описание изображения здесь  введите описание изображения  здесь
  • Перетащите элемент управления GeckoWebBrowser в конструктор winform и назовем его «обзор»  введите описание изображения здесь
  • В файле form1.cs добавьте ниже код:  введите описание изображения здесь И НАКОНЕЦ КОД:

                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);
    }
                }
            }
    
  • Вот результат:  введите описание изображения здесь

person DareDevil    schedule 23.07.2016
comment
Кстати, если единственная причина неиспользования элемента управления WebBrowser заключается в том, что он не отображает сайт правильно, взгляните на этот опубликовать. Надеюсь, вы найдете это полезным :) - person Reza Aghaei; 28.07.2016