การแทนที่. NET เว็บเบราเซอร์ควบคุมด้วยเบราว์เซอร์ที่ดีกว่าเช่น Chrome?


432

มีวิธีง่าย ๆ ในการแทรกเบราว์เซอร์ที่ทันสมัยลงในโปรแกรมประยุกต์. NET หรือไม่

เท่าที่ฉันเข้าใจตัวWebBrowserควบคุมคือ wrapper สำหรับIEซึ่งจะไม่เกิดปัญหายกเว้นว่ามันดูเหมือนว่าเป็นIEเวอร์ชันเก่ามากโดยทั้งหมดที่เกี่ยวข้องกับ CSS screw-ups เสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้น (หากโปรแกรมการเรนเดอร์ไม่ได้ทำการแพตช์ฉันสามารถคาดหวังได้ว่าปัญหาการล้นบัฟเฟอร์ zillion จะได้รับการแก้ไขหรือไม่) และปัญหาอื่น ๆ

ฉันใช้Visual Studio C # (รุ่นด่วน - สร้างความแตกต่างที่นี่หรือไม่?)

ฉันต้องการรวมเว็บเบราว์เซอร์ที่ดีในแอปพลิเคชันของฉัน ในบางครั้งฉันใช้เพื่อจัดการขั้นตอนการลงทะเบียนผู้ใช้ส่วนต่อประสานกับคุณสมบัติบางอย่างของเว็บไซต์ของฉันและสิ่งอื่น ๆ ตามลำดับนั้น แต่ฉันมีแอปพลิเคชั่นอื่นอยู่ในใจที่จะต้องควบคุม ...

ฉันต้องการ:

  • เบราว์เซอร์ที่สามารถรวมภายในหน้าต่างแอปพลิเคชันของฉัน (ไม่ใช่หน้าต่างแยกต่างหาก)
  • การสนับสนุนที่ดีสำหรับ CSS, js และเทคโนโลยีเว็บอื่น ๆ เทียบเท่าเบราว์เซอร์ที่ทันสมัย
  • ฟังก์ชันเบราว์เซอร์พื้นฐานเช่น "นำทาง", "ย้อนกลับ", "โหลดซ้ำ" ...
  • การเข้าถึงโค้ดเพจและเอาท์พุตแบบเสรี

ฉันกำลังคิดเกี่ยวกับ Chrome เนื่องจากอยู่ภายใต้ใบอนุญาต BSD แต่ฉันจะมีความสุขกับ IE เวอร์ชันล่าสุด

มากที่สุดเท่าที่เป็นไปได้ฉันต้องการทำให้สิ่งต่าง ๆ เรียบง่าย สิ่งที่ดีที่สุดก็คือถ้าใครสามารถแก้ไขตัวWebBrowserควบคุมที่มีอยู่ซึ่งทำไปแล้วประมาณ 70% ของสิ่งที่ฉันต้องการ แต่ฉันไม่คิดว่ามันเป็นไปได้

