๋ฐ˜์‘ํ˜•

CefSharp์ด๋ž€?

CefSharp ๋กœ๊ณ 
CefSharp ๋กœ๊ณ 

CefSharp์€ Google Chrome์˜ ์˜คํ”ˆ ์†Œ์Šค ๋ฒ„์ „์ธ Chrominum Embedded Framework(CEF)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋ธŒ๋ผ์šฐ์ € ์ปจํŠธ๋กค(browser control)์ž…๋‹ˆ๋‹ค. CefSharp์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ C# ๋˜๋Š” VB.NET์—์„œ ๋ชจ๋“  ๊ธฐ๋Šฅ์˜ ํ‘œ์ค€์ด ํ˜ธํ™˜๋˜๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ CefSharp๋Š” ์ตœ์‹  ์›น ํ‘œ์ค€์„ ์ˆ˜์šฉํ•˜๊ณ  HTML5, JavaScript, CSS3 ๋ฐ HTML 5 ์˜ค๋””์˜ค ๋ฐ ๋น„๋””์˜ค ์š”์†Œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. 3D ์ฝ˜ํ…์ธ ๋Š” ํ•˜๋“œ์›จ์–ด ๊ฐ€์† ๋ Œ๋”๋ง์„ ์œ„ํ•ด OpenGL/DirectX๋ฅผ ์‚ฌ์šฉํ•˜๋Š” WebGL์„ ํ†ตํ•ด ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ PDF๋ฅผ ์œ„ํ•œ ์ž„๋ฒ ๋””๋“œ ๋ชจ๋“ˆ๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ CefSharp์€ ์ „์ฒด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ C#๊ณผ C++/CLI๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด์„ ์Šค๋Š” BSD์ด๋ฉฐ, ์ด๋Š” ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด์ฃ .

CefSharp์— ๋Œ€ํ•œ ์†Œ๊ฐœ์™€ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ™ˆํŽ˜์ด์ง€๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

https://cefsharp.github.io/

 

CefSharp - Fast web browser for WinForms and WPF Apps

HTML5, JavaScript and PDF supported CefSharp embraces modern web standards, and supports HTML5, JavaScript, CSS3 and HTML5 audio/video elements. 3D content is supported via WebGL which uses OpenGL/DirectX for hardware accelerated rendering. CefSharp includ

cefsharp.github.io

 

CefSharp๊ณผ WebBrowser Control์˜ ์ฐจ์ด์ 

C# WebBrowser Control์„ ์‚ฌ์šฉํ•œ Naver ๋ฉ”์ธ ํ™”๋ฉด
C# WebBrowser Control์„ ์‚ฌ์šฉํ•œ Naver ๋ฉ”์ธ ํ™”๋ฉด

๊ทธ๋Ÿฐ๋ฐ C# WinForm์—๋Š” ์ด๋ฏธ WebBrowser๋ผ๋Š” ์ปจํŠธ๋กค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ตณ์ด CefSharp์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ผ๊นŒ์š”? ๊ทธ ์ด์œ ๋Š”, WebBrowser ์ปจํŠธ๋กค์€ IE7(Internet Explorer 7)์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ด์ฃ . ๋ฌผ๋ก , ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๋ณ€๊ฒฝ์œผ๋กœ IE11๋กœ ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ด์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ Stack overflow ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.).

https://stackoverflow.com/questions/17922308/use-latest-version-of-internet-explorer-in-the-webbrowser-control

 

Use latest version of Internet Explorer in the webbrowser control

The default version of the webbrowser control in a C# Windows Forms application is 7. I have changed to 9 by the article Browser Emulation, but how is it possible to use the latest version of the

stackoverflow.com

IE๋ผ๊ณ  ํ•ด์„œ ๋ฌธ์ œ์ ์ด ๊ฐ€๋“ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ์–ผ๋งˆ ์ „ ํ‹ฐ์Šคํ† ๋ฆฌ OpenAPI๋กœ ๊ฐœ๋ฐœํ•˜๋˜ ์ค‘ ์–ด๋Š ๋‚ ๋ถ€ํ„ฐ ์Šคํฌ๋ฆฝํŠธ ์˜ค๋ฅ˜๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝํ—˜์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ „๋‚ ๊นŒ์ง„ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ๋Š”๋ฐ ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ๊ณ„์† ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋”๊ตฐ์š”. ์›น ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ๊ฒฝํ—˜์ด ์—†๋˜ ํ„ฐ๋ผ, ์Šคํฌ๋ฆฝํŠธ ์˜ค๋ฅ˜์— ๋Œ€ํ•ด ์ฐพ์•„๋ณด๋‹ˆ IE์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด ์ˆ˜๋‘๋ฃฉํ•˜๊ฒŒ ๋‚˜์˜ค๋”๊ตฐ์š”. ๋„์ €ํžˆ ํ•ด๊ฒฐ์ด ๋˜์ง€ ์•Š์•„ ์นด์นด์˜ค์— ๋ฌธ์˜ํ•ด๋ณด๋‹ˆ ํ‹ฐ์Šคํ† ๋ฆฌ๋Š” IE ๋ธŒ๋ผ์šฐ์ € ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š๊ณ , ํฌ๋กฌ ๋˜๋Š” ํŒŒ์ด์–ดํญ์Šค ๋ธŒ๋ผ์šฐ์ € ๋“ฑ์—์„œ ์ด์šฉ์„ ํ•˜๋ผ๋Š” ๋‹ต๋ณ€์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ CefSharp์œผ๋กœ ๋ธŒ๋ผ์šฐ์ € ์ปจํŠธ๋กค๋งŒ ๋ณ€๊ฒฝํ–ˆ๋Š”๋ฐ ์•„์ฃผ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ๋์Šต๋‹ˆ๋‹ค. ์ •๋ฆฌํ•˜๋ฉด, C# WebBrowser ์ปจํŠธ๋กค์€ IE ๊ธฐ๋ฐ˜์ด๊ณ , CefSharp์€ Chrominum ๊ธฐ๋ฐ˜์ด๋ผ๋Š” ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

