Managing the ShowCreatedWebView Event in a C# Console Application with Awesomium

I have developed a functional headless browser using C# and Awesomium.Core for .NET. My goal is to manage the ShowCreatedWebView event from the primary view in order to capture new WebView instances and display them within the main view. Unlike the provided documentation example, which utilizes WinForms, I am seeking guidance on how to implement this in my console application. Specifically, how do I instantiate a new child window and ensure it is loaded into the primary view exclusively through Awesomium.Core? The documentation mentions that I should pass NewViewInstance to WebView(IntPtr) and assign a ParentWindow for windowed views, but I have only managed to display a blank page upon loading. I anticipated that the onDownload event would trigger after the new view loaded, but I suspect my handling of the new view might be incorrect. Can anyone provide advice on resolving this issue?

Managing the ShowCreatedWebView Event in a C# console application with Awesomium requires handling the creation of new WebView instances effectively. Here’s how you can achieve this in your console application using Awesomium.Core by ensuring you manage the events and references correctly:

  1. Initialize Awesomium and the WebView: Start by initializing the Awesomium WebCore and creating your primary WebView.
using System;
using Awesomium.Core;

class Program
{
    static void Main(string[] args)
    {
        WebCore.Initialize(new WebConfig(), true);
        using (WebView primaryView = WebCore.CreateWebView(1024, 768))
        {
            primaryView.ShowCreatedWebView += OnShowCreatedWebView;
            primaryView.Source = new Uri("http://www.example.com");

            while (WebCore.IsRunning)
            {
                WebCore.Update();
            }
        }
        WebCore.Shutdown();
    }

    // Event handler for ShowCreatedWebView event.
    static void OnShowCreatedWebView(object sender, ShowCreatedWebViewEventArgs e)
    {
        // Set properties of new view.
        e.NewViewInstance.ParentView = (WebView)sender;
        e.NewViewInstance.Width = 800;
        e.NewViewInstance.Height = 600;
    }
}
  1. Event Handler Configuration: By subscribing to the ShowCreatedWebView event, you can configure your new WebView instance when it’s created. The ShowCreatedWebViewEventArgs parameter provides you with the new view, which you can then manipulate as needed.

  2. Handling New WebView Instances: In the event handler, assign the ParentView property of the new WebView instance to ensure it is properly linked to the primary view.

  3. Updating the Core Loop: Ensure that your application’s main loop calls WebCore.Update() regularly to keep the WebCore and WebViews updated.

  4. Shutdown Cleanly: Properly shut down the WebCore to release resources when your application exits.

By following this approach, you ensure that new WebView instances are correctly created and linked to your primary view, allowing you to manage your headless browser effectively in a console application.