C# 窗口焦点丢失在最小化/恢复chrome浏览器窗口和chrome扩展上

C# 窗口焦点丢失在最小化/恢复chrome浏览器窗口和chrome扩展上,c#,winforms,google-chrome,google-chrome-extension,C#,Winforms,Google Chrome,Google Chrome Extension,我已经创建了WinForm应用程序,它的webBrowser控件与Fill属性对接,并将用户重定向到用户提供的URL。我正在从chrome扩展执行WinForm进程,获得chrome的句柄,并将我的子进程(WinForm)的父进程更改为chrome浏览器进程 当我最小化chrome并再次恢复时,我失去了焦点 但在切换选项卡或从Alt+tab查找我的winForm.exe时,焦点又回来了 如何在用户进入我的活动选项卡时设置my.exe的焦点 我用C#编写了应用程序,并使用非托管代码SetParen

我已经创建了WinForm应用程序,它的webBrowser控件与Fill属性对接,并将用户重定向到用户提供的URL。我正在从chrome扩展执行WinForm进程,获得chrome的句柄,并将我的子进程(WinForm)的父进程更改为chrome浏览器进程

当我最小化chrome并再次恢复时,我失去了焦点

但在切换选项卡或从Alt+tab查找我的winForm.exe时,焦点又回来了

如何在用户进入我的活动选项卡时设置my.exe的焦点

我用C#编写了应用程序,并使用非托管代码SetParent(子句柄,父句柄)API来附加我的.exe

我已经尝试了一些链接:

代码段:

在无限while循环中的线程中侦听下面的C#代码片段,以从my main.js获取消息

private void SetAsParent()

{

            try

            {

                Process[] p = Process.GetProcessesByName("chrome");

                foreach (Process item in p)

                {

                    if (!String.IsNullOrEmpty(item.MainWindowTitle))

                    {

                        if (item.MainWindowTitle.Contains("Some Title to match my condition to show the exe...."))

                        {

                            this.Top = 78;

                            this.Left = 0;

                            SetParent(this.Handle, item.MainWindowHandle);

                            this.Visible = true;

                            this.Show();

                            this.Focus();

                            webBrowser.Navigate(some URL);

                            webBrowser.Size = new Size(1366, 979);//dynamic values coming from chrome main.js message via postMessage()

                         }

                    }

                                                                                else

                                                                                {

                                                                                this.Hide();

                                                                                }

                }

                this.Size = new Size(1366, 979);

            }

            catch (Exception ex)

            {

                Debug.WriteLine("Inside Form Load : {0}", ex.Message.ToString());

            }

        }



        [DllImport("user32.dll")]

        static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
Chrome Extension main.js:

chrome.windows.onFocusChanged.addListener(函数(){

}))

预期产出:

切换选项卡时,焦点将保留,但最小化并恢复时,焦点将丢失

chrome.windows.getCurrent(function(window){

    console.log(window.state);

    if(window.state == "normal")

                            {

       Some message to port...

    }

                            else if(window.state == "maximized")

                            {

                                            Focus message to port...

    }

                            else if(window.state == "minimized")

                            {

                                            Minimised message to port....

    }

});