UPDATE 2: There’s an updated version of the demo based on Awesomium’s own .NET wrapper; read more here.
UPDATE: Be sure to check out the .NET wrapper now included with Awesomium!
I’ve updated my WPF Chromium WebBrowser for .NET 4.0 and Awesomium 1.6 RC1. You can find the source code here on CodePlex.
Cjc.ChromiumBrowserDemo adds a couple of new features:
- Zoom in / out buttons.
- “Console” checkbox – Shows a console allowing you to execute arbitrary javascript on the page.
It currently has a few known issues:
- Resizing the page (either directly or while rotating) can cause some flicker. This should be improved by an upcoming Awesomium tweak.
- Some javascript can cause the console to “die” and ignore subsequent statements. Don’t use “document” or “window” on their own. However it appears safe to use things like this:
document.getElementById( ‘myElement’ ).style.background = ‘red’
To build the solution, make sure you also download Awesomium 1.6 RC1 (direct link) and place it in an Awesomium folder below the root. Your folders should look something like this:
Cjc.WpfChromium.4.0
— Awesomium
—- build
—- docs
—- include
—- samples
— Cjc.AwesomiumWrapper
— Cjc.ChromiumBrowser
— Cjc.ChromiumBrowserDemo
— Cjc.WebSnapshot (optional)
I’ll aim to post a new ClickOnce demo in the next few days.
187 comments
Comments feed for this article
October 4, 2010 at 11:03 pm
A Real WPF WebBrowser « Chris Cavanagh's Blog
[…] on October 4, 2010 at 10:57 pm | Reply A Real .NET 4.0 WebBrowser « Chris Cavanagh's Blog […]
October 4, 2010 at 11:23 pm
WPF Chromium WebBrowser source code! « Chris Cavanagh's Blog
[…] August 25, 2009 by Chris Cavanagh UPDATE 2: New version available for .NET / WPF 4.0 here! […]
October 4, 2010 at 11:24 pm
WPF Chromium WebBrowser updates « Chris Cavanagh's Blog
[…] July 23, 2010 by Chris Cavanagh UPDATE: New version available for .NET / WPF 4.0 here! […]
October 5, 2010 at 12:16 am
Koichi Senada
Hello, Chris, and thank you for the release.
Sadly, I have to report a bug which still prvents me from using it.
First, I compile all the projects and run the Cjc.ChromiumBrowserDemo
Then, I click the “New Window” button, which opens another MainWindow with the WebBrowser within.
Then, I close the original MainWindow, and they both hang unresponsive then.
Note, that opening even more MainWindow instances and closing the original one causes exceptions.
Note, that everything works well as long as the first original MainWindow is kept open and running.
Note, that Cjc.AwesomiumWrapper project compilation still requires some messy tweaking of the -ologo parameter to get rid of the compilation error under Visual Studio 2010.
I suppose the problems are related to the same WebCore construction and destruction.
October 5, 2010 at 6:36 am
Chris Cavanagh
Koichi – I’ll take a look at it; should be pretty straighforward fix 🙂
October 5, 2010 at 12:44 am
Alex
Chris,
Great news about the update. Is there still NET 3.5 support?
October 5, 2010 at 6:57 am
Chris Cavanagh
Alex – The Cjc.AwesomiumWrapper assembly is still .NET 3.5. I’ll release a .NET 3.5 version of the other assemblies when more of the bugs are ironed out 🙂
October 5, 2010 at 4:00 am
Damien
Thanks a lot for the release. Great job Chris !
Just have the same bug as Koichi Senada has described.
October 5, 2010 at 6:58 am
Chris Cavanagh
Damien – I’ll update it here when it’s fixed.
October 5, 2010 at 7:49 am
Lex van der Sluijs
Hi Chris,
fantastic, I’ve got it to compile and run now! (Using VS 2010 Professional Trial)
With the goal of making a great thing even better, here are some reports:
1) I got the error “error RC1106: invalid option: -ologo” when compiling the Cjc.AwesomiumWrapper project. This is emitted by the Resource Compiler (RC).
My suspicion was that this option should have been ‘-nologo’, and indeed, when I go to the project properties -> Configuration properties -> Resources and set “Suppress startup banner” to “No”, then everything builds fine. My guess is that this is actually a bug in VS..
2) when I try to open mainwindow.xaml in the VS editor, I get the following message in the editor window: “System.IO.FileNotFoundException Could not load file or assembly ‘Cjc.AwesomiumWrapper.dll’ or one of its dependencies. The specified module could not be found.
at Cjc.ChromiumBrowser.WebBrowser.CompositionTarget_Rendering(Object sender, EventArgs e)
(…. rest of stack trace)
Does this work in your environment? No references are missing in the Cjc.ChromiumBrowserDemo project, and in the \bin\debug folder the 3 DLL’s are present. Which is logical since the program itself does run, just not in the editor. Maybe these DLL’s need to be loaded into the GAC for use at edit-time? Or is there another way?
3) When I close the main window after opening a second window, I don’t get a hang but a crash: Null pointer exception in Cjc.AwesomiumWrapper.h at line 868: bool IsDirty() { return webView->isDirty(); }
Hope this helps, and thanks!
Lex
October 5, 2010 at 8:33 am
Chris Cavanagh
Lex – Thanks for the great feedback! 🙂 I’ll get all (most? 🙂 ) of these fixed in the next day or two. Certainly the WebBrowserManager class is flawed (WebCore itself is a singleton; I’m probably not handling it carefully enough).
The VS/designer issue is just related to the location of the native DLLs (Awesomium/Chromium); I’ll look into that once the main bugs are fixed.
October 6, 2010 at 1:40 am
The Morning Brew - Chris Alcock » The Morning Brew #701
[…] A Real WPF 4.0 WebBrowser – Chris Cavanagh announces the latest release of his WPF Chromium WebBrowser whcih brings a native WPF based browser control to the table. This latest release has been updated for .NET 4 and Awesomium 1.6 RC1 […]
October 12, 2010 at 3:09 am
Pierre L.
Hi Chris,
I just downloaded your last WPF 4.0 WebBrowser + Awesomium 1.6 RC1 but I can’t manage to make it work. In fact, it compiles well given that I change the platform of the CjC.AwesomiumWrapper to vs100 but when the application is lauching, I get a “Attempted to read or write protected memory. This is often an indication that other memory is corrupt.” in
void LoadURL( String^ url )
{
webView->loadURL( marshal_as( url ) );
}
I can’t find anything in all the comments that solved my issue 😦
Do you know what I’m missing here?
October 12, 2010 at 6:45 am
Chris Cavanagh
Hi Pierre,
Does it run ok if you leave the toolset version at v90 for Cjc.AwesomiumWrapper? Unfortunately having v90 is a requirement because both Awesomium and Chromium currently have dependencies on the v90 C++ runtime.
If you have any ideas of other ways to resolve this, please let me know!
Thanks for the feedback 🙂
Chris
October 12, 2010 at 7:27 am
Pierre L.
Hi Chris,
Unfortunately, if I keep the v90 platform toolset, I get this message and it won’t compile :
Error 5 error MSB8009: .NET Framework 2.0/3.0/3.5 target the v90 platform toolset. Please make sure that Visual Studio 2008 is installed on the machine. C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets 292 6 Cjc.AwesomiumWrapper
I don’t have yet a solution for that, but I’m looking into things to make it work 😉
Thx for your quick answering
Pierre
October 12, 2010 at 8:39 am
Chris Cavanagh
Pierre – I’d forgotten about the VS2008 requirement… Do you have an existing (compiled) Cjc.AwesomiumWrapper assembly you could reference instead? (I could mail a copy if it’ll help).
October 12, 2010 at 8:52 am
Pierre L.
Send me one please, I don’t wish to install VS 2008 just to compile this one project .. 🙂
Thx for your help
October 12, 2010 at 8:57 am
Chris Cavanagh
Pierre – You can download the current version (for Awesomium 1.6 RC1) from http://www.chriscavanagh.com/chris/Cjc.AwesomiumWrapper.zip.
October 12, 2010 at 9:10 am
Pierre L.
Thx a lot 🙂
October 12, 2010 at 9:18 am
Pierre L.
Arf, in fact, it doesn’t work either with your AwesomiumWrapper.dll…
Program is stuck at the :
InitializeWebView( width, height );
Not crashing yet, but still been waiting for a return for 5 minutes now.. :s
October 18, 2010 at 10:20 am
Pierre L.
Hi Chris,
I got your sample nearly working, but it seems like the AwesomiumWrapper you send me isn’t working well actually. I don’t have a webpage in your sample because the WebCore Constructor throws an error…
I installed VS 2008 to compile AwesomiumWrapper from your project, but I doesn’t compile, telling me it misses WebCore.h
Pierre
October 18, 2010 at 11:37 am
KoichiSenada
Pierre, that missing WebCore.h is a common error, caused by missing the instructions.
Please check out the following discussion.
http://wpfchromium4.codeplex.com/Thread/View.aspx?ThreadId=230170
October 12, 2010 at 9:21 am
Chris Cavanagh
Dang, not good 😦 I’ll take a closer look at this later today 🙂
October 12, 2010 at 9:23 am
Pierre L.
in fact, it is exactly this line :
webViewListener = new WebViewListener();
in which i cannot step that freezes the app.
Thx for your time, hope you can guide me to solution soon 😉
October 18, 2010 at 2:25 am
Pierre L.
Hi Chris,
I managed to have a working & easy to re-use sample of your wpf browser, but I have still one mighty bug. I can navigate in pages through links, but I’m not able to write any text in any textbox rendered in your browser… I tried focusing, but the thing is, I have no problem getting the focus on a textbox, but still no textbox get the inputs.
Any idea about what’s happening there?
Thx for your help and all your pretty good work 😉
Pierre
October 13, 2010 at 12:19 am
Koichi Senada
Any chance to get WpfChromium4 able to support multiple tabs?
Chris, do you need any help with that?
October 13, 2010 at 1:12 am
Chris Cavanagh
Koichi – Do you mean the demo exe? (I doubt the WebBrowser control itself needs to care about tabs)
October 13, 2010 at 1:23 am
Koichi Senada
Personally I still get a NullReferenceException while closing the primary MainWindow of the demo with a secondary MainWindow running.
It throws an exception because of trying to call webView->isDirty(); after webView has been disposed and nullified.
Do you think nothing should be fixed at the WebBrowser code?
Look at the call stack:
Cjc.AwesomiumWrapper.dll!CjcAwesomiumWrapper::WebView::IsDirty() Line 868 + 0x11 bytes C++
Cjc.ChromiumBrowser.dll!Cjc.ChromiumBrowser.WebBrowser.CompositionTarget_Rendering(object sender, System.EventArgs e) Line 244 + 0x1d bytes C#
Cjc.AwesomiumWrapper.dll!.Awesomium.WebCore.__delDtor(uint ) + 0x27 bytes
Cjc.AwesomiumWrapper.dll!CjcAwesomiumWrapper::WebCore::~WebCore() Line 1103 + 0x1d bytes C++
Cjc.AwesomiumWrapper.dll!CjcAwesomiumWrapper.WebCore.Dispose(bool ) + 0x2b bytes
Cjc.AwesomiumWrapper.dll!CjcAwesomiumWrapper.WebCore.Dispose() + 0x25 bytes
Cjc.ChromiumBrowser.dll!Cjc.ChromiumBrowser.WebBrowserEnvironment.ReleaseWebCore() Line 109 + 0xe bytes C#
Cjc.ChromiumBrowser.dll!Cjc.ChromiumBrowser.WebBrowserEnvironment.Purge(bool force) Line 84 + 0x42 bytes C#
Cjc.ChromiumBrowser.dll!Cjc.ChromiumBrowser.WebBrowserEnvironment.OnExit(object sender, System.ComponentModel.CancelEventArgs e) Line 118 + 0xa bytes C#
October 13, 2010 at 1:36 am
Chris Cavanagh
Koichi – The “secondard webbrowser” bugs you’ve found are still there; I’ve not had time to look at them yet (busy week). I can add you as a contributor to the project on Codeplex if you’d like to fix it (not sure how soon I can get back on it); email me your username and I’ll get it set up 🙂
October 13, 2010 at 12:25 am
DonovanH
Chris,
Just a minor build event tip, for the xcopy post-build events you should wrap the source and destination in quotes to handle paths with spaces in them.
Keep up the great work!
Regards,
Donovan
October 13, 2010 at 1:10 am
Chris Cavanagh
DonovanH – Good point! I’ll make sure that’s done for the next update 🙂
October 13, 2010 at 8:42 am
Koichi Senada
Chris, thank you for adding me!
I have uploaded the fixed files.
http://wpfchromium4.codeplex.com/SourceControl/changeset/changes/3482
WebBrowserEnvironment.cs contains the most important change as it allows working with multiple windows within an application
Cjc.AwesomiumWrapper.h addresses issue with combo boxes.
http://wpfchromium4.codeplex.com/workitem/263
Now the application doesn’t crash, but it doesn’t display expanded combo box items, though.
I have addressed Awesomium support discussions with this issue.
http://support.awesomium.com/discussions/problems/45-problems-with-select-tags-combo-boxes
October 13, 2010 at 9:43 am
Chris Cavanagh
Koichi – Thanks for your help! Very much appreciated 🙂
October 13, 2010 at 5:08 pm
Jason
Hi Chris,
I’ve compile and looked at your sample and I am impressed with it. It will be nice to finally get rid of the WPF WebBrowser and reclaim the airspace it was taking up in my app.
I am having a couple issues getting the chromium browser to compile and work in my project.
Project Info:
OS – Win7 x64
IDE – VS 2010
Target Framework – v4.0
I have added the Cjc.AwesomiumWrapper and Cjc.ChromiumBrowser to my references.
In my xaml window I have added the line:
xmlns:cjc=”clr-namespace:Cjc.ChromiumBrowser;assembly=Cjc.ChromiumBrowser”
I have also copied the dll, Awesonium.dll and icudt42.dll, into my output directory.
I then place the following line into my window grid:
I get the following error, that was reported above, in the Visual designer:
System.IO.FileNotFoundException
Could not load file or assembly ‘Cjc.AwesomiumWrapper.dll’ or one of its dependencies. The specified module could not be found.
at Cjc.ChromiumBrowser.WebBrowser.CompositionTarget_Rendering(Object sender, EventArgs e)
at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
I can live with that error, but when I goto compile I receive the following error:
The tag ‘WebBrowser’ does not exist in XML namespace ‘clr-namespace:Cjc.ChromiumBrowser;assembly=Cjc.ChromiumBrowser’
Any suggestions? This can be replicated with just a from scratch WPF Application project.
Thanks in advance.
October 13, 2010 at 8:26 pm
Jason
Never mind, the issue was that I needed to include the full .Net 4.0 framework, not just the client version.
October 14, 2010 at 10:05 pm
xyzzer
Does it do Flash or Silverlight?
October 14, 2010 at 11:14 pm
Koichi Senada
xyzzer, yes, it does.
You can try it yourself.
October 18, 2010 at 3:22 am
Duncan
Hey Chris,
I’m really excited to try out this component as I think it will fill one of the big holes in my toolkit… unfortunately I cannot get it to work.
I initially tried to build it and got: MSB6006: “CL.exe” exited with code 1073741515
After changing the build target of the Wrapper to v100 it builds ok but crashes with an access violation at runtime:
I have a suspicion this is something to do with the combination of VS2K10 and Win7 64bit… but not being a C++ guru I’m finding it hard to pin down exactly.
FWIW I can’t get the basic Awesomium sample to run either.
Maybe I can try again when Awesomium gets native 64Bit support.
Thanks for developing this… hope to get to try it soon.
regards
Duncan
October 18, 2010 at 6:15 am
Koichi Senada
Duncan, hello there!
What editions of Visual Studio do you have installed?
You must have Visual Studio 2008 to compile AwesomiumWrapper with v90 toolkit.
October 18, 2010 at 6:20 am
Duncan
Koichi… that would explain that part of it… I only have VS 2010 Pro installed. Thanks!
October 18, 2010 at 6:42 am
Koichi Senada
Duncan, sure, you should get either Visual Studio 2008 or the compiled DLL of AwesomiumWrapper.
I suggest you to read the prevois comments of this entry above.
October 19, 2010 at 6:39 am
Duncan
Thanks Koichi… I did eventually get this to work but then looked into the source to try and find out why it was flickering… unless I’m mistaken all the rendering is done to a giant bitmap before being painted to the screen? Somehow that concept seems to be a very bad fit for the WPF world.
October 19, 2010 at 8:18 am
Chris Cavanagh
Duncan – Until there’s a native WPF WebBrowser available, it’s likely the best fit we have for now. Chromium & Awesomium deal with byte arrays; we just copy from those to a WriteableBitmap for display.
Note there are some improvements in this area in the Awesomum 1.6-based WebBrowser (compared to the 1.5.1-based stuff). I’m sure there are many further optimizations that could be made too 🙂
October 19, 2010 at 11:28 pm
Koichi Senada
Duncan, things are not that bad, actually.
The rendering updates pixel bytes of a locked bitmap data, then marks for updating it into video memory, and unlocks then.
I have compared it with native WebBrowser based on Internet Explorer. With Internet Explorer based WebBrowser I’ve had to render each whole frame pixels, without knowing whether does it require updating. With WebKit, you can find out if there is a dirty region on the window, and if there is, update just that region, only when it’s really necessary.
You might try and dive deeper into parsing each tag, though I bet the performance will only drop from the level where WebKit renders the window bitmap. Surely, it has to be very frustrating to discover that after spending months to wrap each tag handling.
October 19, 2010 at 8:24 am
Lex van der Sluijs
Hi Chris,
we’re making good progress with the multi-touch browser we’re developing based on your component 🙂
One question: in the previous version, the display of Flash content was working out of the box (e.g. in the Threedeemium demo app), but in the latest version I get messages that Flash needs to be installed on websites that need it (e.g. our own, see the link under my name).
I’ve added these lines (marked with LvdS) to WebBrowserEnvironment.cs
private static void CreateWebCore()
{
var config = new WebCoreConfig();
// LvdS
config.SetEnablePlugins(true);
config.SetPluginPath(@”C:\WINDOWS\system32\Macromed\Flash”);
webCore = new WebCore( config );
(… etc)
but to no avail. Do you know what to do to enable Flash?
By the way, here’s a tip to others working with it: when you do a Release build (and nothing else), the program wil run but no web-content comes up. In the Task Manager you will see that no ‘AwesomiumProcess.exe’ appears (contrary to the Debug version)… The solution is to copy this file, along with icudt42.dll, awesomium.dll and the Locales and Dictionaries folders to your Release folder, that should do the trick.
@Duncan, it seems that what you want is a web-browser that has a layout engine in native WPF. I agree that this may be the ultimate solution, but it would also be a _huge_ project to develop something like that. In the mean time, I am exceedingly happy with having an Open Source component that renders everything Chromium can render to a bitmap and paints this to the screen (at any angle) :-).
October 19, 2010 at 8:30 am
Chris Cavanagh
Lex – I’d noticed Flash and Silverlight weren’t working but haven’t dug into it yet… I’d figured it was just because I’d not called SetEnablePlugins, but apparently not! 🙂 Hmm… I’m thinking we might need to hit the Awesomium forums for this (also, I’d be surprised if we needed to specify a path to the plugin – looks kinda fragile… also like you said, v1.5.1 worked great out the box).
October 19, 2010 at 11:35 pm
Koichi Senada
Chris, does Awesomium 1.5.1 work well with dropdown combo boxes?
http://wpfchromium4.codeplex.com/workitem/263
http://support.awesomium.com/discussions/problems/45-problems-with-select-tags-combo-boxes
Chris, could we please switch back to Awesomium 1.5.1 until Awesomium 1.6 becomes stable and production ready for dropdown combo boxes and plugins?
October 19, 2010 at 11:39 pm
Chris Cavanagh
Koichi – Any version should work ok with combo boxes, assuming Chromium renders them itself (unlike older IE versions that used a windowed control)…
The ‘Source code’ page on the original http://wpfchromium.codeplex.com (rather than wpfchromium4.codeplex.com) is all based on Awesomium 1.5.1. It’d be good to get that updated for .NET4 (and its improved/fixed WriteableBitmap). Let me know if you wanna do it 🙂
October 19, 2010 at 11:53 pm
Koichi Senada
Chris, of course any version should work OK with combo boxes, but unfortunately Awesomium 1.6RC fails that, which makes it unusable for my current project.
I have tested on several implementations, including AwesomiumGL sample and the ChromiumBrowserDemo.
If you click a dropdown box open and close the window, destroying the associated WebView will cause an exception. Please try it on any website. For example, the following one.
http://www.w3schools.com/TAGS/tryit.asp?filename=tryhtml_option
And I will see if I can update the WPFChromium for .NET 4.
My problem is that I am poor at C++ coding, compared to C# coding, which might be a trouble when working on AwesomiumWrapper project, if that will be necessary.
I need a stable reliable browser for WPF 4 myself, so I will surely put an effort into trying everything possible.
October 20, 2010 at 1:55 am
Koichi Senada
Chris, alright, I wanna do it.
Just give me some hint how am I supposed to do that.
What should I start from?
Currently, WPFChromium built from the SVN code quits at changing location in Debug compile mode and displays some text in new windows.
Any hint?
October 20, 2010 at 5:40 am
Chris Cavanagh
Koichi – I can look into it in a couple of days if you’re ok to wait… Otherwise the best way to tackle it is probably to start with the latest 1.6-based code. Take a copy of everything, replace the Awesomium folder with the 1.5.1 source and replace Cjc.AwesomiumWrapper with the old version too. After that you’ll just need to fix Cjc.ChromiumBrowser so it works with Cjc.AwesomiumWrapper. You’ll notice the intellisense often gets confused about the MC++ project (AwesomiumWrapper) and claims things aren’t defined when they are. Just repeat a compile – fix – compile pattern until t stops complaining. This way you shouldn’t need to touch any C++; all the changes will be to Cjc.ChromiumBrowser 🙂
October 20, 2010 at 7:15 am
Koichi Senada
I was examining the old WPF Chromium project code again to refresh my memory, downloading the code from the SVN repository of http://wpfchromium.codeplex.com/ which is based on Awesomium 1.5.1
Then I have noticed again, that it crashes at certain situations, mostly at navigating to any other website, but only within debug mode.
Then I have recalled that I have stopped working on my port of Awesomium.NET based on http://speps.fr/awesomiumdotnet based on Awesomium 1.08 of 2009-12-20
I have stopped working on that because it was crashing on some important websites.
But now I have compared the behavior and figured out, that I have never tried compiling and running it in release mode.
So I have done that, and everything works fine!
My WPF4 application creates the System.Windows.Controls.UserControl based control with a background painting from a WebView rendered WritableBitmap, there I can navigate multiple pages, within multiple instances, and I can type Alt-Codes symbols into the text fields, and use Flash and Silverlight plugins, and call javascript and accept callbacks.
By the way, what license was Awesomium 1.08 distributed with?
I hope that Rémi Gillig will permit me to publish the code.
October 20, 2010 at 8:31 am
Chris Cavanagh
Koichi – I’m pretty sure Awesomium 1.08 didn’t have any significant licensing requirements… The release/debug issues I hit previously were caused by using the “wrong” debug/release build of Awesomium (earlier versions had Awesomium.dll and Awesomium_d.dll). Think that might be the issue here?
October 21, 2010 at 4:32 pm
Matt Hough
Chris, do you have any idea why I cannot set the proxy to “auto” I can only set the proxy (“myproxy:80”) but not read from the system using auto.
October 22, 2010 at 10:10 am
Matt Hough
scratch that too. found the issue and fixed. great work this is thanks.
October 25, 2010 at 9:14 am
Kyle
Hey, I’m curious if anyone else is noticing any memory issues with this?
I have a fairly unique application that uses many of these controls.
Even with the demo app, if you open a new window, then close the same window, the amount of memory used will increase and stay increased (looking at the task manager). Is this an indication something is not being released/destroyed correctly?
After using the application for an extended period of time it has to be restarted or things start to act really strange. Curious if anyone else noticed this or shad some ideas for fixes.
Thanks,
Kyle
October 25, 2010 at 9:17 am
Chris Cavanagh
Kyle – It’s certainly possible. How much memory are you leaking? Are you using the Awesomium 1.5.1 -based version, or 1.6 RC1?
October 25, 2010 at 9:54 am
Kyle
I’m using the 1.6 RC1 Version.
It seems to be leaking around 4.5 – 5MB per Browser Control.
I tried to run .NET memory profiler on it but my application locks a bit after startup in the profiler so I couldn’t get any decent results (probably due to the fact I have no idea how to use the memory profiler)
October 26, 2010 at 8:30 am
Lex van der Sluijs
Update about Flash player support:
when I only call
config.SetEnablePlugins(true);
and _don’t_ set the plugin path, then Flash works immediately 🙂
October 26, 2010 at 8:42 am
Chris Cavanagh
Lex – Awesome! Thanks for figuring it out! 🙂
November 8, 2010 at 6:54 am
Gigio
Hello,
why don’t you try berkelium(open source) instead of awesomium?
November 8, 2010 at 9:50 am
Chris Cavanagh
Gigio – There’s a very simple answer to that; I hadn’t even heard of it 🙂 I have now though so I’m going to take a look; appears very intriguing!
November 11, 2010 at 9:08 am
Joe
Any plan to switch to Berkelium so far? It seems to be more stable than Awesomium 1.6…
November 11, 2010 at 9:39 am
Chris Cavanagh
Joe – Very much so 🙂 It’s almost top of my to-do list…
November 13, 2010 at 3:12 pm
Gigio
There is already something for Berkelium and i will add a ResourceInterceptor to Berkelium asap 😉
November 13, 2010 at 4:34 pm
Gigio
Another very interesting library is cef (ChromiumEmbeddedFramework) but atm it doesn’t support offscreen(memory buffer) rendering that is their todo-list (http://code.google.com/p/chromiumembedded/issues/detail?id=100).
Valve used a modified version of cef in their Steam platform!
November 13, 2010 at 4:35 pm
Gigio
http://developer.valvesoftware.com/wiki/Chromium_Embedded_Framework
November 14, 2010 at 10:06 pm
Michel Peters
Great work so far! Have some trouble with the WPF 4.0 version.
Setup:
VS2010 Ultimate / Windows 7
Have added Cjc.AwesomiumWrapper.dll (from your binary) and Cjc.ChromiumBrowser.dll ( generated from compiling source ) to references of the project. Also added icudt42.dll and Awesomium.dll to the project root path.
Compiling gives no errors and the application starts. After that, it throws an exception of the type:
Could not load file or assembly ‘Cjc.AwesomiumWrapper.dll’ or one of its dependencies. The specified module could not be found.
I have tried to put the dll’s in /Debug/ in the root , everywhere. Do you have any idea? Could it be that my compiled version of Cjc.ChromiumBrowser is corrupted in any way? Or the use of your Cjc.AwesomiumWrapper.dll ? Or what did i do wrong 😛
Thanks
November 14, 2010 at 10:12 pm
Chris Cavanagh
Michel – Typically “not found” errors are thrown when some of the Awesomium dependencies (icudt42 etc) aren’t in the same directory as the executable. Can you send me a list of the files in the bin directory?
Also, are you using Awesomium 1.6 or 1.5.1?
November 25, 2010 at 7:14 pm
Michel Peters
Just got back from UK.
Solved the problem by setting the “always copy” for the dependencies. That worked fine, thanks.
Also, i’m having some problems with the performance. When loading a page when other controls are doing stuff ( move or something ), all other controls “freeze” when the browser load. I have turned Async loading on and off but doesnt make a difference. Is there a multi-threaded fix? Or something to fix?
November 16, 2010 at 1:10 pm
Kyle
Hey Chris,
I realize you got a lot goin on and now are taking a look at ‘Berkelium’, but I was wondering if you had plans to update this project to use Awesomium RC2 soon?
November 16, 2010 at 1:19 pm
Chris Cavanagh
Kyle – I’ll be updating the http://wpfchromium4.codeplex.com version for RC2 as soon as possible 🙂
November 22, 2010 at 9:58 am
Jack Amble
Hi Chris,
I’ve got the ChromiumBrowserDemoworking in the VS2010 IDE. Hats off to you. You’ve done some great work here!
So I’ve tried to I start my own project but I keep getting this when I try to run it:
‘FileLoadException – mixed mode assemby is built against v2.0.50727 of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.’
I think I’ve got everything in the right location and all the references seem correct but I’m obviously doing something wrong. Any help would be much appreciated.
November 22, 2010 at 12:21 pm
Chris Cavanagh
Jack – Try adding the a useLegacyV2RuntimeActivationPolicy = “true” value to the ‘startup’ element in your app.config. Let me know if this helps or not 🙂
November 23, 2010 at 3:47 am
Jack Amble
Thanks for the quick reply.
Your suggestion doesn’t fix the problem. I’m fairly new to all this so I know it must be something I’m doing wrong.
Here’s what I’m doing:
– Start a new WPF Application (Debug, x86)
– Add references to Cjc.AwesomiumWrapper.dll and Cjc.ChromiumBrowser.dll.
– Copy awesomium.dll and icudt42.dll into the project debug folder.
– Copy app.config from \Cjc.ChromiumBrowserDemo into my project folder.
– Add ‘using Cjc.ChromiumBrowser’ to MainWindow.
– Add ‘WebBrowser wb = new WebBrowser()’ in the Loaded event of the MainWindow.
– Run the project. Problem.
I really don’t want to waste your time with this. If a solution is not obvious I’ll probably resort to starting with a copy of your working Demo project.
November 23, 2010 at 6:23 am
Chris Cavanagh
Jack – Sorry it didn’t work. Your suggestion of starting with the demo sounds a good one. If it runs ok, it’ll be interesting (for me) to compare with the broken project to see what the differences are… 🙂
November 24, 2010 at 7:52 pm
jiga
First Great work!
I am trying to use the working demo project. After opening the project in Visual Studio 2008 Pro, I see that the demo project does not have the required dll set as references. As I am new to this, I am assuming, I need to do the following on the working demo project as well?
– Add references to Cjc.AwesomiumWrapper.dll and Cjc.ChromiumBrowser.dll.
– Copy awesomium.dll and icudt42.dll into the project debug folder.
– Copy app.config from \Cjc.ChromiumBrowserDemo into my project folder.
– Add ‘using Cjc.ChromiumBrowser’ to MainWindow.
– Add ‘WebBrowser wb = new WebBrowser()’ in the Loaded event of the MainWindow.
– Run the project.
November 24, 2010 at 8:28 pm
jiga
Can you send me the binaries, so I can start using the demo project, instead of building everything??
November 24, 2010 at 9:06 pm
Chris Cavanagh
jiga – You might find it easier to get up & running with the .NET 3.5 + Awesomium 1.5.1 -based project here: https://chriscavanagh.wordpress.com/2009/08/25/a-real-wpf-webbrowser/. It’s a bit less rough around the edges 🙂
November 24, 2010 at 10:41 pm
jiga
thank you so much for the binaries! I will give this a shot and let you know how it works.
Again, terrific work!
November 24, 2010 at 11:29 pm
jiga
I am getting this error, that it cannot create an instance of type WebBrowser
Here is a screenshot:

I really dont want to waste your time on this, but will be honored, if you can atleast have a look and suggest something.
The code compiles fine, but because it throws that error in the designer, I cannot go to anylink when I have the following code
browser.Navigate(“www.google.com”);
browser.Focus();
Only the parent window/container shows up.
Thanks again.
November 24, 2010 at 11:39 pm
Chris Cavanagh
jiga – The component can be tricky to get working in the VS designer because of its dependency on the native Awesomium / Chromium DLLs. If you can find the path that .NET is searching for the DLLs in, you might be able to drop the Awesomium DLLs in there. Maybe using something like SysInternals’ FileMon might reveal where it’s looking,
If you close the designer and just edit the XAML manually, can you get your app to run and show something?
If still no luck, zip up your project or a quick sample and mail it to me (chromium@chriscavanagh.com). I’ll take a look asap.
November 25, 2010 at 12:16 am
jiga
thank you so much Chris. I have sent you an email. 🙂
November 25, 2010 at 12:21 am
jiga
By manually editing XAML, and running the code. All it shows is just the Window object with nothing in the browser.
here is the screen shot
November 25, 2010 at 8:44 pm
jiga
Hi Chris,
Dont mean to disturb you on this, but wondering if you had a chance to look at the sample code I sent you. 🙂
happy thanks giving ..
November 24, 2010 at 8:45 pm
mike
Can you call C# methods to JavaScript and from JavaScript to C# using your WPF browser?
If yes, how can one do this?
November 24, 2010 at 9:09 pm
Chris Cavanagh
mike – You can call Javascript functions from .NET, or you can register a callback that you can call from Javascript… For some details, see Kevin Stumpf’s comments on this page: https://chriscavanagh.wordpress.com/2009/08/25/a-real-wpf-webbrowser/
Hope this helps!
November 27, 2010 at 2:43 am
Dido
Update to Awesomium v1.6 RC2?
November 27, 2010 at 9:08 am
Chris Cavanagh
Dido – It’s likely I’ll wait until the next full Awesomium release 🙂
November 28, 2010 at 5:10 am
Gigio
Hello Chris, if you are still interested to berkelium, i have adapted(just small changes) BerkeliumSharp (http://code.google.com/p/berkelium-sharp/) to work with last version of berkelium.
Tell me if you need it, i will glad to send it to you 😉
November 29, 2010 at 5:32 am
Koichi Senada
Gigio and Chris, please post the results somewhere, so that we can try and test those, with WPF of NET4 especially.
December 2, 2010 at 1:33 pm
Gigio
I have implemented more functions(like executeJavascriptWithResult,HttpInterceptor) in berkelium and for my convenience i renamed the project in Troymium. I will post it asap.
December 2, 2010 at 2:35 pm
Chris Cavanagh
Cool! I want my own “-ium” name too; was thinking of Cavanium 🙂
How does it compare to Awesomium (for performance, ease of use etc), and any issues using it with VS2010?
Chris
December 2, 2010 at 4:41 pm
Gigio
Cavanium looks very good 😀
I started a project with berkelium because i needed for a data resources interceptor ( i need to create complete offline pages). I asked khrona for data resources interceptor but they didn’t add it in the RC2.
Dunno about performance but maybe awesomium is more intuitive. atm i’m using vs2008 because compilation in vs2010 doesn’t yet work. Really i have not tried compilation in vs2010 because it requires a lot of time! I spent more than a day with compilation in vs2008 😦
I will let you know any news 🙂
November 28, 2010 at 9:28 am
Dido
BerkeliumSharp works with NET4?
December 3, 2010 at 2:09 am
Koichi Senada
I think BerkeliumSharp is not ready for NET4 yet.
Though, the author says it should be possible.
http://www.luminance.org/code/2010/02/21/a-managed-webkit-library-berkeliumsharp
December 12, 2010 at 12:29 pm
Gigio
It seems working with NET4. I successful compiled the wrapper and the demo(winform) in VS2010 and i added none inside app.config. Tomorrow i will try it with WPF.
December 3, 2010 at 10:48 am
Tom
Has anyone managed to get a demo of BerkeliumSharp working in wpf yet?
December 9, 2010 at 5:21 pm
Brian
So close!
My goal was to find a browser that would allow me to show and manipulate Google Earth inside WPF (Google is dropping their COM support in favor of a JavaScript only API.)
Thanks to the comment here, I was able to get your WPF Chromium Browser up purring like a kitten. (I also ran in to the WebCore issue, the -ologo issue, had to download both 2008 and 2010 of VS (I was using C# express), and I also ran in to that plug-in issue.)
But finally it all worked, the plug-ins loaded, and I could even edit the XAML via Expression Blend without a hitch, BUT!… there was one last obstacle that thwarted me.
Google Earth’s plugin rejects the render window entirely and instead renders in a separate space in the upper right corner:

Doh!
That GE window resizes appropriately to match the window, but just doesn’t want to go in there. A shame. GE in WPF would have been sweet!
December 10, 2010 at 2:01 pm
Chris Cavanagh
Brian – Great news!…almost 🙂 Google Earth would definitely be nice.
It’ll be interesting to see how things pan out with IE9 and Direct2D; maybe we won’t need anything like Awesomium to render to a surface, and maybe plug-ins like Google Earth will be able to play with IE’s Direct2D context directly… and just maybe we’ll be able to render an IE9 context in an app and apply whatever transformations we like… Totally speculative and maybe caffeine induced, but could be cool 🙂
January 19, 2011 at 1:59 pm
Gigio
Google Earth will work in troymium 1.0.0.0 beta3 😉
January 19, 2011 at 3:15 pm
Brian
Oooo, then I’ll have to take a look! Thanks!
December 12, 2010 at 4:58 am
Geoff
First great work ! Your ChromiumBrowserDemo works fine.
I’m currently trying to add Chromonium Browser to my project and I have some dificulties. After having add the useLegacyV2RuntimeActivationPolicy = “true” value to my ‘startup’ element. When I run my project I’ve these exception : http://img189.imageshack.us/img189/3292/wpfbrowser.png
Do you know how i can fix this problem ?
Thanks a lot and sorry for my bad English
December 12, 2010 at 3:48 pm
Chris Cavanagh
Geoff – Haven’t seen that exception before… Does it happen immediately on startup, or after typing a key? (call stack suggests it’s handling a key event).
December 12, 2010 at 3:59 pm
Geoff
This exception occurs directly on startup, I doesn’t press any keys.
For informations, my application is in fact a desktop which loads plugins.
So I’ve a library project name WebBroser.Plugin.dll which is loaded dynamically by the desktop application. And when I click on the buton to show the webbroser, this exception is thrown immediately.
December 13, 2010 at 3:26 am
Gigio
Same problem with berkelium. In my spare time i will try to fix.
December 13, 2010 at 3:27 am
Gigio
ops sorry my answer was for Google Map 😀
December 16, 2010 at 7:49 am
Gigio
I can confirm berkelium/NET works very well in NET4 Full/Client Profile. No need to add nothing in app.config. I’m using my derived Troymium with wpf too.
Chris doesn’t the Blog show recent comment anymore?!
December 16, 2010 at 8:18 am
Chris Cavanagh
Gigio – Is the source available? Can I post some links? 🙂
Not sure on recent comments… I needed to change the theme [to another mostly random one] because the previous one messed up code snippets 🙂 Doesn’t look like there’s a “Recent comments” widget for this bad boy.
December 16, 2010 at 11:38 am
KoichiSenada
I am very curious to test and try the sources as well.
What are the compilation requirements and functionality?
December 16, 2010 at 11:55 am
Gigio
I’m sorry, I would have liked to release the source code but my company denied to release the code because it’s part of a project with Royalies 😦
December 16, 2010 at 12:17 pm
Chris Cavanagh
Ha cool 🙂 Well if you can share any useful “gotchas” or hints, that could be useful. I’ll probably throw together a Berkelium wrapper over the holiday 😀
December 17, 2010 at 4:09 am
Gigio
Good Morning! I think you are sleeping now 😀
I have talked to my boss and atm we can only release assemblies just for non-commercial use. At least you can see the power of berkelium/troymium before spend time wrapping it. I will post some links asap 😉
December 17, 2010 at 10:02 am
Chris Cavanagh
Thanks Gigio – That’ll be cool. Are you using WriteableBitmap, or something else?
December 20, 2010 at 1:15 pm
Gigio
Hi, for a quick test i have imported and adapted code from your WPF browser 🙂 So ofc i used WriteableBitmap.
I have commented some lines and maybe there is some useless code for berkelium/troymium.
There are still some bugs and i should make a better zoom function.
Here you can download troymium http://www.troydesign.it/software.html
December 28, 2010 at 7:50 am
Alex
I have finally been able to try the latest (source) version for myself and it works quite well, resolving the biggest issue I had with the last version (no parallel browsing). I had to do a little tweaking for NET 3.5 support.
I did have one crash similar to the ones already reported regarding “bool IsDirty()” but I got a “Attempted to read or write protected memory” exception. I am really looking towards a fix for this. I wonder if this is wrapper or Awesomium RC issue.
I was also hoping for a richer API with this update. I need to provide back/forward capability but I must also be able to tell whether I can actually go back or forward. There doesn’t seem to be an API for this. Is this hard to add? I’d gladly do it myself with some help and pointers but I couldn’t find anything in Awesomium API as well…
Thanks!
December 28, 2010 at 8:16 am
Alex
Oh, and one more thing I just noticed. Flash used to work before out-of-the-box. Now it doesn’t any more even with your unmodified Cjc.WPFChromium.4.0. What could be wrong?
December 29, 2010 at 4:14 am
Gigio
Hello Alex, you could try troymium. I have embedded some history functions to beta2 that i will release after some bugfix. About flash sorry i don’t understand your problem.
December 29, 2010 at 5:23 am
Alex
Gigio,
Thanks! I have downloaded Troymium yesterday and it crashed on my Win 7 x64. Any CPU vs x86 comes to mind as a possible culprit.
December 29, 2010 at 11:50 am
Gigio
We had some problems compiling chromium under 64bit system(memory leak). So atm we are using only W7 32bit. I will install W7 64bit on a second partition asap… i think next year 😀
January 4, 2011 at 7:50 am
Alex
Happy New Year everyone!
I have successfully integrated the current WPF browser source code with my code base. I have even managed to make Awesomium RC2 working with a few tweaks. I still get random crashes here and there. I’ve eradicated some by tweaking WPF browser source and I am not sure if the remaining issues are Awesomium or WPF related.
Anyway, the next hurdle I am about to jump is the scrolling problem heavily discussed here https://chriscavanagh.wordpress.com/2009/08/25/a-real-wpf-webbrowser/.
Chris, you mentioned you’d check with Awesomium developers about the possible ways to get the virtual page dimensions. This was back in the age of v1.5. Are there any news in this respect?
If not, how should one start tackling this problem? I want to at least impose width on the page, get rid of vertical scrollbar and put everything in a ScrollViewer.
January 11, 2011 at 3:40 pm
KoichiSenada
Hello, Alex.
I used to get the sizes via JavaScript calls.
The values you need are the document.width and document.height
Hope this helps.
January 12, 2011 at 4:49 am
Tom
Hi Alex,
I’ve done something a little bit similar using javascript. I use it to save the scroll position of a page when my application is closed and the scroll back to that position when the application is reloaded. Here’s a couple of snippets that might be useful.
To get return values from javascript (error handling and non-string return types omitted):
private string executeJavascript(string command)
{
var futureValue = browser.ExecuteJavascriptWithResult(command);
var value = (object)futureValue.GetWithTimeout( 1000 ).Value();
return value.ToString()
}
For getting the current scroll position:
string XOffset = executeJavascript(“window.pageXOffset;”);
string YOffset = executeJavascript(“window.pageYOffset;”);
For setting the scroll position:
executeJavascript(“window.scrollTo(” + XValue + “,” + YValue +”);”);
For removing scrollbars:
browser.ExecuteJavascript(“document.documentElement.style.overflow = ‘hidden'”);
Hope this helps a bit, I know it’s not exactly what you asked for but hopefully it might help someone out!
January 13, 2011 at 3:26 pm
Gigio
Troymium beta 2 is out 😉
– Fixed some bugs.
– Added HideScrollBars function and onScrollSizeChanged event.
– Added History manager class.
– Added Support for 64bit System.
– Included Wrappers for .NET Framework 3.5 and 4.0.
There are still some issues, i hope to solve in next beta 😉
January 8, 2011 at 4:05 am
Dante
Hi, when I try to run Cjc.ChromiumBrowserDemo
it keeps saying the line 801 has a Memory exception error
How can I solve this?
void LoadURL( String^ url )
{
webView->loadURL( marshal_as( url ) );
}
January 8, 2011 at 11:24 am
Chris Cavanagh
Dante – Are you using the Awesomium + WPF3.5 version, or the Awesomium 1.6 version? Currently the 1.6-based stuff is buggier.
January 9, 2011 at 1:15 am
Dante
I am using the latest source code from codeplex and using Awesomium 1.6RC. So no hope to get it running? Thanks.
January 9, 2011 at 7:23 am
Dante
Problem solved with installing Visual Studio 2008. So strange! Thanks for your hardwork Chris!
January 11, 2011 at 2:12 pm
Mark
After trying to compile the project myself and failing, i decided to grab the binaries from http://www.chriscavanagh.com/chris/Cjc.ThreeDeemium/Cjc.ChromiumBrowserDemo.zip and added the Cjc.awesomiumwrapper and cjc.chromiumbrowser.dll as a reference in my project and tried to add the webbrowser to my application
However i get an error while compiling. Screenshot here: http://img842.imageshack.us/f/helpz.jpg/
Please help me. I would greatly appreciate it.
January 11, 2011 at 2:46 pm
Chris Cavanagh
Mark – It looks like you need “Name” instead of “name” as the attribute (XAML is case sensitive; Name is a standard XAML property).
Note although it should work & run fine if you’re editing the XAML directly, the XAML designer is unlikely to work correctly (the WebBrowser will likely throw an error because it can’t find the native Awesomium + Chromium (C++) DLLs).
Hope this helps!
January 11, 2011 at 3:44 pm
Mark
Thanks. It worked.
Is there a way to get the designer working? no biggie though.
I was also wondering if you are able to set custom useragent in the control.
January 11, 2011 at 8:46 pm
Mark
Also, does the executejavascript function work?
Doesn’t do anything for me.
January 12, 2011 at 12:30 am
Koichi Senada
Mark, I remember it was working and you can try it with changing the document.body.style or something equally evident.
January 12, 2011 at 7:18 am
Mark
Oh Thanks! I didn’t register the onclick even on the button. stupid me
How does executejavascriptwithresult work, can you give me an example please. I tried
Messagebox.show(browser.ExecuteJavascriptwithresult(“return document.body.innerHTML”,””).tostring());
but it returned an empty messagebox
January 12, 2011 at 7:25 am
Koichi Senada
Mark, actually I haven’t managed to get the ExecuteJavascriptWithResult working unfortunately, so I was using the callbacks instead.
January 12, 2011 at 7:45 am
Chris Cavanagh
Mark – For a while there was a bug in Awesomium’s ExecuteJavascriptWithResult method that prevented it returning anything. However according to the Awesomium forum (http://support.awesomium.com/) this was reesolved in v1.6 RC1 – http://support.awesomium.com/discussions/problems/14-executejavascriptwithresult-always-returns-null.
I’ll look into it asap.
January 12, 2011 at 2:39 pm
Mark
Okay thanks Chris.
Koichi, how do i use callbacks? mind posting the code if you aren’t busy, please.
January 13, 2011 at 1:04 am
Koichi Senada
I was using another implementation of Awesomium .NET port, but the idea was to register a callback, for example named “report”, subscribe to the OnCallback event, and then call javascript code like _WebView.ExecuteJavascript(@”javascript:Client.report(window.history.length);”);
Then my callback event handler received the name of the callback used, namely the “report” and the list of arguments.
I hope someone can comment more on using JavaScript callbacks with WPF Chromium.
January 13, 2011 at 7:06 am
Mark
Thanks.
By the way, do you know how i can change useragent string with this?
January 13, 2011 at 7:26 am
Koichi Senada
Mark, I have not tried changing the UserAgent string, but I would start looking at the CjcAwesomiumWrapper::WebCoreConfig::SetUserAgentOverride at the Cjc.AwesomiumWrapper.h file of http://wpfchromium4.codeplex.com
Link: http://wpfchromium4.codeplex.com/SourceControl/changeset/view/3482#77522
January 13, 2011 at 3:16 pm
Mark
Oh, the binaries i am using is of an older version and it doesn’t have webcoreconfig class in it and i can’t seem to compile the .net4 Project to get the dll’s.
Can you or someone else please post the updated binaries, please.
January 14, 2011 at 1:51 am
Koichi Senada
Mark, the compilation problem of wpfchromium4 has been widely discussed within this blog entry above, please refer to the previous comments of this discussion. Briefly, it requires to have both Visual Studio 2008 and Visual Studio 2010 installed on the machine.
January 14, 2011 at 2:51 pm
Mark
Thanks once again.
So i got the dll’s and everything and it works great.
I am trying to set a custom useragent by this code:
CjcAwesomiumWrapper.WebCoreConfig.SetUserAgentOverride(“sd”);
it returns the following error:
Error 1 An object reference is required for the non-static field, method, or property ‘CjcAwesomiumWrapper.WebCoreConfig.SetUserAgentOverride(string)’ RH2\WpfApplication1\Window1.xaml.cs 102 13 WpfApplication1
Please help. and Thanks in advance.
January 17, 2011 at 7:36 am
Koichi Senada
Mark, from the error message saying it looks to me that you are trying to call the non-static method SetUserAgentOverride as a static one, according to Google Search replies which I have got for that error message. Try to dig that.
January 20, 2011 at 11:39 am
Jihong
Hello Chris,
A problem with multi browsers in a tab control. It has confused me 2 days. Appreciate for your help.
I assign a Chromium browser to a TabItem content, and allow user to add more TabItem just like normal browsers, Chrome, IE, FireFox…
The problem is that only the first browser control displaying pages successfully, all the other following added browsers display html code of pages instead of a web page. I tested several web sites.
Please see below illustration:

My Dll Version:
.Net: 3.5
Cjc: Build with the source code from http://wpfchromium.codeplex.com/, and changeset is 47331
Awesomium: Tested 1.5 and 1.5.1
What I found:
If I typed a image address to open, the browser could display it, if a web site or web page, it failed.
I referred your code of YouCube3(which includes more than one browsers), but did not find any clues.
Thank you very much, and you could contact me by email: jihong.liu@gmail.com
January 21, 2011 at 6:29 pm
Jihong
I suspect this problem is caused by mimatched DLL files. Can any one share a set of matched DLL files to me? I need Release build version.
2 Cjc dll and 2 Awesomium dll.
Many thanks for your great help.
January 21, 2011 at 7:51 pm
Chris Cavanagh
Jihong – There shouldn’t be any issues using multiple browsers… What happens if you use the original WebBrowser Clickonce demo? (http://www.chriscavanagh.com/chris/Cjc.ThreeDeemium/publish.htm)
January 22, 2011 at 11:59 pm
Jihong
Hi Chris, both the demo and YouCube3 demo work fine on my machine – Win7 and 64bit.
January 23, 2011 at 8:59 am
Chris Cavanagh
Jihong – I’ll look into this as soon as possible. Would it be possible to send me some sample code demonstrating the issue? (email / dropbox or whatever).
January 25, 2011 at 5:15 pm
Jihong
Chris, sorry I am so late to send the file to you, because my baby girl is sick these days. I attached whole project files in a RAR file, please download it from here: http://cid-59c71ac16e648b89.office.live.com/self.aspx/.Public/TabBrowser.rar
Thank you so much.
January 25, 2011 at 10:39 pm
Chris Cavanagh
Jihong – Which version of Awesomium are you using? (sorry if you’ve already mentioned this). I’ve tried your sample project (getting same behavior as you on second tab; also, navigating back to the first tab can throw an access violation). I doubt it’s mismatched DLLs, but it’s possible you’ve got one of the “bad” versions of my WebBrowser (there are a few) that got into a mess with WebCore.
(FYI corrected a typo in my response; I’d originally written URLs instead of DLLs – sorry! :] )
January 26, 2011 at 12:05 am
Jihong Liu
I used Awesomium v1.5.1 SDK MSVC9, and build CJC browser from codeplex with changeset 47331.
I also encountered the exception when switching among tabs more than 5 times. I need invest it further.
January 21, 2011 at 11:50 am
Mark Davis
Chris, Great job!
One question, could you point a direction for me to find the original Awesomium 1.08 source code?
It’s hard to find them online now. If anyone has it, please share them with me. I might be able to do something good about it, and share it with everyone.
Mark
January 27, 2011 at 8:07 pm
Jim Leichliter
@Mark Davis: Two offshoots of Awesomium 1.08
http://code.google.com/p/chromiumoffscreenrenderer/
And
https://github.com/pathorn/awesomium
January 27, 2011 at 12:24 pm
Jim Leichliter
Has anyone gotten Berkelium and Berkelium Sharp to render in a WPF control? I’d like to use it in a project I’m doing. I’m currently using it in a WinForms project and I’m really liking how well it has worked out. Placing in a WPF would be even better… and to top it off, it’s a BSD license unlike Awesomium. Upon investigation it looks like Soren Dreijer has attempted it: http://social.msdn.microsoft.com/Forums/en/wpf/thread/613b0a40-9bbe-44d4-b7c3-c4b054569c54
January 27, 2011 at 7:36 pm
Jim Leichliter
@Mark Davis: Pat Horn branched off of the 1.08 Awesomium already at GitHub: https://github.com/pathorn/awesomium
Funny thing is, he abandoned that in 2009 and is actively working on Berkelium.
February 1, 2011 at 8:56 pm
Mark Davis
Jim Leichliter, thanks. I am thinking about building a wrapper for Berkelium to place it in WPF. But don’t count on it too soon. Busy with other project right now.
February 4, 2011 at 7:29 pm
Bryan
On my web page displaying in Chromium, I have a javascript function that returns a bunch of HTML in a new window. But my new window is not popping up. Is there a way to allow JS to open a new window? Or a way to intercept the JS call and put the results into a new window in codebehind? Thanks! (and nice work Chris!)
February 5, 2011 at 12:56 pm
Gigio
You should try to handle “onOpenExternalLink” event 😉
February 5, 2011 at 5:34 pm
Bryan
Cool! That sounds promising. Any examples floating around by chance?
February 5, 2011 at 9:26 pm
Bryan
Actually kind of a related question to my previous one- I can’t seem to get any popup window to work- is this not possible? I really need some control over what it pops up, but I cant seem to get ANY window.open to work. Am I missing the obvious? Thanks!
February 6, 2011 at 12:59 am
Bryan
Done! Added an event handler for onOpenExternalLink to the chromium browser and it works like a charm. Thanks!
February 10, 2011 at 8:10 pm
Bryan
Having trouble! Trying to recreate the WPF 4.0 demo project but the browser content only displays part of the time. I have scoured the demo project properties, done side-by-side comparisons of the output directories, everything I can thing of, but to no avail. References are the same, versions are the same, etc.
The demo project works without fail. When I run mine, most of the time it displays a blank window, but every once in a while it shows my html page (google) just fine. Totally at a loss.
Stepped through the code a bit too, see that with the CompositionTarget rendering update, I see my google page okay, and then after the next render after arrange override, my content is gone.
Im building this on a 64bit Win7 machine using vs2010. No problems with the build.
Anyone have any suggestions? Really would like to get this going!
February 11, 2011 at 2:52 am
Gigio
Have you same issues with troymium/belkium?
February 11, 2011 at 9:24 am
Bryan
Havent tried that one… is it a WPF control? Ill defn check it out.
February 13, 2011 at 12:54 pm
Bryan
This problem persists- it appears as though the SourceProperty DP is losing its binding… so sometimes you see a blank screen and sometimes it works.
February 16, 2011 at 10:55 am
Adam Simmons
Hey guys! Thanks for using Awesomium, we love what you have done with WPF Chromium. 🙂
We just launched an official .NET wrapper for Awesomium, “AwesomiumSharp”, as well as a new WPF browser demo. Check it out and let me know what you guys think: http://www.khrona.com/2011/02/16/top-six-new-features/
All my best,
Adam
March 16, 2011 at 1:23 am
DonovanH
Just an FYI I found an issue at shutdown in WebBrowserEnvironment where the main UI thread could be in the middle of calling WebCore.Update and recurse back into WebBrowserEnvironment and trigger disposal of WebCore (either via the app exit handler running or via Update trigger the Unloaded event to fire which would end up calling WebBrowserEnvironment.Purge).
This was resulting in an access violation. I ended up using some integer flags and interlocked instructions to do some lightweight locking in OnUpdate to track when Update is running and defer the disposal of WebCore until after Update returns.
April 11, 2011 at 3:08 am
Recki
Hi.
Please, is it possible to adapt this projet with troymium?
April 19, 2011 at 12:42 am
murphy
Hi,I find that the browser can not input Chinese character,how can I solve this problem? Thank you!
April 19, 2011 at 6:16 am
Chris Cavanagh
Murphy – I’ve not tested it with Chinese characters. The wrapper does do some manipulation of keyboard events, but it should behave correctly. Are you able to determine if it’s a wrapper problem or an Awesomium issue? (if you try one of the native Awesomium demos, it should be possible to determine if they have the same keyboard issue).
April 20, 2011 at 11:39 am
murphy
Hi!I download the WPF Sample at here: http://www.khrona.com/products/awesomium/download/. I find it can input chinese character.So I think the problem is not in Awesomium.Maybe you can check it or test.Thanks.
August 11, 2011 at 5:07 am
Dat
Hi,
Can anyone please send me a complete source code example that include all dlls. I spend a week but I cannot make it works. I tried click one application and other demo. It’s great. But when I used these dlls in my own project, There are many messy errors. I downloaded source code from codeplex, but no luck.
It seems that there is many version around and they are not compatible with each other.
Please help me out.
P/s: Please send me an example that use DLLS which has backward and forward function.
Thanks.
August 11, 2011 at 6:05 am
Chris Cavanagh
Dat – Have you tried using the “official” .NET wrapper that’s now included with Awesomium? That should work fine.
August 11, 2011 at 11:28 am
Dat
Yes, I tried it and see how it work. But unfortunately, it is not free :(.
I also tried troymium, however, there are many errors too.
August 27, 2011 at 2:15 pm
Amr Reda
Hi Chris! Can you please send me the whole project with Awesomium DLLs.. I can’t find the DLLs and I tried the “official” .NET Wrapper but it doesn’t give me the flexibility to build a MS Surface web browser that has manipulation capabilities
January 16, 2012 at 9:00 am
bvddz
visual studio 2010 professional gave following errors
Error 1 error MSB8009: .NET Framework 2.0/3.0/3.5 target the v90 platform toolset.
Please make sure that Visual Studio 2008 is installed on the machine.
f:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets 292 6 Ex1_03
any help would bee highly appreciated.
January 16, 2012 at 9:25 am
Chris Cavanagh
bvddz – Have you tried the C# wrapper that’s now included with Awesomium? As I recall, at the time this was posted Awesomium itself required VS2008; are you using the latest version of Awesomium?
February 1, 2012 at 3:04 pm
خواندنی های 13 مهر(5 Oct) | alisite
[…] A Real WPF 4.0 WebBrowser […]
May 23, 2012 at 9:37 pm
WPF 4 WebBrowser Update « Chris Cavanagh's Blog
[…] posting the WPF 4 version of my Awesomium (Chromium-based) browser wrapper, Awesomium introduced its own wrapper. I assumed everyone would just use the new wrapper and […]
December 12, 2012 at 12:35 am
jibinmathew
Is it possible to use Awesomium webbrowser control inside WPF Page .
I tried to use this with a page and loads a Url , but its not showing the contents.
This is the code i used. But the same works inside a WPF window.
So can we use it with WPF Page ? anything extra need to make that works with WPF page?
December 12, 2012 at 4:36 am
Chris Cavanagh
jibinmathew – It should work, although not sure if I tried it or not… Does the control itself appear? (just a white background of the size you specified).
December 12, 2012 at 4:43 am
jibinmathew
Yes It works with WPF page and WPF window and a good control this one.
My mistake in code makes it hidden 😦 .
Can we use the same for Windows Phone apps ? Any support for WP7 and WP8 SDK’s at present
June 28, 2013 at 4:56 am
Joey Kent
Hi m I am using VS2012 .Net framework 4.5. I am unable to use the chromium control . Is it not compatible with .Net framework 4.5 ?
July 1, 2013 at 4:52 am
Chris Cavanagh
Joey – I haven’t looked at this recently so haven’t tested compatibility with VS2012 (but .NET 4.5 should be ok). Have you tried using Awesomium’s own .NET wrapper instead?
August 27, 2013 at 3:49 am
Sachin Kumar
i can run this on x64 bit os, mail me at sacpundir@gmail.com
May 9, 2019 at 2:18 pm
c# - Comment utiliser le navigateur WebKit contrôle WPF
[…] Un Vrai WPF 4.0 WebBrowser […]