Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何处理屏幕外的弹出链接_C#_Console Application_Cefsharp - Fatal编程技术网

C# 如何处理屏幕外的弹出链接

C# 如何处理屏幕外的弹出链接,c#,console-application,cefsharp,C#,Console Application,Cefsharp,我编写了一个控制台应用程序,它使用CEF屏幕外渲染模式,并提供自己的窗口,其中显示从CEF渲染引擎返回的图像。 我设法让子窗口打开(和关闭),但对于具有“与AccelAero连接”功能的站点,我有一个问题,例如。 在此类网站中,会弹出一个新窗口,允许用户输入其FB凭据。然后弹出窗口关闭,网站允许您进入。 在我的实现中,弹出窗口确实会出现,但一旦获得批准,它将保持打开状态,没有任何内容(使用开发工具测试表明它不再连接),并且在父窗口中不会发生任何事情 public class LifeSpanHa

我编写了一个控制台应用程序,它使用CEF屏幕外渲染模式,并提供自己的窗口,其中显示从CEF渲染引擎返回的图像。 我设法让子窗口打开(和关闭),但对于具有“与AccelAero连接”功能的站点,我有一个问题,例如。 在此类网站中,会弹出一个新窗口,允许用户输入其FB凭据。然后弹出窗口关闭,网站允许您进入。 在我的实现中,弹出窗口确实会出现,但一旦获得批准,它将保持打开状态,没有任何内容(使用开发工具测试表明它不再连接),并且在父窗口中不会发生任何事情

public class LifeSpanHandler : ILifeSpanHandler
{     
    public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser)
    {

    }

    public bool DoClose(IWebBrowser browserControl, IBrowser browser)
    {
        return false;
    }

    public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)
    {

    }

    public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
    {
        //var chromiumWebBrowser = (ChromiumWebBrowser)browserControl;
        //var windowX = (windowInfo.X == int.MinValue) ? double.NaN : windowInfo.X;
        //var windowY = (windowInfo.Y == int.MinValue) ? double.NaN : windowInfo.Y;
        //var windowWidth = (windowInfo.Width == int.MinValue) ? double.NaN : windowInfo.Width;
        //var windowHeight = (windowInfo.Height == int.MinValue) ? double.NaN : windowInfo.Height;

        ChromiumWebBrowser chromiumBrowser = null;
        /*
           it is a website which have a scripts that start a new popup 
           on its first page and when I want to grab the handler of the 
           popup window in a new page the scripts of the page understand
           this and reopen a new popup window which I want to grab its 
           handler too.
        */
        chromiumBrowser = new ChromiumWebBrowser(targetUrl);
        chromiumBrowser.SetAsPopup();
        chromiumBrowser.LifeSpanHandler = this;
        newBrowser = chromiumBrowser;
        return true; //Infinite loop
    }
}
电话:

   browser = new ChromiumWebBrowser("http://reservations.daallo.com/xbe/public/showLogin.action");
   browser.LifeSpanHandler = new LifeSpanHandler();

您的
ILifeSpanHandler
的实现是什么样子的?@amaitland我实现了ILifeSpanHandler,但我无法将新窗口弹出窗口处理为屏幕外。如果没有演示您的问题的代码,任何人都不可能帮助您。@amaitland添加ILifespanHandler的实现可能没有人尝试使用自己的
ChromiumWebBrowser
实例创建弹出窗口。您可能需要调试和代码更改才能使其工作。首先,在创建新的
ChromiumWebBrowser
实例时,不要创建底层浏览器。