Reputation: 1998
public class Program
{
static void Main(string[] args)
{
var session = WebCore.CreateWebSession(new WebPreferences { WebSecurity = false });
var browser = WebCore.CreateWebView(1920, 3000, session, WebViewType.Offscreen);
WebCore.ShuttingDown += WebCoreOnShuttingDown;
browser.ConsoleMessage += BrowserOnConsoleMessage;
browser.LoadingFrameComplete += BrowserOnLoadingFrameComplete;
browser.DocumentReady += BrowserOnDocumentReady;
browser.Source = new Uri("http://www.google.ru/");
var error = browser.GetLastError();
Console.ReadKey();
}
private static void BrowserOnConsoleMessage(object sender, ConsoleMessageEventArgs consoleMessageEventArgs)
{
}
private static void WebCoreOnShuttingDown(object sender, CoreShutdownEventArgs coreShutdownEventArgs)
{
}
private static void BrowserOnDocumentReady(object sender, UrlEventArgs urlEventArgs)
{
}
private static void BrowserOnLoadingFrameComplete(object sender, FrameEventArgs frameEventArgs)
{
}
}
It does not work. None of these events ever fired. error
is None
.
I'm sure I miss something obvious. Does the WebView
should be additionally initialized somehow? I searched in Awesomium Wiki but didn't find any additional information.
Upvotes: 3
Views: 4061
Reputation: 5767
I do this & seem to work well
static void Main(string[] args)
{
var session = WebCore.CreateWebSession(new WebPreferences { WebSecurity = false });
using (WebView webViewBrowser = WebCore.CreateWebView(1024, 768, session, WebViewType.Offscreen))
{
webViewBrowser.ConsoleMessage += webViewBrowser_ConsoleMessage;
webViewBrowser.LoadingFrameComplete += webViewBrowser_LoadingFrameComplete;
webViewBrowser.Source = new Uri("http://www.google.ru/");
if (WebCore.UpdateState == WebCoreUpdateState.NotUpdating) WebCore.Run();
}
}
static void webViewBrowser_ConsoleMessage(object sender, ConsoleMessageEventArgs e)
{
Debug.Print("{0} at {1}: {2} at '{3}'", e.EventName, e.LineNumber, e.Message, e.Source);
}
static void webViewBrowser_LoadingFrameComplete(object sender, FrameEventArgs e)
{
if (!e.IsMainFrame) return;
WebView webViewBrowser = sender as WebView;
Console.WriteLine(String.Format("Page Title: {0}", webViewBrowser.Title));
Console.WriteLine(String.Format("Loaded URL: {0}", webViewBrowser.Source));
BitmapSurface surface = (BitmapSurface)webViewBrowser.Surface;
surface.SaveToPNG("result.png", true);
WebCore.Shutdown();
}
Upvotes: 2
Reputation: 6301
I made some research and found instruction here
Wait Until the Page Has Finished Loading
while (view->IsLoading())
web_core->Update();
in .Net the WebCore.Update
is deprecated and have a description:
In a non-UI environment (or even in a UI application), you can now create a dedicated Thread for Awesomium and from that thread, use WebCore.Run to start auto-updating.
so i created this code example:
static void Main(string[] args)
{
Task t = new Task(() =>
{
WebCore.Initialize(new WebConfig(), true);
WebView browser = WebCore.CreateWebView(1024, 768, WebViewType.Offscreen);
browser.DocumentReady += browser_DocumentReady;
browser.Source = new Uri("https://www.google.ru/");
WebCore.Run();
});
t.Start();
Console.ReadLine();
}
static void browser_DocumentReady(object sender, UrlEventArgs e)
{
Console.WriteLine("DocumentReady");
}
You can find more info in WebCore.Run description.
Upvotes: 8