C#์—์„œ CefSharp ์‚ฌ์šฉ์„ ์œ„ํ•œ ์ค€๋น„ ๋‹จ๊ณ„

Visual Studio์—์„œ ExamCefSharp๋ผ๋Š” ์ด๋ฆ„์˜ C# WinForm ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

WinForm ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
WinForm ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

NuGet์—์„œ CefSharp์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋งŽ์€ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ ์ค‘ CefSharp.WinForms๋ฅผ ์„ ํƒํ•˜๊ณ , ํ”„๋กœ์ ํŠธ์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

NuGet CefSharp.WinForms ์„ค์น˜ํ•˜๊ธฐ
NuGet CefSharp.WinForms ์„ค์น˜ํ•˜๊ธฐ

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ์ฐธ์กฐ์— CefSharp ๊ด€๋ จ dll์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

CefSharp ์ฐธ์กฐ dll ๋ชฉ๋ก
CefSharp ์ฐธ์กฐ dll ๋ชฉ๋ก

 

 

C#์—์„œ CefSharp ์‚ฌ์šฉํ•˜๊ธฐ

CefSharp์„ ์„ค์น˜ํ•ด๋„ ๋„๊ตฌ์ƒ์ž์— CefSharp ์ปจํŠธ๋กค์ด ์ถ”๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ˜น์‹œ๋‚˜ dll์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ปจํŠธ๋กค์ด ์ƒ๊ธธ๊นŒ ์‹ถ์—ˆ์œผ๋‚˜ ์ถ”๊ฐ€๊ฐ€ ๋˜์ง€ ์•Š๋”๊ตฐ์š”. ๊ทธ๋ž˜์„œ ๋ณธ๋ฌธ์—์„œ๋Š” ์ฝ”๋“œ์—์„œ ์ง์ ‘ ๊ฐ์ฒด ์ƒ์„ฑ ํ›„ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;

namespace ExamCefSharp
{
    public partial class Form1 : Form
    {
        private ChromiumWebBrowser _chrome = null;
        public Form1()
        {
            InitializeComponent();

            InitializeCefSharp();
        }

        private void InitializeCefSharp()
        {
            //์ฟ ํ‚ค ๋ฐ์ดํ„ฐ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
            CefSettings settings = new CefSettings();
            settings.CachePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\CEF";
            Cef.Initialize(settings);
            
            //์›น ์‚ฌ์ดํŠธ ์ด๋™
            _chrome = new ChromiumWebBrowser("https://naver.com");
            //ํ•œ๊ตญ์–ด ์„ค์ •
            _chrome.BrowserSettings.AcceptLanguageList = "ko-KR";
            //Main Form์— CefSharp์ปจํŠธ๋กค ์ถ”๊ฐ€
            this.Controls.Add(_chrome);
            //Main Form ์ „์ฒด ์˜์—ญ์— ๋ถ™์ด๊ธฐ
            _chrome.Dock = DockStyle.Fill;
            //ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์™„๋ฃŒ ์ด๋ฒคํŠธ
            _chrome.LoadingStateChanged += OnLoadingStateChanged;
        }

        private void OnLoadingStateChanged(object sender, LoadingStateChangedEventArgs args)
        {
            if (!args.IsLoading)
            {
                MessageBox.Show("ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์™„๋ฃŒ!");
            }
        }
    }
}

์ „์ฒด ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ์‚ฌ์šฉ์ด ์•„์ฃผ ๊ฐ„๋‹จํ•˜์ฃ ?

์ฟ ํ‚ค ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด 28~30๋ฒˆ ์งธ ๋ผ์ธ์˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์™„๋ฃŒ ์ด๋ฒคํŠธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด, 41๋ฒˆ ์งธ ๋ผ์ธ์˜ LoadingStateChanged ์ด๋ฒคํŠธ๋ฅผ ๋“ฑ๋กํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์œ„ ์ฝ”๋“œ๋ฅผ ๋™์ž‘ํ•œ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

CefSharp Control์„ ์‚ฌ์šฉํ•œ Naver ๋ฉ”์ธ ํ™”๋ฉด
CefSharp Control์„ ์‚ฌ์šฉํ•œ Naver ๋ฉ”์ธ ํ™”๋ฉด

C# WebBrowser Control์„ ์‚ฌ์šฉํ•œ ๊ฒฐ๊ณผ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋ฒ•๋„ ์‰ฌ์šฐ๋‹ˆ IE๊ฐ€ ๋ง˜์— ๋“ค์ง€ ์•Š๋‹ค๋ฉด CefSharp์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ฒจ๋ถ€๋œ ์˜ˆ์ œ ์ฝ”๋“œ์—๋Š” CefSharp Package ์šฉ๋Ÿ‰์ด ํฐ ๊ด€๊ณ„๋กœ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋กœ NuGet ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜์‹œ๋ฉด ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ExamCefSharp.zip
0.01MB

๋ฐ˜์‘ํ˜•