ฉันได้พบตัวควบคุม activeX สำหรับ Mozilla ( http://www.iol.ie/~locka/mozilla/control.htm ) แต่ดูเหมือนว่าเป็นรุ่นเก่าดังนั้นจึงไม่จำเป็นต้องปรับปรุง

ฉันเปิดรับข้อเสนอแนะ


19
ทำไมคุณถึงบอกว่าการควบคุมเว็บเบราเซอร์ใช้ IE เวอร์ชันเก่า? มันใช้รุ่นที่ติดตั้งบนระบบของผู้ใช้แม้ว่า IE8 เว็บเบราว์เซอร์จะปรากฏเป็นค่าเริ่มต้นสำหรับการเรนเดอร์ IE7: blogs.msdn.com/ie/archive/2009/03/10/…
Tim Robinson

17
เพราะมันดูไม่เป็นเช่นนั้นบนเครื่องของฉัน ฉันติดตั้ง IE8 แล้ว แต่ตัวควบคุมแสดงปัญหาการแสดงผลที่ฉันไม่ได้เห็นตั้งแต่ IE 5 แบบฟอร์มการเข้าสู่ระบบที่ง่ายมาก 2 ฟิลด์ที่มี CSS แบบสัมผัสมีจอแสดงผลที่อ่านไม่ออกและจอแสดงผลจาวาสคริปต์บางอันไม่ทำงาน ใช้ได้ใน IE8, Firefox, Chrome, Opera ... ดังนั้นฉันคิดว่าเครื่องมือเรนเดอร์นั้นเก่า ฉันอาจผิดอย่างสมบูรณ์เกี่ยวกับเรื่องนั้นและบางทีปัญหาคือความจริงแตกต่างจากที่ฉันคิด
Sylverdrag

3
@Silverdrag: คุณผิด มันใช้ IE ล่าสุดในระบบของคุณ อย่างไรก็ตามฉันอ่านบางแห่งว่าตัวควบคุมเว็บเบราว์เซอร์มีปัญหาความเข้ากันได้แบบย้อนหลังที่แรงกว่าเบราว์เซอร์แบบสแตนด์อโลน IE8 สามารถมีไอคอนคลิกเพื่อเปิดโหมด IE7 ในฐานะส่วนหนึ่งของโปรแกรมของคุณสิ่งนี้เป็นไปไม่ได้ดังนั้นการควบคุมจะใช้ค่าเริ่มต้นเป็นโหมดก่อนหน้าเพื่อความเข้ากันได้ OTOH ฉันยังไม่ได้อ่านวิธีตั้งค่าให้ใช้ "โหมด IE8"
จอห์นแซนเดอ

55
ที่จริงแล้ว John sanders คุณคิดผิด มันใช้ ie4 และคุณต้องเปลี่ยนค่ารีจิสตรีเพื่อบอกให้ใช้ปัจจุบัน ค้นหา "การจำลองโหมดคุณลักษณะ" และคุณจะได้รับคำตอบเปลี่ยนเมื่อเร็ว ๆ นี้เคยรวมคำหลักดั้งเดิมไว้ แต่เปลี่ยนเป็น google คำหลักที่ฉันพูดถึงด้วย "การควบคุมเว็บเบราว์เซอร์" และคุณจะพบบทความ msdn
Erx_VB.NExT.Coder

8
โดยค่าเริ่มต้นเป็นเจ้าภาพWebBrowserการควบคุมใช้ IE7 FEATURE_BROWSER_EMULATIONจำลองเว้นแต่มีคำสั่งเป็นอย่างอื่นด้วย เอกสารนี้มีไว้ที่นี่: blogs.msdn.com/b/askie/archive/2009/03/23/…
noseratio

คำตอบ:


171

ชำระเงินCefSharp .Netการเชื่อมโยงโครงการที่ฉันเริ่มย้อนกลับไปในขณะที่ชุมชนได้รับการขอบคุณอย่างมากและกลายเป็นสิ่งที่ยอดเยี่ยม

โครงการล้อมChromium Embedded Frameworkและถูกใช้ในโครงการสำคัญหลายโครงการรวมถึงไคลเอนต์ Windows ของ Rdio, Facebook Messenger สำหรับ Windows และ Github สำหรับ Windows

มันมีการควบคุมเบราว์เซอร์สำหรับWPFและWinformsและมีคุณสมบัติและจุดส่วนขยายมากมาย จากการที่ Chromium มันเร็วเกินไป

คว้าจาก NuGet: Install-Package CefSharp.WpfหรือInstall-Package CefSharp.WinForms

ลองดูตัวอย่างและแสดงความคิดเห็น / ข้อเสนอแนะ / คำขอดึงของคุณ: https://github.com/cefsharp/CefSharp

BSD ได้รับใบอนุญาต


2
ฉันเปลี่ยนมาเป็น CEfSharp จาก OWS และฉันสามารถบอกได้อย่างมั่นใจว่ามันเป็นชุมชนที่มีคุณภาพและมีชีวิตชีวา รักมัน github.com/cefsharp/CefSharp
Vin

1
CefSharp นั้นยอดเยี่ยม แต่โปรดทราบว่าห้องสมุดมีขนาดใหญ่ (20+ mb ที่ฉันดูล่าสุด) ดังนั้นพวกเขาอาจไม่เหมาะกับโครงการที่มีน้ำหนักเบากว่านี้
Skyl3lazer

1
@ANguyen ใช่คุณสามารถ
chillitom

1
มีความสุขมากที่รู้ว่าเป็นคุณที่เริ่มโครงการนี้! เมื่อเร็ว ๆ นี้ฉันใช้ cefsharp แต่ฉันเห็นได้ว่าขนาดไลบรารีคือ 80+ MB ซึ่งมีขนาดใหญ่มาก แต่จำเป็นสำหรับการทำงานที่เหมาะสม (โดยเฉพาะการเรนเดอร์ที่ราบรื่น) ของแอปพลิเคชัน มีวิธีใดในการลดสิ่งนี้
Aditya Bokade

5
นี่ทำให้โครงการของฉันพัง การอ้างอิงทั้งหมดหักหลังจากติดตั้งแพคเกจ nuget winforms
toddmo

84

Chrome ใช้ Webkit (ทางแยก) หากคุณไม่ทราบซึ่ง Safari ใช้เช่นกัน นี่คือคำถามสองสามข้อที่เป็นของหลอดเลือดดำเดียวกัน:

webkit one ไม่ได้ยอดเยี่ยมเหมือนคำตอบอื่น ๆ รุ่นหนึ่งใช้งานไม่ได้อีกต่อไป (google code one) และ Mono one นั้นกำลังทำการทดลอง มันคงจะดีถ้ามีคนพยายามทำ. NET wrapper ที่ดีสำหรับมัน แต่มันไม่ใช่สิ่งที่ใคร ๆ ก็อยากจะทำ - ซึ่งเป็นเรื่องที่น่าแปลกใจเพราะตอนนี้มันรองรับ HTML5 และคุณสมบัติอื่น ๆ อีกมากมายที่ IE (8) ) เครื่องยนต์ขาด

อัปเดต (2014)

มีโครงการแบบ dual-ได้รับใบอนุญาตใหม่ที่ช่วยให้คุณสามารถฝัง Chrome ในการใช้งานของคุณ NET เรียกว่าเป็นAwesomium มันมาพร้อมกับ. NET api แต่ต้องการแฮ็กค่อนข้างน้อยสำหรับการเรนเดอร์ (ตัวอย่างวาดหน้าต่างเบราว์เซอร์ไปยังบัฟเฟอร์, ทาสีบัฟเฟอร์เป็นรูปภาพและรีเฟรชในตัวจับเวลา)

ฉันคิดว่านี่เป็นเบราว์เซอร์ที่ Origin ใช้ใน Battlefield 3

อัปเดต (2016)

ขณะนี้มีDotnetBrowserซึ่งเป็นทางเลือกเชิงพาณิชย์ของ Awesomium มันขึ้นอยู่กับ Chromium


ขอบคุณ ฉันจะดูที่เสื้อคลุมตุ๊กแก สิ่งหนึ่งที่คำตอบเดิมบอกว่า "สิ่งที่คุณต้องทำคือลงทะเบียน Mozilla ActiveX control" และฉันคิดว่ารุ่น Express ไม่สามารถลงทะเบียนตัวควบคุมเพิ่มเติมได้ ฉันขาดอะไรที่ชัดเจนหรือไม่
Sylverdrag

4
@Syl รุ่นด่วนสามารถลงทะเบียนการควบคุมได้มากเท่าที่คุณต้องการ สิ่งที่พวกเขาจะไม่ทำคือให้คุณติดตั้งปลั๊กอินไปยัง visual studio
Joel Coehoorn

1
ฉันมีประสบการณ์ที่ไม่ดีนักในการใช้ WebKit กับ C # และในที่สุดฉันก็ต้องตัดสินใจเกี่ยวกับองค์ประกอบเว็บเบราว์เซอร์เริ่มต้นซึ่งมาพร้อมกับ. NET
Sumit Ghosh

1
ณ วันที่นี้โครงการข้างต้นไม่สามารถแทนที่แบบดรอปอินได้ ข้อผิดพลาดของคอมไพเลอร์มากมาย + ความไม่แน่นอน Awesomium เสร็จสมบูรณ์และทิ้งขยะ
Kraang Prime

"ฉันคิดว่านี่เป็นเบราว์เซอร์ที่ Origin ใช้ใน Battlefield 3" สิ่งนี้ไม่ถูกต้อง ฉันรู้สิ่งนี้เพราะฉันต้องบังคับให้แอปนี้ใช้เช่นบน windows สิบเพราะเมื่อมันผิดนัดถึงขอบมันไม่ทำงาน นี่เป็นเมื่อครู่ก่อนอาจเป็นปัญหาที่แก้ไขแล้ว
Theyouthis

64

ฉันได้ทำการทดสอบทางเลือกสำหรับองค์ประกอบของเว็บเบราว์เซอร์ C # สองสามวันแล้วและนี่คือรายการของฉัน:

1. การใช้ IE เวอร์ชันที่ใหม่กว่า 8,9:

องค์ประกอบของเว็บเบราว์เซอร์คือ IE7 ไม่ใช่ IE8? จะเปลี่ยนแปลงสิ่งนี้ได้อย่างไร

ข้อดี:

  • ไม่จำเป็นต้องทำงานมากนักเพื่อให้ทำงานได้
  • HTML5 / CSS3 รองรับถ้า IE9 เต็มถ้า IE10

จุดด้อย:

  • เครื่องเป้าหมายต้องติดตั้ง IE เวอร์ชันเป้าหมายแล้ว IE10 ยังอยู่ในหน้าตัวอย่างบน Win7

สิ่งนี้ไม่จำเป็นต้องใช้งานมากนักและคุณสามารถรับการสนับสนุน HTML5 และ CSS3 ได้แม้ว่า IE9 จะไม่มีคุณสมบัติที่ดีที่สุดของ CSS3 และ HTML5 แต่ฉันแน่ใจว่าคุณสามารถทำให้ IE10 ทำงานในลักษณะเดียวกันได้ ปัญหาคือระบบเป้าหมายจะต้องติดตั้ง IE10 และเนื่องจากยังอยู่ในหน้าตัวอย่างบน Windows 7 ฉันขอแนะนำให้ใช้

2. OpenWebKitSharp

OpenWebKitSharp เป็น. wrapper สุทธิสำหรับเครื่องมือ webkit ตามโครงการ WebKit.NET 0.5 WebKit เป็นเอ็นจิ้นเลย์เอาต์ที่ใช้โดย Chrome / Safari

ข้อดี:

  • พัฒนาอย่างแข็งขัน
  • รองรับ HTML5 / CSS3

จุดด้อย:

  • คุณสมบัติหลายอย่างไม่ได้ดำเนินการ
  • ไม่รองรับ x64 (ต้องสร้างแอปสำหรับ x86)

OpenWebKit ค่อนข้างดีแม้ว่าคุณสมบัติหลายอย่างยังไม่ได้ใช้ แต่ฉันพบปัญหาเล็กน้อยในการใช้งานกับ visual studio ซึ่งจะอ้างอิงวัตถุที่เป็นโมฆะที่นี่แล้วในโหมดการออกแบบมีปัญหา js บางอย่าง ทุกคนที่ใช้มันเกือบจะทันทีจะสังเกตเห็นการแจ้งเตือน js ไม่ทำอะไรเลย กิจกรรมเช่น mouseup, mousedown ... ฯลฯ ไม่ทำงาน js การลากและวางเป็นบั๊กกี้เป็นต้น

ฉันยังมีปัญหาบางอย่างในการติดตั้งเนื่องจากต้องมีการติดตั้ง VC ที่แจกจ่ายซ้ำได้โดยเฉพาะดังนั้นหลังจากข้อยกเว้นฉันดูที่บันทึกเหตุการณ์รุ่นที่พบของ VC และติดตั้ง

3. GeckoFX

ข้อดี:

  • ทำงานบนโมโน
  • พัฒนาอย่างแข็งขัน
  • รองรับ HTML5 / CSS3

จุดด้อย:

  • D̶o̶e̶s̶n̶'̶t̶สนับสนุน x64 ̶ (App จะต้องสร้างขึ้นสำหรับ x86) ̶ - ดูความคิดเห็นด้านล่าง

GeckoFX คือการควบคุมเว็บเบราว์เซอร์ข้ามแพลตฟอร์มสำหรับการฝังลงในแอปพลิเคชัน WinForms สามารถใช้กับ. NET บน Windows และโมโนบน Linux Gecko เป็นเอ็นจิ้นเลย์เอาต์ที่ Firefox ใช้

ฉันชนข้อมูลเล็กน้อยที่ GeckoFX ไม่ได้พัฒนาอย่างแข็งขันซึ่งไม่เป็นความจริงแน่นอนว่ามันเป็นรุ่นหนึ่งที่อยู่เบื้องหลัง Firefox เสมอ แต่นั่นเป็นเรื่องปกติฉันรู้สึกประทับใจกับกิจกรรมและการควบคุมตัวเอง มันทำทุกอย่างที่ฉันต้องการ แต่ฉันต้องการเวลาที่จะให้มันทำงานต่อไปนี้เป็นบทช่วยสอนเล็ก ๆ น้อย ๆ เพื่อให้มันทำงาน:

  1. ดาวน์โหลดGeckoFx-Windows-16.0-0.2ที่นี่คุณสามารถตรวจสอบว่ามีGeckoFXรุ่นใหม่กว่าหรือไม่
  2. เพิ่มการอ้างอิงถึง dll ที่ดาวน์โหลดมาสองตัว
  3. เนื่องจาก GeckoFX เป็น wrapper คุณต้องการ XulRunner ให้ไปที่List Listเพื่อดูว่าคุณต้องการอันไหน
  4. ตอนนี้เรารู้ว่าเราต้องการ XulRunner รุ่นใดเราไปที่ Mozilla XulRunner ออกไปที่โฟลเดอร์ version -> runtimes -> xulrunner- (your_version) .en-US.win32.zip ในกรณีของเราxulrunner-16.0.en- US.win32.zip
  5. เปิดเครื่องรูดทุกอย่างและคัดลอกไฟล์ทั้งหมดไปยัง bin \ Debug ของคุณ (หรือปล่อยถ้าโครงการของคุณถูกตั้งค่าให้ปล่อย)
  6. ไปที่นักออกแบบภาพสตูดิโอในแบบฟอร์มของคุณไปที่กล่องเครื่องมือคลิกขวาภายใน -> เลือกรายการ -> เรียกดู -> ค้นหาไฟล์ GeckoFX winforms dll ที่ดาวน์โหลด -> ตกลง
  7. ตอนนี้คุณควรมีการควบคุมใหม่ GeckoWebBrowser

หากคุณต้องใช้ Chrome จริงๆให้ดูที่ผลิตภัณฑ์นี้ชื่อว่าAwesomiumฟรีสำหรับโครงการที่ไม่ใช่เชิงพาณิชย์ แต่ใบอนุญาตอยู่ที่ไม่กี่พันดอลลาร์เพื่อการค้า


4
คำอธิบายที่ดีมากเกี่ยวกับวิธีทำให้ GeckoFx ทำงานได้ +1
Alex Essilfie

เมื่อสร้าง Geckofx-Winforms ฉันต้องการไลบรารี 4 gtk # (atk-sharp, gdk-คม, glib-sharp และ gtk-sharp) ดังนั้นฉันต้องติดตั้ง Mono ก่อน
bernhardrusch

คำตอบนี้งดงาม
Mike Cole

การวิเคราะห์ที่ดีอย่างแน่นอน ฉันอยากรู้ว่าคุณเกิดขึ้นเพื่อทดสอบAwesomiumด้วยแอปพลิเคชัน C # หรือไม่ คุณเคยพูดเรื่องนี้บ้างไหม? ฉันยังไม่ได้ทดสอบ แต่ดูเหมือนว่าน่าเชื่อถือสำหรับฉันหลังจากดูที่แผงของผู้ดูแลทรัพย์สินที่พวกเขาได้กล่าวถึงในหน้าของพวกเขา
Abdul Rehman

2
@Wayne หากคุณต้องการทำอย่างถูกต้องคุณควรสร้างโฟลเดอร์ในโครงการของคุณหรือโครงการที่แยกออกจากกันซึ่งคุณจะรวมไฟล์ทั้งหมด gecko fx dll และไฟล์ xul runner และตั้งค่าให้คัดลอกเสมอ คัดลอกไปยังโฟลเดอร์ build / debug ของคุณหรือเผยแพร่ถ้าคุณเผยแพร่จาก VS นอกจากนี้ยังมีวิธี Xpcom.Initialize ที่คุณควรเรียกใช้และคุณสามารถผ่านเส้นทางไฟล์ xul runner หวังว่าจะช่วยได้
formatc

41

ฉันมีปัญหาเดียวกัน WebBrowser ใช้ IE เวอร์ชันเก่าโดยมี googling บางตัวฉันเจอโค้ดต่อไปนี้ที่ทำให้เกิดการเปลี่ยนแปลงในรีจิสตรีและทำให้เว็บเบราเซอร์ใช้ 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

1
ยอดเยี่ยม !! ขอบคุณมาก!
Ben

1
แปลเป็น Python (ทำงานบนแอปพลิเคชัน IronPython) และทำงานได้อย่างสมบูรณ์แบบ ขอบคุณ!
David

1
นั่นช่วยชีวิตฉัน! ขอบคุณ
Neeraj Dubey

1
มันยอดเยี่ยม แต่เป็นไปได้ไหมที่จะรีเซ็ตเวอร์ชั่นอีมูเลชั่น? ดูเหมือนว่ารุ่นนั้นสามารถตั้งค่าได้เพียงครั้งเดียวในแอปพลิเคชั่น WinForms ในขณะที่เป็นไปได้ที่จะมีการรีเซ็ตเอฟเฟกต์คือเมื่อตั้งค่าและรีเซ็ตในรีจิสตรีแล้วจะไม่ถูกอ่านซ้ำด้วยค่ารีจิสตรีใหม่ในแอพ WinForms
cymorg

1
@DarrenMB เท่าที่ฉันรู้ว่ามันใช้ IE11
Ashkan Mobayen Khiabani

27

คุณสามารถใช้รีจิสตรีเพื่อตั้งค่าเวอร์ชั่น IE สำหรับการควบคุมเว็บเบราว์เซอร์ ไปที่: Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION HKLM \ SOFTWARE \ Microsoft \ Internet และเพิ่ม "yourApplicationName.exe" ด้วยค่าของ browser_emulation เมื่อต้องการดูค่าของ browser_emulation ให้อ้างอิงลิงค์: http://msdn.microsoft.com/en-us /library/ee330730%28VS.85%29.aspx#browser_emulation


10
และถ้าคุณกำลังดีบั๊กใน visual studio คุณอาจจะต้องใช้ "yourApplicationName.vshost.exe"
newenglander

3
และถ้าคุณกำลังดีบักใน Visual Studio คุณก็สามารถยกเลิก "เปิดใช้งานกระบวนการโฮสต์ Visual Studio" บนแท็บ Debug ของคุณสมบัติโครงการของคุณ จากนั้นคุณสามารถใช้ชื่อ exe ของคุณโดยไม่มีส่วน "vshost"
Daniel Vygolov

1
@golavietnam โปรดช่วยฉันด้วยฉันลองใช้คำแนะนำของคุณแล้วใช้คำแนะนำในลิงค์ที่คุณให้ไว้ แต่มันยังใช้งานไม่ได้ เมื่อฉันเยี่ยมชม WhatIsMyBrowser.com โดยใช้การควบคุมเว็บเบราว์เซอร์จะบอกฉันว่าฉันใช้ ie11 BUT ในโหมดความเข้ากันได้7โหมดและเว็บไซต์จำนวนมากปฏิเสธที่จะทำงานและให้ข้อความ "โปรดอัปเกรดเบราว์เซอร์ของคุณ" ฉันจะบังคับให้เว็บเบราเซอร์ควบคุมใช้เวอร์ชันล่าสุดของ ie ที่ติดตั้งไว้ (ie11) วิธีนี้ใช้งานไม่ได้ฉันลองใช้หลายร้อยครั้ง
jay_t55

ขอบคุณมันใช้งานได้และช่วยประหยัดวันของฉัน
T --n Nguyên

18

ดูที่การควบคุมMono.WebBrowser - ซึ่งจะรวมทั้ง Gecko (ตามที่ใช้โดย Firefox) หรือ WebKit (ที่ใช้โดย Safari) ลงใน WinForms (โดยไม่ต้องใช้ ActiveX)


16

ฉันรู้ว่านี่ไม่ใช่การควบคุมเว็บเบราว์เซอร์ 'แทนที่' แต่ฉันมีปัญหาการเรนเดอร์บางอย่างในขณะที่แสดงเพจที่ใช้ BootStrap 3+ สำหรับเลย์เอาต์และอื่น ๆ จากนั้นฉันพบโพสต์ที่แนะนำให้ใช้ต่อไปนี้ เห็นได้ชัดว่าเป็นเฉพาะกับ IE และบอกให้ใช้รูปแบบล่าสุดที่พบในเครื่องไคลเอนต์สำหรับการแสดงผล (ดังนั้นมันจะไม่ใช้ IE7 เพราะฉันเชื่อว่าเป็นค่าเริ่มต้น)

ดังนั้นเพียงแค่ใส่:

<meta http-equiv="X-UA-Compatible" content="IE=Edge" />

ที่ใดที่หนึ่งในส่วนหัวของเอกสารของคุณ

หากไม่ใช่เอกสารของคุณแน่นอนว่านี่จะไม่ช่วยได้ (แม้ว่าฉันจะถือว่าเป็นช่องโหว่ความปลอดภัยหากคุณกำลังอ่านหน้าเว็บที่ไม่ได้สร้างขึ้นเองผ่านการควบคุมเว็บเบราเซอร์ - ทำไมไม่ใช้เว็บเบราว์เซอร์!)

โชคดี.


หากคุณต้องการการทำงานบนเครื่องคอมพิวเตอร์ที่ใช้ IE7 ไม่ใส่มันอยู่ที่ไหนสักแห่งในใส่ไว้เป็นลูกคนแรกของ<head> <head>เราต้องใช้เวลาสักครู่กว่าจะคิดออก
Sylvain

ขออภัยฉันหมายถึง IE8 ไม่ใช่ IE7 ในความคิดเห็นก่อนหน้าของฉัน ดังนั้นใน IE8 หากคุณไม่ได้วางตัว<meta>เป็นลูกคนแรกของ<head>มันมันจะทำงานในโหมดที่เข้ากันได้ไม่ใช่ในโหมด edge
Sylvain

ฉันใช้ปลั๊กอินเว็บเบราเซอร์ในแอป winform และนี่เป็นความช่วยเหลือที่ยิ่งใหญ่ หน้าที่ฉันกดปุ่มกำลังใช้ jquery & angularjs ซึ่งสำลักเพราะคิดว่าเบราว์เซอร์คือ IE7 แม้ว่าฉันจะติดตั้ง IE10 แล้วก็ตาม
Kywillis

ใช้งานได้สำหรับฉัน! นอกจากนี้คุณยังสามารถใช้สิ่งนี้เพื่อตั้งค่าให้ IE รุ่นใดรุ่นหนึ่งเช่น: <meta http-equiv = "X-UA-Compatible" content = "IE = 10" /> และเบราว์เซอร์จะทำงานเป็น 10 เสมอ (แน่นอนว่าคุณต้องการ เพื่อติดตั้งรุ่นเดียวกันหรือสูงกว่า
พัฒนาอิสระ

นี่คือที่สมบูรณ์แบบสำหรับ usecase ของฉัน ฉันต้องการแสดงรายงานที่จัดรูปแบบ HTML ที่ดีกว่า มีเนื้อหา CSS จำนวนมากที่มีอยู่แล้ว นี่เป็นวิธีที่ดีกว่าการฝัง chrome / firefox
MD Luffy

13

ลองดูที่ห้องสมุดDotNetBrowser มันให้การควบคุมเบราว์เซอร์ที่ใช้ WPF และ WinForms บนโครเมียมซึ่งค่อนข้างง่ายต่อการฝังลงในแอปพลิเคชัน. NET รองรับมาตรฐานเว็บที่ทันสมัยทั้งหมดรวมถึง HTML5, CSS3 และ JavaScript หน้าเว็บที่แสดงผลดูเหมือนใน Google Chrome

ห้องสมุดสืบทอดสถาปัตยกรรมหลายขั้นตอนของ Chromium - แต่ละหน้าเว็บจะแสดงผลในกระบวนการ Chromium แยกต่างหากและแอปพลิเคชันจะทำงานต่อไปแม้หลังจากปลั๊กอินขัดข้องหรือข้อผิดพลาดอื่น ๆ ที่ไม่คาดคิดเกิดขึ้นบนหน้าเว็บ

นี่คือคุณสมบัติที่มีประโยชน์อื่น ๆ ที่มีให้โดย DotNetBrowser: เป็นไปได้ที่จะฟังเหตุการณ์โหลดจัดการกับกิจกรรมเครือข่ายกำหนดค่าพร็อกซีจำลองการกระทำของผู้ใช้ทำงานกับคุกกี้เข้าถึงและแก้ไข DOM ฟังเหตุการณ์ DOM โทร JavaScript จาก. NET และในทางกลับกันการใช้กล้องเว็บและไมโครโฟนบนหน้าเว็บ, การตั้งค่าการสื่อสาร WebRTC ที่ใช้และอื่น ๆ อีกมากมาย

ตรวจสอบการอ้างอิง APIสำหรับรายละเอียดเพิ่มเติม

ข้อมูลโค้ดด้านล่างแสดงวิธีสร้าง 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");
        }
    }
}

เมื่อคุณเรียกใช้ตัวอย่างข้างต้นคุณจะได้รับผลลัพธ์ต่อไปนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ห้องสมุดเป็นเชิงพาณิชย์ ใบอนุญาตการค้ารวมถึงแพ็คเกจสนับสนุนสำหรับขนาดทีมต่าง ๆ นอกจากนี้ยังเป็นไปได้ที่จะซื้อรหัสที่มาของห้องสมุด

นอกเหนือจากหน้าของตัวเองแล้วส่วนประกอบจะพร้อมใช้งานเป็นแพ็คเกจ NuGetและเป็นแพ็คเกจ VSIXใน Visual Studio Marketplace


16
ระวังราคาสูงของผลิตภัณฑ์นี้
jjxtra

3
มันไม่ได้เป็นโอเพ่นซอร์สมันมีใบอนุญาตไม่ถูก
Ashish-BeJovial

8

ฉันได้ลองชุดของ Webkit หลายอย่าง แต่จากประสบการณ์ของฉันไม่มีอะไรจะดีไปกว่าความก้าวหน้าที่OpenWebkitSharpมี รักมันชอบเลย .. คะแนน HTML5 และ CSS3 ใกล้เคียงกับที่พวกเขาสามารถเข้าถึง Google Chrome ได้ API และรูปแบบการจัดกิจกรรมที่ดีมาก หากคุณพบว่า API "ไม่ใช้งาน" เป็นไปได้มากที่สุดเพราะไม่ได้ใช้งานใน Webkit ทุกอย่างอื่นใช้งานได้ดี

OpenWebKitSharp เป็น. wrapper สุทธิสำหรับเครื่องมือ webkit ตามโครงการ WebKit.NET 0.5 มันเพิ่มฟังก์ชั่นเพิ่มเติมให้กับเวอร์ชั่น 0.5 และให้วิธีการมากกว่าแบบบิลด์นั้น OpenWebKitSharp รองรับทั้งการสร้างไคโร (0.5) และการสร้าง webkit ทุกคืน (โดยค่าเริ่มต้นรายคืน) ในเวอร์ชั่น 1.5 มีความเสถียรและมีการรวมบิลยามค่ำคืนและคัดลอกโดยอัตโนมัติหลังการสร้าง ในรุ่นก่อนหน้านี้เกิดขึ้นกับการสร้างไคโร ขณะนี้ OpenWebKitSharp ขับเคลื่อน GTLite Navigator ซึ่งเป็นเว็บเบราว์เซอร์ที่รวดเร็วเสถียรและยืดหยุ่น


1
ขอบคุณ ดูเหมือนว่าจะเป็นการค้นพบที่ยอดเยี่ยม!
Sylverdrag

ฟอรัมของพวกเขานั้นค่อนข้างแอคทีฟและฉันก็ได้รับคำตอบที่รวดเร็ว ตอนนี้ฉันกำลังใช้นี้สำหรับทุกความต้องการของเว็บเบราเซอร์การควบคุมของฉัน
Vin

2
ใช่มันทำทุกอย่างที่คุณเรียก ExecuteScript อย่างไรก็ตามฉันเปลี่ยนไปที่ CefSharp และฉันสามารถบอกคุณได้ว่าฉันชอบวิธีที่ดีกว่า OWS
Vin

1
ระเบียบที่น่าขยะแขยงอีกอย่างของโค้ดที่ไม่สามารถใช้งานได้ในแบบที่เป็นอยู่
Kraang Prime

1
ระวัง webkit ไม่สามารถใช้ proxy im มีปัญหากับมันได้
skhurams

7

ปรับปรุงพฤษภาคม 2561

หากคุณกำหนดเป้าหมายประยุกต์ใช้ในการทำงานบน Windows 10, เบราว์เซอร์ขอบแล้วตอนนี้คุณสามารถฝังลงในใบสมัครของคุณ NET โดยใช้ของ Windows Toolkit

ตัวอย่าง WPF:

1) ติดตั้งแพคเกจ Nuget ชุดเครื่องมือ Windows Community

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"));
  }
}

โปรดอ้างอิงลิงค์นี้สำหรับข้อมูลเพิ่มเติม


ฉันติดตั้งแพคเกจ Nuget แล้ว แต่มันไม่ทำงาน ยังคง ty
นิซ

6

ลองEO.WebBrowser มันเป็นของใหม่และขึ้นอยู่กับเบราว์เซอร์ Chrome เวอร์ชันล่าสุด ส่วนที่ดีที่สุดเกี่ยวกับมันคือมันแพ็คทุกอย่างภายใน. NET dll เดียวดังนั้นไม่เพียง แต่มันใช้งานง่ายและปรับใช้ แต่ยัง DLL เดียวกันรองรับทั้ง 32 บิตและ 64 บิตเพราะเป็น. dll dll


9
ในอนาคตโปรดระบุว่านี่เป็นผลิตภัณฑ์ที่มีลิขสิทธิ์ในเชิงพาณิชย์และไม่ว่าคุณจะมีส่วนเกี่ยวข้องกับผลิตภัณฑ์หรือไม่โปรดดูที่หลีกเลี่ยงการโปรโมตตนเองด้วยตนเองในคำถามที่พบบ่อย
แอนดี้บราวน์

1
หลังจากค้นหาอย่างบ้าๆบอ ๆ สำหรับปี ---- การควบคุม "เชิงพาณิชย์" นี้เป็นเพียงการทำงานแบบดรอปดาวน์สำหรับ IE ที่ฉันไม่จำเป็นต้องไปไหนมาไหนด้วยเบราว์เซอร์ปัจจุบันของฉัน การตั้งค่า - หากการตั้งค่าสถานะฉันไม่ได้เชื่อมโยงกับ EO ในรูปแบบหรือรูปแบบใด ๆ ฉันโกรธที่โซลูชันอื่น ๆ เหล่านี้ทั้งหมด s__t - สมบูรณ์ที่สุดขยะและเสียเวลาของทุกคน
Kraang Prime

