在Windows 10中将一个应用程序放在另一个应用程序的前面

时间:2017-08-28 08:20:28

标签: c++ windows qt windows-10

我有两个与Qt一起运行的独立进程,我需要能够将一个进程放在另一个进程之前。他们彼此沟通,所以你认为这不会是一个大问题。但是Windows 10对此非常严格。我所要做的就是让我想要在Windows工具栏中前面闪烁橙色的窗口。

Code I尝试使用到目前为止:

A类(当前有效):

AllowSetForegroundWindow(ASFW_ANY);

B级(我想带到前面的那个):

#ifdef WIN32
    if(hWnd)
    {
        SetForegroundWindow(hWnd);
        SetActiveWindow(hWnd);
        BringWindowToTop(hWnd);
    }
#endif

hWnd早先得到(当B类是活动窗口时):

hWnd = GetActiveWindow();

我误解了什么吗?为什么这仍然不起作用?

1 个答案:

答案 0 :(得分:0)

  

如何将Qt / Windows小部件始终置于顶部?

面对如上所述的一些问题,以下解决方案对我有用:

void widgetToTop(QWidget* widget)
{
    bool wasMax = widget->isMaximized();
    bool wasMin = widget->isMinimized();
    HWND h = (HWND)widget->winId();
    if (wasMax || wasMin)
    {
        ::ShowWindow(h, SW_SHOW);
        ::ShowWindow(h, wasMax ? SW_MAXIMIZE : SW_RESTORE);
        ::SetForegroundWindow(h);
    }
    else
    {
        ::ShowWindow(h, SW_SHOWNORMAL);
        ::SetForegroundWindow(h);
    }
}

这当然可以使用纯Win32 API重新编写。

P.S。也许解决方案并不完全“在另一个之上”,但可能就足够了。