Фокус окна потерян при минимизации / восстановлении окна браузера Chrome и расширения Chrome - PullRequest
1 голос
/ 09 мая 2019

Я создал приложение WinForm, которое имеет элемент управления webBrowser, прикрепленный к свойству Fill, и перенаправляет пользователя на URL-адрес, предоставленный пользователем. Я выполняю процесс winForm из расширения Chrome, получаю дескриптор chrome и меняю родителя моего дочернего процесса ( WinForm) в браузер Chrome.

Я теряю фокус при сворачивании хрома и повторном восстановлении.

Но при переключении вкладки или из Alt + Tab, чтобы найти мой winForm .exe, фокус возвращается.

Как установить фокус моего .exe, когда пользователь заходит на мою активную вкладку.

Я написал приложение на C # и использовал API-интерфейс SetParent (дескриптор родительского дескриптора) неуправляемого кода для присоединения моего .exe.

Некоторые ссылки, которые я уже пробовал:

https://www.codeproject.com/Articles/101367/Code-to-Host-a-Third-Party-Application-in-our-Proc

Окно стыковки внутри другого окна

Размещение внешнего приложения в окне WPF

Фрагмент кода:

Прослушивание приведенного ниже фрагмента кода C # в потоке в бесконечном цикле while для получения сообщений из моего 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 Extenion main.js:

chrome.windows.onFocusChanged.addListener (function () {

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....

    }

});
* +1034 *});

Ожидаемый результат:

При переключении вкладки фокус сохраняется, но при минимизации и восстановлении фокус теряется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...