Chrome과 같은 더 나은 브라우저로 .NET WebBrowser 컨트롤을 대체 하시겠습니까?
최신 브라우저를 .NET 응용 프로그램에 삽입하는 비교적 쉬운 방법이 있습니까?
지금까지 내가 이해하는 한, WebBrowser
컨트롤에 대한 래퍼입니다 IE 는 매우 이전 버전처럼 보이는 것을 제외하고는 문제가되지 않을 것이다, IE 모두와 함께, CSS 나사 업, 잠재적 인 보안 위험의 측면에서 수반 (렌더링 엔진이 패치되지 않은 경우, 실제 버퍼 오버 플로우 문제가 해결 될 것으로 기대할 수 있습니까?) 및 기타 문제.
내가 사용하고 비주얼 스튜디오 C #을 (익스프레스 에디션 - 그것은 여기에 어떤 차이가 있습니까?)
좋은 웹 브라우저를 내 응용 프로그램에 통합하고 싶습니다. 일부에서는 사용자 등록 프로세스를 처리하고 웹 사이트의 일부 기능과 다른 순서와의 인터페이스를 처리하는 데 사용하지만 더 많은 제어가 필요한 다른 응용 프로그램을 염두에두고 있습니다.
나는 필요하다:
- 내 응용 프로그램의 창 안에 통합 할 수있는 브라우저 (별도의 창이 아님)
- 최신 브라우저와 동등한 CSS, js 및 기타 웹 기술 지원
- "탐색", "뒤로", "다시로드"와 같은 기본 브라우저 기능 ...
- 페이지 코드 및 출력에 대한 자유 액세스.
Chrome은 BSD 라이센스하에 있기 때문에 Chrome에 대해 생각했지만 최신 버전의 IE에 만족할 것입니다.
가능한 한 간단하게 유지하고 싶습니다. 기존 WebBrowser
컨트롤을 패치 할 수 있다면 가장 좋을 것입니다.이 컨트롤은 이미 필요한 것의 약 70 %를 수행하지만 가능하지 않다고 생각합니다.
Mozilla에 대한 activeX 컨트롤 ( http://www.iol.ie/~locka/mozilla/control.htm ) 을 찾았 지만 이전 버전 인 것 같으므로 반드시 개선 된 것은 아닙니다.
나는 제안에 개방적이다
Checkout CefSharp .Net 바인딩, 커뮤니티에서 고맙게 받아 들인 멋진 프로젝트로 돌아 오기 시작한 프로젝트.
이 프로젝트는 Chromium Embedded Framework를 감싸고 있으며 Rdio의 Windows 클라이언트, Windows 용 Facebook Messenger 및 Windows 용 Github를 비롯한 여러 주요 프로젝트에서 사용되었습니다.
WPF 및 Winforms에 대한 브라우저 컨트롤을 제공하며 수많은 기능과 확장 점을 가지고 있습니다. Chromium을 기반으로하기 때문에 물집도 빠릅니다.
NuGet에서 가져 오십시오. Install-Package CefSharp.Wpf
또는Install-Package CefSharp.WinForms
예를 확인하고 의견 / 피드백 / 풀 요청을 제공하십시오 : https://github.com/cefsharp/CefSharp
BSD 라이센스
모르는 경우 Chrome은 웹킷을 사용하며 Safari에서도 사용됩니다. 같은 맥락의 몇 가지 질문이 있습니다.
웹 키트 하나는 다른 답변 상태가 좋지 않기 때문에 하나의 버전은 더 이상 작동하지 않으며 (Google 코드 하나) 모노 버전은 실험적입니다. 누군가가 괜찮은 .NET 래퍼를 만들려고 노력했지만 누군가가하고 싶지 않은 것 같습니다. 이제는 HTML5와 IE (8)를 지원하는 다른 많은 기능을 제공한다는 점에서 놀랍습니다. ) 엔진이 부족합니다.
업데이트 (2014)
Awesomium 이라는 .NET 애플리케이션에 Chrome을 포함 할 수있는 새로운 이중 라이센스 프로젝트가 있습니다 . .NET API와 함께 제공되지만 렌더링에는 꽤 많은 해킹이 필요합니다 (이 예제에서는 브라우저 창을 버퍼로 가져와 버퍼를 이미지로 페인트하고 타이머에서 새로 고침).
나는 이것이 Battlefield 3에서 Origin이 사용하는 브라우저 라고 생각 합니다.
업데이트 (2016)
지금이 DotnetBrowser , Awesomium에 상업 대안은. Chromium을 기반으로합니다.
나는 며칠 동안 C # 웹 브라우저 구성 요소에 대한 대안을 테스트 해 왔으며 여기 내 목록이 있습니다.
1. 최신 IE 버전 8,9 사용 :
웹 브라우저 구성 요소가 IE7이 아닌 IE8입니까? 이것을 바꾸는 방법?
장점 :
- 실행하기 위해 많은 작업이 필요하지 않습니다
- IE9 인 경우 일부 HTML5 / CSS3 지원, IE10 인 경우 전체
단점 :
- 대상 시스템에 대상 IE 버전이 설치되어 있어야합니다. IE10은 여전히 Win7에서 미리보기 상태입니다.
이것은 많은 작업이 필요하지 않으며 IE9에는 최고의 CSS3 및 HTML5 기능이 없지만 HTML5 및 CSS3 지원을 얻을 수 있습니다. 그러나 IE10을 동일한 방식으로 실행할 수 있다고 확신합니다. 문제는 대상 시스템에 IE10이 설치되어 있어야하며 Windows 7에서 여전히 미리보기이므로 권장하지 않습니다.
OpenWebKitSharp는 WebKit.NET 0.5 프로젝트를 기반으로하는 웹킷 엔진을위한 .net 래퍼입니다. WebKit은 Chrome / Safari에서 사용하는 레이아웃 엔진입니다.
장점 :
- 적극적으로 개발
- HTML5 / CSS3 지원
단점 :
- 구현되지 않은 많은 기능
- x64를 지원하지 않습니다 (x86 용으로 앱을 빌드해야 함)
많은 기능이 아직 구현되지 않았지만 OpenWebKit은 꽤 훌륭합니다 .Visual Studio에서이를 사용하여 몇 가지 문제가 발생했습니다. 여기서 null 객체 참조를 throw 한 다음 디자인 모드에서 js 문제가 있습니다. 그것을 사용하는 모든 사람은 거의 즉시 js alert이 아무것도하지 않는 것을 알 수 있습니다. mouseup, mousedown ... 등의 이벤트가 작동하지 않고 js 드래그 앤 드롭이 버그가 있습니다.
특정 버전의 VC 재배포 가능 패키지가 필요하기 때문에 설치하는 데 약간의 어려움이 있었으므로 예외 후에 이벤트 로그를보고 VC 버전을 찾아 설치했습니다.
3. GeckoFX
장점 :
- 모노에서 작동
- 적극적으로 개발
- HTML5 / CSS3 지원
단점 :
- D̶o̶e̶s̶n̶'̶t̶ ̶s̶u̶p̶p̶o̶r̶t̶ ̶x̶6̶4̶ ̶ (̶A̶p̶p̶ ̶m̶u̶s̶t̶ ̶b̶e̶ ̶b̶u̶i̶l̶t̶ ̶f̶o̶r̶ ̶x̶8̶6̶6̶)
GeckoFX는 WinForms 응용 프로그램에 포함하기위한 크로스 플랫폼 Webrowser 컨트롤입니다. Windows에서는 .NET, Linux에서는 모노와 함께 사용할 수 있습니다. Gecko는 Firefox에서 사용하는 레이아웃 엔진입니다.
GeckoFX가 적극적으로 개발되지 않았다는 정보는 거의 없었습니다. 물론 Firefox의 버전보다 항상 1-2 버전이지만 실제로는 활동과 컨트롤 자체에 깊은 인상을 받았습니다. 필요한 모든 작업을 수행하지만 실행하는 데 약간의 시간이 필요했습니다. 실행하려면 약간의 자습서가 있습니다.
- GeckoFx-Windows-16.0-0.2를 다운로드 하십시오. 여기에서 최신 버전이 있는지 확인할 수 있습니다. GeckoFX
- 다운로드 한 두 개의 dll에 대한 참조 추가
- GeckoFX는 래퍼이므로 XulRunner가 필요합니다. 버전 목록 으로 이동하여 필요한 버전 을 확인하십시오.
- 필요한 XulRunner 버전을 확인 했으므로 Mozilla XulRunner 릴리스 로 이동하여 버전 폴더-> 런타임-> xulrunner- (your_version) .en-US.win32.zip으로 이동하십시오.이 경우 xulrunner-16.0.en- US.win32.zip
- 모든 파일의 압축을 풀고 모든 파일을 bin \ Debug에 복사하십시오 (또는 프로젝트가 릴리스로 설정된 경우 릴리스).
- 양식의 Visual Studio 디자이너로 이동하고 도구 상자로 이동하여 내부를 마우스 오른쪽 버튼으로 클릭-> 항목 선택-> 찾아보기-> 다운로드 한 GeckoFX winforms dll 파일 찾기-> 확인
- 이제 새로운 제어 GeckoWebBrowser가 있어야합니다.
실제로 Chrome을 사용해야하는 경우 Awesomium 이라는이 제품을 살펴보십시오. 비상업적 프로젝트에는 무료이지만 라이센스는 수천 달러입니다.
나는 같은 문제가 있었다 .WebBrowser는 이전 버전의 IE를 사용하고 있었고, 인터넷 검색을 통해 레지스트리를 변경하고 WebBrowser가 가능한 최신 IE 버전을 사용하도록하는 다음 코드를 발견했다.
public enum BrowserEmulationVersion
{
Default = 0,
Version7 = 7000,
Version8 = 8000,
Version8Standards = 8888,
Version9 = 9000,
Version9Standards = 9999,
Version10 = 10000,
Version10Standards = 10001,
Version11 = 11000,
Version11Edge = 11001
}
public static class WBEmulator
{
private const string InternetExplorerRootKey = @"Software\Microsoft\Internet Explorer";
public static int GetInternetExplorerMajorVersion()
{
int result;
result = 0;
try
{
RegistryKey key;
key = Registry.LocalMachine.OpenSubKey(InternetExplorerRootKey);
if (key != null)
{
object value;
value = key.GetValue("svcVersion", null) ?? key.GetValue("Version", null);
if (value != null)
{
string version;
int separator;
version = value.ToString();
separator = version.IndexOf('.');
if (separator != -1)
{
int.TryParse(version.Substring(0, separator), out result);
}
}
}
}
catch (SecurityException)
{
// The user does not have the permissions required to read from the registry key.
}
catch (UnauthorizedAccessException)
{
// The user does not have the necessary registry rights.
}
return result;
}
private const string BrowserEmulationKey = InternetExplorerRootKey + @"\Main\FeatureControl\FEATURE_BROWSER_EMULATION";
public static BrowserEmulationVersion GetBrowserEmulationVersion()
{
BrowserEmulationVersion result;
result = BrowserEmulationVersion.Default;
try
{
RegistryKey key;
key = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true);
if (key != null)
{
string programName;
object value;
programName = Path.GetFileName(Environment.GetCommandLineArgs()[0]);
value = key.GetValue(programName, null);
if (value != null)
{
result = (BrowserEmulationVersion)Convert.ToInt32(value);
}
}
}
catch (SecurityException)
{
// The user does not have the permissions required to read from the registry key.
}
catch (UnauthorizedAccessException)
{
// The user does not have the necessary registry rights.
}
return result;
}
public static bool SetBrowserEmulationVersion(BrowserEmulationVersion browserEmulationVersion)
{
bool result;
result = false;
try
{
RegistryKey key;
key = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true);
if (key != null)
{
string programName;
programName = Path.GetFileName(Environment.GetCommandLineArgs()[0]);
if (browserEmulationVersion != BrowserEmulationVersion.Default)
{
// if it's a valid value, update or create the value
key.SetValue(programName, (int)browserEmulationVersion, RegistryValueKind.DWord);
}
else
{
// otherwise, remove the existing value
key.DeleteValue(programName, false);
}
result = true;
}
}
catch (SecurityException)
{
// The user does not have the permissions required to read from the registry key.
}
catch (UnauthorizedAccessException)
{
// The user does not have the necessary registry rights.
}
return result;
}
public static bool SetBrowserEmulationVersion()
{
int ieVersion;
BrowserEmulationVersion emulationCode;
ieVersion = GetInternetExplorerMajorVersion();
if (ieVersion >= 11)
{
emulationCode = BrowserEmulationVersion.Version11;
}
else
{
switch (ieVersion)
{
case 10:
emulationCode = BrowserEmulationVersion.Version10;
break;
case 9:
emulationCode = BrowserEmulationVersion.Version9;
break;
case 8:
emulationCode = BrowserEmulationVersion.Version8;
break;
default:
emulationCode = BrowserEmulationVersion.Version7;
break;
}
}
return SetBrowserEmulationVersion(emulationCode);
}
public static bool IsBrowserEmulationSet()
{
return GetBrowserEmulationVersion() != BrowserEmulationVersion.Default;
}
}
클래스를 만들고이 코드를 넣은 다음 프로그램이 시작될 때 다음 코드를 실행하면됩니다.
if (!WBEmulator.IsBrowserEmulationSet())
{
WBEmulator.SetBrowserEmulationVersion();
}
VB.NET :
Imports Microsoft.Win32
Imports System
Imports System.Collections.Generic
Imports System.IO
Imports System.Linq
Imports System.Security
Imports System.Text
Imports System.Threading.Tasks
Public Enum BrowserEmulationVersion
[Default] = 0
Version7 = 7000
Version8 = 8000
Version8Standards = 8888
Version9 = 9000
Version9Standards = 9999
Version10 = 10000
Version10Standards = 10001
Version11 = 11000
Version11Edge = 11001
End Enum
Public Class WBEmulator
Private Const InternetExplorerRootKey As String = "Software\Microsoft\Internet Explorer"
Public Shared Function GetInternetExplorerMajorVersion() As Integer
Dim result As Integer
result = 0
Try
Dim key As RegistryKey
key = Registry.LocalMachine.OpenSubKey(InternetExplorerRootKey)
If key IsNot Nothing Then
Dim value As Object = If(key.GetValue("svcVersion", Nothing), key.GetValue("Version", Nothing))
Dim Version As String
Dim separator As Integer
Version = value.ToString()
separator = Version.IndexOf(".")
If separator <> -1 Then
Integer.TryParse(Version.Substring(0, separator), result)
End If
End If
Catch ex As SecurityException
'The user does Not have the permissions required to read from the registry key.
Catch ex As UnauthorizedAccessException
'The user does Not have the necessary registry rights.
Catch
End Try
GetInternetExplorerMajorVersion = result
End Function
Private Const BrowserEmulationKey = InternetExplorerRootKey + "\Main\FeatureControl\FEATURE_BROWSER_EMULATION"
Public Shared Function GetBrowserEmulationVersion() As BrowserEmulationVersion
Dim result As BrowserEmulationVersion
result = BrowserEmulationVersion.Default
Try
Dim key As RegistryKey = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, True)
If key IsNot Nothing Then
Dim programName As String
Dim value As Object
programName = Path.GetFileName(Environment.GetCommandLineArgs()(0))
value = key.GetValue(programName, Nothing)
If value IsNot Nothing Then
result = CType(Convert.ToInt32(value), BrowserEmulationVersion)
End If
End If
Catch ex As SecurityException
'The user does Not have the permissions required to read from the registry key.
Catch ex As UnauthorizedAccessException
'The user does Not have the necessary registry rights.
Catch
End Try
GetBrowserEmulationVersion = result
End Function
Public Shared Function SetBrowserEmulationVersion(BEVersion As BrowserEmulationVersion) As Boolean
Dim result As Boolean = False
Try
Dim key As RegistryKey = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, True)
If key IsNot Nothing Then
Dim programName As String = Path.GetFileName(Environment.GetCommandLineArgs()(0))
If BEVersion <> BrowserEmulationVersion.Default Then
'if it's a valid value, update or create the value
key.SetValue(programName, CType(BEVersion, Integer), RegistryValueKind.DWord)
Else
'otherwise, remove the existing value
key.DeleteValue(programName, False)
End If
result = True
End If
Catch ex As SecurityException
' The user does Not have the permissions required to read from the registry key.
Catch ex As UnauthorizedAccessException
' The user does Not have the necessary registry rights.
End Try
SetBrowserEmulationVersion = result
End Function
Public Shared Function SetBrowserEmulationVersion() As Boolean
Dim ieVersion As Integer
Dim emulationCode As BrowserEmulationVersion
ieVersion = GetInternetExplorerMajorVersion()
If ieVersion >= 11 Then
emulationCode = BrowserEmulationVersion.Version11
Else
Select Case ieVersion
Case 10
emulationCode = BrowserEmulationVersion.Version10
Case 9
emulationCode = BrowserEmulationVersion.Version9
Case 8
emulationCode = BrowserEmulationVersion.Version8
Case Else
emulationCode = BrowserEmulationVersion.Version7
End Select
End If
SetBrowserEmulationVersion = SetBrowserEmulationVersion(emulationCode)
End Function
Public Shared Function IsBrowserEmulationSet() As Boolean
IsBrowserEmulationSet = GetBrowserEmulationVersion() <> BrowserEmulationVersion.Default
End Function
End Class
다음과 같이 사용할 수 있습니다.
If Not WBEmulator.IsBrowserEmulationSet() Then
WBEmulator.SetBrowserEmulationVersion()
End If
레지스트리를 사용하여 웹 브라우저 제어를위한 IE 버전을 설정할 수 있습니다. HKLM \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION으로 이동하여 browser_emulation 값으로 "yourApplicationName.exe"를 추가하십시오. browser_emulation 값을 보려면 링크를 참조하십시오 : http://msdn.microsoft.com/en-us /library/ee330730%28VS.85%29.aspx#browser_emulation
Mono.WebBrowser 컨트롤을 살펴보십시오 -Firefox 에서 사용하는 Gecko 또는 Safari에서 사용하는 WebKit을 WinForms에 포함합니다 (ActiveX를 사용하지 않음).
나는 이것이 '바꾸기'웹 브라우저 컨트롤이 아니라는 것을 알고 있지만 레이아웃 등을 위해 BootStrap 3 +를 사용하는 페이지를 표시하는 동안 끔찍한 렌더링 문제가 발생하여 다음을 사용하도록 제안하는 게시물을 찾았습니다. 분명히 그것은 IE에만 해당되며 렌더링을 위해 클라이언트 컴퓨터에서 발견 된 최신 변형을 사용하도록 지시합니다 (따라서 IE7은 기본값이라고 생각하지 않습니다)
그냥 넣으십시오 :
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
문서의 머리 부분에 있습니다.
물론 문서가 아니라면 분명히 도움이되지는 않습니다 (웹 브라우저 컨트롤을 통해 자신이 만들지 않은 페이지를 읽는 경우 개인적으로 보안 구멍으로 간주하지만 웹 브라우저를 사용하는 이유는 무엇입니까?)
행운을 빕니다.
DotNetBrowser 라이브러리를 살펴보십시오 . Chromium 기반 WPF 및 WinForms 브라우저 컨트롤을 제공하며 .NET 응용 프로그램에 포함하기가 매우 쉽습니다. HTML5, CSS3 및 JavaScript를 포함한 모든 최신 웹 표준을 지원합니다. 렌더링 된 페이지는 Chrome과 똑같습니다.
라이브러리는 Chromium의 다중 프로세스 아키텍처를 상속합니다. 각 웹 페이지는 별도의 Chromium 프로세스로 렌더링되며 플러그인 충돌 또는 웹 페이지에서 예상치 못한 다른 오류가 발생한 후에도 응용 프로그램이 계속 작동합니다.
DotNetBrowser에서 제공하는 기타 유용한 기능은 다음과 같습니다. 이벤트로드, 네트워크 활동 처리, 프록시 구성, 사용자 동작 시뮬레이션, 쿠키 작업, 쿠키 작업, DOM 액세스 및 수정, DOM 이벤트 듣기, .NET에서 JavaScript 호출이 가능합니다. 그 반대의 경우, 웹 페이지에서 웹 카메라 및 마이크를 사용하고 WebRTC 기반 통신을 설정하는 등의 작업을 수행하십시오 .
자세한 내용 은 API Reference 를 확인하십시오.
아래 코드 스 니펫은 BrowserView를 작성하여 양식에 포함시키고 URL을로드하는 방법을 보여줍니다.
using System.Windows.Forms;
using DotNetBrowser;
using DotNetBrowser.WinForms;
namespace WinForms.DotNetBrowser
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
BrowserView browserView = new WinFormsBrowserView();
Controls.Add((Control) browserView);
browserView.Browser.LoadURL("http://www.youtube.com");
}
}
}
위의 예제를 실행하면 다음과 같은 결과가 나타납니다.
도서관은 상업용입니다. 상업용 라이센스에는 다양한 팀 규모에 대한 지원 패키지가 포함됩니다. 라이브러리의 소스 코드를 구입할 수도 있습니다.
구성 요소는 자체 페이지 외에도 Visual Studio Marketplace에서 NuGet 패키지 및 VSIX 패키지 로 제공됩니다 .
나는 소수의 Webkit 변형을 시도했지만 내 경험상 OpenWebkitSharp 의 발전을 능가하는 것은 없습니다 . HTML5 및 CSS3 점수는 Chrome에 최대한 가깝습니다. 매우 멋진 API 및 이벤트 모델. "구현되지 않은"API가 웹킷에서 구현되지 않았기 때문에 가능성이 높습니다. 다른 모든 것이 훌륭하게 작동합니다.
OpenWebKitSharp는 WebKit.NET 0.5 프로젝트를 기반으로하는 웹킷 엔진을위한 .net 래퍼입니다. 0.5 버전에 더 많은 기능을 추가하고 해당 빌드보다 더 많은 방법을 제공합니다. OpenWebKitSharp는 Cairo 빌드 (0.5)와 야간 웹킷 빌드 (기본적으로 밤마다)를 모두 지원합니다. 버전 1.5 Stable 이상에서는 야간 빌드가 포함되며 빌드 후에 자동으로 복사됩니다. 이전 버전에서는 이것이 cairo 빌드에서 발생합니다. OpenWebKitSharp는 현재 빠르고 안정적이며 유연한 웹 브라우저 인 GTLite Navigator에 전원을 공급합니다.
EO.WebBrowser을 사용해보십시오 . 새로운 기능이며 최신 버전의 Chrome 브라우저를 기반으로합니다. 그것의 가장 좋은 부분은 단일 .NET dll 안에 모든 것을 담아서 사용하고 배포하기 쉬울뿐만 아니라 .NET dll이기 때문에 동일한 DLL이 32 비트와 64 비트를 모두 지원한다는 것입니다.
2018 년 업데이트
Windows 10에서 실행할 응용 프로그램을 대상으로하는 경우 이제 Windows Community Toolkit 을 사용하여 Edge 브라우저를 .net 응용 프로그램에 포함시킬 수 있습니다 .
WPF 예 :
1) Windows Community Toolkit Nuget 패키지 설치
Install-Package Microsoft.Toolkit.Win32.UI.Controls
2) XAML 코드
<Window
x:Class="WebViewTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:WPF="clr-namespace:Microsoft.Toolkit.Win32.UI.Controls.WPF;assembly=Microsoft.Toolkit.Win32.UI.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WebViewTest"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="MainWindow"
Width="800"
Height="450"
mc:Ignorable="d">
<Grid>
<WPF:WebView x:Name="wvc" />
</Grid>
</Window>
3) CS 코드 :
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// You can also use the Source property here or in the WPF designer
wvc.Navigate(new Uri("https://www.microsoft.com"));
}
}
WinForms 예 :
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// You can also use the Source property here or in the designer
webView1.Navigate(new Uri("https://www.microsoft.com"));
}
}
자세한 내용은이 링크 를 참조하십시오.
나는 GeckoFX를 사용했고 그것은 매우 잘 봉사합니다. Firefox 엔진을 사용합니다. 내가 가진 유일한 경고는 문서가 실제로 완전히로드되기 전에 "DocumentLoaded"이벤트를 한 번 방출한다는 것입니다 .HTML 이로 드 될 때 하나를 가져온 다음 모든 것이있을 때 다른 것을 쏘는 것으로 생각합니다. 이미지와 물건이로드됩니다. 나는 첫 번째 것을 무시하여 수정했으며, 지금까지 아름답게 작동했습니다.
https://bitbucket.org/geckofx/에서 찾을 수 있습니다.
대부분의 괜찮은 라이브러리와 마찬가지로 오픈 소스입니다.
MozNet은 이전에 다소 중단 된 GeckoFX 컨트롤을 기반으로 한 .NET 컨트롤이지만 완전히 개발 중이며 GeckoFX가 스틱을 흔들 수있는 것보다 더 많은 기능을 가지고 있습니다. Se7en Soft 웹 사이트 에서 찾을 수 있습니다 .
EO.BrowserControl은 빠르고 쉽습니다. Chrome 브라우저 엔진이 있으며 모든 버전의 .NET에서 작동합니다.
https://visualstudiogallery.msdn.microsoft.com/fcee0646-42e7-484f-b22e-f8b2ace55dd7
참고 :이 제품은 상용 라이센스 제품이므로이를 염두에두고 홍보하지 않습니다. 다른 여러 가지를 시도한 후에 나는 이것을 선택했습니다.
2016 업데이트 :
제안 할 수있는 3 가지 추가 옵션이 있습니다.
Chrome 엔진 을 .Net 애플리케이션 에 통합하는 데 사용할 수있는 .Net 구성 요소입니다 . CefGlue를 기반으로 하지만 최신 Chrome 버전으로 업데이트하는 데 약간 빠릅니다. 또한 일부 상용 제품 에는 유용한 지원 옵션이 있습니다. 물론 구성 요소 자체는 오픈 소스 입니다.
Firefox 엔진 을 .Net 응용 프로그램 에 통합하는 데 사용할 수있는 다른 .Net 구성 요소 이것은 Geckofx를 기반으로 하지만 현재 Geckofx 버전과 달리 Firefox의 일반 릴리스 빌드에서 작동합니다. Geckofx를 사용하려면 Firefox를 직접 빌드해야합니다. 다시 상업적인 지원 이 가능하지만 구성 요소 자체는 완전히 오픈 소스 입니다.
.Net 응용 프로그램에 다른 브라우저가 모두 필요하십니까? Chrome, Firefox, Webkit 및 Internet Explorer 를 애플리케이션에 통합 할 수있는 BrowseEmAll Core API 이것은 상업용 제품 이므로 경고합니다.
(전체 공개 : 나는이 회사에서 일하기 때문에 내가 말한 모든 것을 소금 한알로 가져 가십시오)
훌륭한 IE 기반 컨트롤을 찾고 있다면 다음을 확인하십시오. http://code.google.com/p/csexwb2/
프로덕션 제품에 사용했습니다. 예전처럼 유지 관리되지 않는 것 같지만 꽤 좋고 데모가 좋습니다.
Geckofx와 Webkit.net은 처음에는 유망했지만 Internet Explorer가 개선되는 동안 Firefox와 Chrome을 각각 최신 상태로 유지하지는 못했지만 Webbrowser 컨트롤은 IE 버전과 상관없이 기본적으로 IE7처럼 작동하지만 그러나 레지스트리로 이동하여 HTML5를 허용하는 IE9로 변경하면 해결할 수 있습니다.
GeckoFX 컨트롤을 확인하십시오 .
나는 거기에있는 모든 브라우저를 사용해 보았습니다. 불행히도 모든 상황에서 실제로 나를 위해 일한 유일한 사람은 EO.Browser였습니다. 무료 솔루션을 선택할 수 있었으면 좋았지 만 결국 EO.Browser로 끝났습니다. 꽤 비싸지 만 잘 유지됩니다.
2016 업데이트 :
나에게 IE에 대한 신뢰할 수 있고 유지 관리되는 브라우저 대안은 EO.WebBrowser입니다. 나는 다른 사람들을 시험하는 데 며칠과 몇 주를 보냈습니다. 그들 모두는 어느 시점에서 나를 위해 쇼를 중단시키는 몇 가지 문제가있었습니다.
'development' 카테고리의 다른 글
Vim 80 열 레이아웃 문제 (0) | 2020.02.20 |
---|---|
cp 명령으로 파일을 대상에 복사하는 데 필요한 폴더를 작성하는 방법 (0) | 2020.02.20 |
프레임 버스터 버스터 ... 버스터 코드 필요 (0) | 2020.02.20 |
Java에서 parseInt와 valueOf의 차이점은 무엇입니까? (0) | 2020.02.20 |
C ++ 11 rvalue 및 이동 의미 론적 혼란 (return statement) (0) | 2020.02.20 |