[.Net] C#์์ 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์ ๋ํ ์๊ฐ์ ๊ธฐ๋ฅ์ ๋ํด ์์ธํ ๋ด์ฉ์ ํํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์๋ฉด ๋๊ฒ ์ต๋๋ค.
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# WinForm์๋ ์ด๋ฏธ WebBrowser
๋ผ๋ ์ปจํธ๋กค์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ตณ์ด CefSharp์ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ๊ฐ ๋ฌด์์ผ๊น์? ๊ทธ ์ด์ ๋, WebBrowser ์ปจํธ๋กค์ IE7(Internet Explorer 7)์ ์ฌ์ฉํ๋ค๋ ๊ฒ์ด์ฃ . ๋ฌผ๋ก , ๋ ์ง์คํธ๋ฆฌ ๋ณ๊ฒฝ์ผ๋ก IE11๋ก ๋ฒ์ ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค(์ด์ ๋ํ ๋ด์ฉ์ ์๋ Stack overflow ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์.).
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 ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
NuGet์์ CefSharp์ ๊ฒ์ํ๋ฉด ๋ง์ ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค. ๊ทธ ์ค CefSharp.WinForms
๋ฅผ ์ ํํ๊ณ , ํ๋ก์ ํธ์ ์ค์นํฉ๋๋ค.
์ค์น๊ฐ ์๋ฃ๋๋ฉด, ์๋์ ๊ฐ์ด ์ฐธ์กฐ์ 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
์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํ๋ฉด ๋ฉ๋๋ค. ์ ์ฝ๋๋ฅผ ๋์ํ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ต๋๋ค.
C# WebBrowser Control์ ์ฌ์ฉํ ๊ฒฐ๊ณผ์ ๋์ผํฉ๋๋ค. ์ฌ์ฉ๋ฒ๋ ์ฌ์ฐ๋ IE๊ฐ ๋ง์ ๋ค์ง ์๋ค๋ฉด CefSharp์ ์ฌ์ฉํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ค.
์ฒจ๋ถ๋ ์์ ์ฝ๋์๋ CefSharp Package ์ฉ๋์ด ํฐ ๊ด๊ณ๋ก ํฌํจ๋์ด ์์ง ์์ต๋๋ค. ๋ฐ๋ก NuGet ํจํค์ง๋ฅผ ์ค์นํ์๋ฉด ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
'Programming > .Net' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[.Net] Node Editor UI ํ๋ ์์ํฌ ์๊ฐ - NodeNetwork
[.Net] Node Editor UI ํ๋ ์์ํฌ ์๊ฐ - NodeNetwork
2021.11.28 -
[.Net] C# WinForm์์ ์ฌ๋ผ์ด๋ฉ ๋ฉ๋ด(Sliding menu), ์ฌ์ด๋๋ฐ(Sidebar) ์ฝ๊ฒ ๋ง๋ค๊ธฐ (์์ ํฌํจ)
[.Net] C# WinForm์์ ์ฌ๋ผ์ด๋ฉ ๋ฉ๋ด(Sliding menu), ์ฌ์ด๋๋ฐ(Sidebar) ์ฝ๊ฒ ๋ง๋ค๊ธฐ (์์ ํฌํจ)
2021.09.26 -
[.Net] C#์์ JPEG, PNG๋ฅผ WebP๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ (์์ ํฌํจ)
[.Net] C#์์ JPEG, PNG๋ฅผ WebP๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ (์์ ํฌํจ)
2021.08.30 -
[.Net] C# Syntax Highlighting ์๋ํฐ๋ฅผ ์ํ ScintillaNET ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
[.Net] C# Syntax Highlighting ์๋ํฐ๋ฅผ ์ํ ScintillaNET ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
2021.08.05