White Whale Studio

C# Firefox Runtime Package - XulRunner - Gecko 본문

IT Engineering/C#.net

C# Firefox Runtime Package - XulRunner - Gecko

glorymind 2017. 2. 15. 14:01
반응형


해당 패키지 사용목적은 C# 프로그램에서 호환성이 떨어지는 기본 WebBrowser 컨트롤을 대체할 목적으로 사용됩니다.

Mozilla FireFox의 엔진입니다.


우선 위의 참고 사이트에서 필요한 압축파일을 다운받습니다.

버전은 동일하게 맞춰주시면 됩니다. 저의 경우 22.0X

XulRunner, GeckoFX DLL이 포함된 압축파일 2개

XulRunner 22.0 버전

http://ftp.mozilla.org/pub/xulrunner/releases/22.0/runtimes/


혹시나 하는 마음에 올려보는 압축파일들


GeckoFX는 버전별로 BitBucket에 올라가 있는데 저는 하위 버전이 필요해서 22.0.0X 버전을 다운받았습니다.



다운을 받고 적당한 위치에 풀어줍니다.

DLL은 프로젝트에서 참조를 하면 되는데 문제는 XulRunner입니다.

Source Code에서 이 XulRunner의 압축푼 경로를 참조해야하기 때문에 XulRunner 폴더는 추적이 가능해야합니다.

저는 C:\xulrunner 와 같이 압축을 풀어 위치시켰습니다.


자, 이제 순서대로 진행해보겠습니다.


1. DLL 추가


다운로드 받은 DLL중에서 Core와 Winforms가 달린 DLL들을 참조합니다.


2. Using 추가 및 소스 코딩

using Gecko;

using Gecko.Windows;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
     public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            InitBrowser();
        }
 
        private GeckoWebBrowser _browser = default(GeckoWebBrowser);
        public void InitBrowser()
        {
            this._browser = new GeckoWebBrowser();
            this._browser.Dock = DockStyle.Fill;
            this.Controls.Add(this._browser);
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            if (this._browser != null)
            {
                this._browser.Navigate("http://www.0000.com");                
            }
        }
    }
cs


간단하게 구성을 했지만 위와 같이 구성을 하시면 됩니다.


또 반드시 추가적으로 


Xpcom.Initialize(@"C:\xulrunner"); 과 같이 XulRunner 폴더 경로를 사용하여 초기화를 해주셔야합니다.


위치는 필요에 따라 변경가능합니다만, 주의 사항은 

1
2
3
4
            if (Xpcom.IsInitialized)
            {
                Xpcom.Initialize(@"C:\xulrunner");
            }
cs


이와 같이 초기화를 중복해서 하지 않도록 하는것이 좋습니다. 

초기에 멋모르고 화면 로드시마다 Xpcom.Initialize(@"C:\xulrunner");

코드를 실행하게 두었더니 시스템 메모리를 건드려서 프로그램이 아주 죽어버리는 치명적인 문제가 발생했습니다.

참고하시기 바랍니다.


포스팅한 내용들은 아주 간단하게 웹페이지를 띄우는 정도까지만 구현된 내용이며 추가적인 사항은 필요에 따라 참조 사이트를

참조하시기 바랍니다.

반응형
Comments