Задать вопрос
@Zander

Как расположить окно позади всех?

Программа запускается вместо стандартного explorer.exe. На StackOverflow находил решение, что нужно отлавливать WM_WINDOWPOSCHANGING и ставить флаг SWP_NOZORDER. Проблема в том, что при попытке использовать ALT+TAB в первый раз фокус переходит на окно программы (но оно все еще на заднем плане), а во второй раз окно программы уже переходит на первый план, чего по сути происходить не должно.

[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
        protected override void WndProc(ref Message m)
        {
            // Listen for operating system messages. 
            switch (m.Msg)
            {
                case WM_WINDOWPOSCHANGING:

                    SetWindowPos(Handle, HWND.BOTTOM, 0, 0, 0, 0, SWP.NOMOVE | SWP.NOZORDER | SWP.NOSIZE | SWP.NOACTIVATE);

                    break;

                case WM_WINDOWPOSCHANGED:

                    SetWindowPos(Handle, HWND.BOTTOM, 0, 0, 0, 0, SWP.NOMOVE | SWP.NOZORDER | SWP.NOSIZE | SWP.NOACTIVATE);

                    break;
                
            }
            base.WndProc(ref m);
        }


...

private void Form1_Load(object sender, EventArgs e)
        {
            SetWindowPos(Handle, HWND.BOTTOM, 0, 0, 0, 0, SWP.SHOWWINDOW | SWP.NOMOVE | SWP.NOOWNERZORDER | SWP.NOSIZE | SWP.NOACTIVATE);
        }

        private void Form1_Activated(object sender, EventArgs e)
        {
            SetWindowPos(Handle, HWND.BOTTOM, 0, 0, 0, 0, SWP.NOMOVE | SWP.NOOWNERZORDER | SWP.NOSIZE | SWP.NOACTIVATE);
        }

        private void Form1_GotFocus(object sender, EventArgs e)
        {
            SetWindowPos(Handle, HWND.BOTTOM, 0, 0, 0, 0, SWP.NOMOVE | SWP.NOOWNERZORDER | SWP.NOSIZE | SWP.NOACTIVATE);
        }

        private void Form1_Enter(object sender, EventArgs e)
        {
            SetWindowPos(Handle, HWND.BOTTOM, 0, 0, 0, 0, SWP.NOMOVE | SWP.NOOWNERZORDER | SWP.NOSIZE | SWP.NOACTIVATE);
        }
  • Вопрос задан
  • 262 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы