I am writing a browser application using C# Language and GeckoFX Browser library.
Now, I want to add the Mozilla Firefox Add-on to my application.
To be precise, I want my application to block undesirable advertisement using AdBlock Plus add-on for Mozilla.
Is it possible to use a Firefox add-on in my GeckoFX control?
Sadly because Firefox extensions are largely based around the interface and working of Firefox's UI, not just the Gecko interface, I don't think it would be possible at all currently to install extensions or .XPI files.
So in order to do this without using an extension, you may have to code an adblocker yourself which I've been trying to do here.
Otherwise, good luck! I've been having similar issues and am looking towards writing my own solution.
Related
Is it possible to control and instantiate a Chrome browser from C#? Things like opening a new window, changing the URL, reloading the tabs, etc.
I've had a look for a C# Chrome API but can only find a Javascript ones on https://developer.chrome.com/, and the best I could find here was C# - How to control chrome browser - the best answer was to check out the API.
There is an API available for that. It's called 'Selenium', and has a Chrome-specific third party extension.
http://www.seleniumhq.org/
Check that link.
Doing a quick Google search for "chrome C# api" turned up some results I think you may like to consider
I thought the following were particularly promising, if you're willing to accept the concession of using Chrome's developer tools:
Automating Chrome Browser from C#
ChromeDevTools; a C# Library to interact with Chrome's Developer Tools
Chrome Debugging API
Are you looking for something like CEF Sharp?
It's an open source project that allows you to embed Chrome into your .NET application. So you can have those C# controls interact with the browser.
Anyone who has tried Puppeteer? Article about it here. (not C# specific)
I know that there are webdrivers (Selenium, Microsoft webdrivers for IE) which exposes APIs to modify web pages and possibly minimize or maximize browser window.
Is there any API from any webdriver which can modify/add web sites into compatibility view list by going through "Tools->Compatibility view settings->Add this Web Site->Add" ?
I want to achieve this on IE 11 using any programming language, preferably using C#.
No there is not. Selenium does not provide any mechanism to force browser to change the compatibility at this moment. See my answer how I am handling this. Virtual machines with NUnit console probably the easiest way to handle the compatibility. Also this can be helpful for you.
Modern.IE is a good alternative, since Selenium doesn't support what you are asking.
I have to create a webbroswer in wpf that supports all the sites and scripts and play video , I have created but some site got crashed and not supporting .
Please provide solution.
What you ran into are probably error dialogs caused by JavaScript script errors. WPF WebBrowser control currently doesn't support disabling these dialogs and ignoring the errors. The WebBrowser control is based on Internet Explorer core and will have a hard time dealing with broken JavaScript, webpages will also sometimes report the web browser as old and inform the visitor about it, like FlipKart does.
One solution is to use WindowsFormsHost and host a Windows Forms equivalent - WebBrowser control - in it. The WF WebBrowser offers a property called SupressScriptErrors, which is not implemented by the WPF WebBrowser. That will hide the error dialogs for you, but you will still occasionaly receive a warning from the website saying they don't support the web browser used. That is out of your control unless you want to take a route of hacking the control to send a different User-Agent string and that will only fool broken UA detection, feature detection will still fail for things like HTML5 video, WebRTC and the like. More on this here.
You can also choose to embed Gecko (Firefox rendering engine) or Chromium. see here for more information on embedding alternative rendering cores as an alternative to IE COM wrapper offered by the framework.
Edit: this is also a possible solution, as it would seem. You will have to test it for yourself, though. I expect it to have less overhead than the WindowsFromHost element and although this uses reflection to develop against implementation, not interface, my opinion is it's safe to say the underlaying API in unlikely to change.
I was looking for a way to embed a page that hosts WebRTC video such as the demo from http://www.webrtc.org/demo into a WinForms app so the user doesn't need to install nor launch any external browsers that may contain toolbars, etc, I looked into a few components such as GeckoFX and WebKit.Net but they fail to load the webcam video.
Do you know of any hack or other project that may support WebRTC inside .Net?
Thanks a lot
Chromium Embedded Framework claims to support WebRTC (I haven't confirmed it myself).
https://code.google.com/p/chromiumembedded/
http://en.wikipedia.org/wiki/Chromium_Embedded_Framework
WebRTC is supported by Mozilla Firefox:
http://www.webrtc.org/
If you want to embed Firefox in you project you can easily embed GeckoFX web browser control in your Windows Forms application.
The GeckoFX engine (Mozilla Firefox) says it can use WebRTC. This seem to be right (as far as I have seen yet) but there seem to be a problem with some parts of it. I'm using it actual for WebRTC and have a problem with the video part - see here: Embedded GeckoFx in C#.NET - WebRTC Video not working
I need JavaScript working almost perfectly in my application that should be able to access web content and let user take a control of it. However, webbrowser component pops new windows in separate instance / application of Internet Explorer and dotBrowser doesn't work with JavaScript properly.
Please, give me some advice - I'd even take some working example and enhance it with function I need it for.
Give a look to GeckoFX, is on open-source component for embedding the Mozilla Gecko (Firefox) in .NET applications.
I could be mistaken, but I believe new windows can be controlled (or at least suppressed) using the Web Browser control in .NET. Have a look at the NewWindow event.
I have had experience embedding both WebKit (Apple Core, used in Chrome) and XULRunner (Gecko) cores in .NET winforms applications. Let me give you some advice:
GeckoFX is your best bet. It is licensed under MPL and it works pretty much out of the box.
Follow the instructions carefully and pull the exact XUL version that is indicated. I would say it works better than the WebBrowser control. There is some talk of a significant delay when loading XUL for the first time but I've found it to be negligible. Branding and the like is fully customizable via external files.
WebKit is embeddable with SwiftDotNet. If all you need is solid javascript performance then this may be an option. If you need to be able to download files, then you have some work cut out for you.
Your downside with both routes is a nasty ~7-8mb overhead, even with compression (although I was able to get 6.5mb with lz compression in NSIS). If you are not creating distributable consumer-facing software then this may not be a problem for you.