@SanuelJackson GeckoFx ทำงานได้อย่างสมบูรณ์ที่ บริษัท ของฉันและไม่ได้เกิดจากปัญหาใด ๆ กับการตั้งค่าเบราว์เซอร์
เวย์น

@ Wayne - นั่นเป็นสิ่งที่ดีสำหรับคุณ ไม่มีโครงการเปิดเหล่านี้ที่มาแทนที่การแทนที่ที่ต้องการการปรับเปลี่ยนที่สำคัญในการทำงานเป็นรหัสที่มีการจัดการโดยเฉพาะอย่างยิ่งการควบคุมแบบหล่นใน winforms พวกเขาอาจขาดฟังก์ชั่นที่ IE ให้การควบคุมและ / หรือสมบูรณ์ s__t เมื่อเกิดข้อผิดพลาดอย่างต่อเนื่องหรือช้า - ไม่สามารถระบุปัญหาทั้งหมดได้ที่นี่ บางทีในอีกทศวรรษหนึ่งเมื่ออินเทอร์เน็ตไม่ต้องการเว็บเบราว์เซอร์อีกต่อไปบางทีสิ่งที่ทำงานได้จะอยู่ในสภาพใช้งานได้
Kraang Prime

@SanuelJackson อืมฉันหวังว่าสิ่งที่คุณพูดจะเป็นจริง น่าเสียดายที่ไม่มีตัวเลือกใด ๆ (รวมถึง GeckoFX) ที่ไม่มีข้อผิดพลาดในการหยุดการแสดงสำหรับฉัน ฉันหวังว่าฉันจะหลีกเลี่ยงราคาสูงสำหรับเบราว์เซอร์ Essential Objects แต่มันเป็นสิ่งเดียวที่ทำงานได้อย่างไร้ที่ติสำหรับฉัน
Maiken Roskilde

5

ฉันใช้ GeckoFX และให้บริการฉันดีมาก มันใช้โปรแกรม Firefox ข้อแม้เดียวที่ฉันเคยพบเจอคือมันปล่อยเหตุการณ์ "DocumentLoaded" หนึ่งครั้งก่อนที่เอกสารจะเต็มจริง ๆ ... ฉันคิดว่ามันจะยิงออกมาหนึ่งอันเมื่อโหลด HTML และอีกอันหนึ่งเมื่อทั้งหมด โหลดรูปภาพและสิ่งของแล้ว ฉันแก้ไขมันโดยไม่สนใจสิ่งแรกและมันก็ทำงานได้อย่างสวยงามโดยไม่ล้มเหลว

คุณสามารถค้นหาได้ที่นี่: https://bitbucket.org/geckofx/

เช่นเดียวกับห้องสมุดที่ดีที่สุดมันเป็นโอเพ่นซอร์ส


2
ส่วนประกอบตาม Firefox ทั้งหมดที่ใช้งานได้สกรูกับผู้ใช้ติดตั้ง Firefox โชคดีที่โซลูชันเหล่านี้ส่วนใหญ่ไม่สามารถใช้งานได้และถ้าโชคดีมันทำให้การตั้งค่า Firefox ของคุณอยู่ในชั้นเชิง - ไม่โชคดีคุณสูญเสียการตั้งค่าทั้งหมดของคุณและยังไม่มีอะไรดีไปกว่า IE แบบดรอปอิน
Kraang Prime

1
การเชื่อมโยงนั้นตายและจากการสร้างเก่า bitbucket.org/geckofxมีเวอร์ชั่นปัจจุบัน
Wayne

@Sanual Jackson - ฉันใช้ GeckoFx เป็นเวลาหลายปีและไม่เคยประสบปัญหาใด ๆ กับการติดตั้ง Firefox ของผู้ใช้ - รวมถึงของฉันเอง คุณแค่คาดเดา
PandaWood

3

MozNet เป็นตัวควบคุม. NET ซึ่งก่อนหน้านี้ใช้ตัวควบคุม GeckoFX ที่ถูกทอดทิ้งมากกว่าหรือน้อยกว่า แต่อยู่ภายใต้การพัฒนาอย่างเต็มรูปแบบและมีฟีเจอร์ที่มากกว่า GeckoFX ที่สามารถสั่นคลอนได้ คุณสามารถค้นหาได้ที่เว็บไซต์Se7en Soft


1
GeckoFX กำลังได้รับการพัฒนาอย่างแข็งขันที่: bitbucket
Wayne เมื่อ

2

EO.BrowserControl นั้นง่ายและรวดเร็ว มันมีเครื่องมือเบราว์เซอร์ Chrome และทำงานได้กับ. NET ทุกรุ่น

https://visualstudiogallery.msdn.microsoft.com/fcee0646-42e7-484f-b22e-f8b2ace55dd7

หมายเหตุ: นี่เป็นผลิตภัณฑ์ที่ได้รับสิทธิ์การใช้งานในเชิงพาณิชย์และฉันไม่ได้ส่งเสริมผลิตภัณฑ์โดยคำนึงถึงสิ่งนั้น หลังจากลองสิ่งอื่น ๆ อีกมากมายฉันก็เลือกมัน


2

อัพเดท 2016:

มี 3 ตัวเลือกเพิ่มเติมที่ฉันสามารถแนะนำได้:

1. BrowseEmAll.Cef

ส่วนประกอบ. Net ที่สามารถใช้เพื่อรวมเครื่องมือ Chromeเข้ากับแอปพลิเคชัน. Net ของคุณ อ้างอิงจากCefGlueแต่เร็วขึ้นเล็กน้อยในการอัปเดตเวอร์ชัน Chrome ล่าสุด นอกจากนี้ยังมีตัวเลือกการสนับสนุนเชิงพาณิชย์ซึ่งอาจมีประโยชน์สำหรับบางคน องค์ประกอบของหลักสูตรที่ตัวเองเป็นโอเพนซอร์ส

2. BrowseEmAll.Gecko

อีกองค์ประกอบ. Net ที่สามารถใช้เพื่อรวมเอ็นจิ้น Firefoxเข้ากับแอปพลิเคชัน. Net ของคุณ สิ่งนี้ขึ้นอยู่กับGeckofxแต่ต่างจาก Geckofx รุ่นปัจจุบันซึ่งจะใช้งานได้กับ Firefox รุ่นปกติ ในการใช้ Geckofx คุณจะต้องสร้าง Firefox ด้วยตัวเอง อีกครั้งสนับสนุนการค้าสามารถใช้ได้ แต่องค์ประกอบของตัวเองเป็นอย่างโอเพนซอร์ส

3. BrowseEmAll Core API

ต้องการเบราว์เซอร์ที่แตกต่างกันทั้งหมดใน. Net Application ของคุณหรือไม่ BrowseEmAll Core API ใดที่คุณสามารถรวม Chrome, Firefox, Webkit และ Internet Explorerในแอปพลิเคชันของคุณ นี่คือผลิตภัณฑ์ในเชิงพาณิชย์แต่เพื่อจะเตือน

(การเปิดเผยอย่างเต็มรูปแบบ: ฉันทำงานให้ บริษัท นี้ดังนั้นเอาทุกอย่างที่ฉันพูดด้วยเกลือเม็ด)


1

หากคุณกำลังมองหาการควบคุมบน IE ที่ดีโปรดดู: http://code.google.com/p/csexwb2/

ฉันใช้มันในผลิตภัณฑ์การผลิต มันค่อนข้างดีและมีการสาธิตที่ดีแม้ว่าดูเหมือนจะไม่ได้รับการดูแลเหมือนตอนนี้


1

Geckofx และ Webkit.net มีแนวโน้มที่ทั้งคู่ในตอนแรก แต่พวกเขาก็ไม่ได้อัพเดทกับ Firefox และ Chrome ตามลำดับในขณะที่ Internet Explorer ได้รับการปรับปรุงให้ดีขึ้นดังนั้น Webbrowser จะควบคุมตัวเองแม้ว่าจะทำตัวเหมือน IE7 โดยปริยายก็ตาม มี แต่ที่สามารถแก้ไขได้โดยเข้าไปในรีจิสทรีและเปลี่ยนเป็น IE9 ที่อนุญาต HTML5




0

ฉันได้ลองใช้เบราว์เซอร์ทั้งหมดแล้ว น่าเสียดายที่สิ่งเดียวที่ใช้ได้ผลกับฉันในทุกสถานการณ์คือ EO.Browser ฉันหวังว่าฉันจะได้เลือกโซลูชันฟรี แต่ฉันลงเอยด้วย EO.Browser มันค่อนข้างแพง แต่ได้รับการดูแลอย่างดี


0

อัพเดท 2016:

สำหรับฉันเบราว์เซอร์ทางเลือกเดียวที่เชื่อถือได้และดูแลรักษา IE คือ EO.WebBrowser ฉันใช้เวลาหลายวันหลายสัปดาห์ในการทดลองกับคนอื่น พวกเขาทั้งหมดมีปัญหาบางอย่างที่หยุดการแสดงสำหรับฉันในบางจุด


1
อืม ... ฉันพูดจาพริ้วเป็นเวลาหนึ่งสัปดาห์? พยายามทำให้ MS WebBrowser ทำงาน - ไม่เป็นประโยชน์ ไม่ลองใด ๆ ของคนอื่น =: - {ยกเว้น EO.WebBrowser ที่ทำงานให้ฉันเป็นครั้งแรก ดังนั้นมันจึงใช้เวลา 20 นาทีกับ EO และความสำเร็จเมื่อเทียบกับ 5 วันกับ MS และความล้มเหลวที่น่าอับอาย สิ่งที่ฉันต้องทำตอนนี้คือหา $ 750 เพื่อซื้อ 'สำเร็จ' !!!
Richard Hammond

0

อาจดูผลิตภัณฑ์เชิงพาณิชย์เช่นWebKitX ได้ที่นี่: https://www.webkitx.com

ป้อนคำอธิบายรูปภาพที่นี่

ใช้Chromium Embedded Frameworkและแสดง HTML5, WebGL, PDF และ Flash บน Windows XP, 7, 8, 10 นอกจากนี้ยังให้การควบคุมแบบ 32 บิตและ 64 บิต

มันมีการเข้าถึง DOM โดยใช้วัตถุ COM ที่คล้ายกับการควบคุมเว็บเบราเซอร์ IE:

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถเรียกจาวาสคริปต์โดยใช้ชื่อฟังก์ชันผ่านอาร์กิวเมนต์สเกลาร์ (ไม่ได้ใช้ eval) และมีการเรียกกลับ JavaScript สำหรับ Angular :

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถเพิ่มออบเจ็กต์ COM ที่ทำงานร่วมกันของคุณเองใน JavaScript:

ป้อนคำอธิบายรูปภาพที่นี่

รองรับ WebGL / WebAudio สำหรับการเล่นเกม HTML5 ซึ่งคุณสามารถปิดการใช้งานสำหรับสภาพแวดล้อม Citrix:

ป้อนคำอธิบายรูปภาพที่นี่


ฉันใช้มันในการผลิตและฉันเชื่อมั่นอย่างเต็มที่ ฉันลองแล้วหลาย ๆ อย่างและติดกับเบราว์เซอร์นี้ devs นั้นดีจริงๆและเป็น "ส่วนตัว" ฉันไม่ได้รู้สึกโดดเดี่ยวเหมือนกับคนอื่น ๆ ผลิตภัณฑ์ที่ดีและมั่นคงจริงๆ
tmighty

ดังนั้นจึงจำเป็นต้องมีคำเตือนดังนั้นจึงเป็นการดีที่อีเลียสจะชี้ให้เห็นว่าเขาเป็น CTO ของ mobilefx ซึ่งเป็นผู้สร้าง WebkitX
hko
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.