Есть два приложения которые работают параллельно (условно 1 и 2). Приложение 2 написано на С++(Qt). Нормальная работа приложения 2 - окно на весь экран с перекрытием меню "Пуск". Когда приложение 1 дает сигнал, приложение 2 должно вывести свое окно на первый план, при этом, закрыть собой весь экран (т.е. панель пуск не видна). На данный момент используются два метода: show(); и activateWindow();.
Но они только выводят окно в перед, при этом не закрывая панель пуск и видно как ярлык мигает желтым цветом.
Ранее уже были проверены еще некоторые методы и функции:
AllowSetForegroundWindow(true); - нет эффекта.
HWND hand = FindWindowA("LVDChild", "name"); if(hand) SetForegroundWindow(hand); - помогает с выводом приложения 1, но с приложением 2 такой же эффект как и от activateWindow();.
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); - работает через раз, точнее 1 раз срабатывает и больше не получается.
SetWindowPos ( hwndYourWindow, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE ); ... SetWindowPos ( hwndYourWindow, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE ); - нет эффекта.
Интересен тот факт, что такое поведение наблюдается только на Windows 10. Ранее приложения стояли на Windows 7 86/64 и Windows 8 86/64 и таких проблем вообще не было.
У кого какие идеи?:)
работает на Win7:
//Убираем рамки
LONG lStyle = GetWindowLong(window, GWL_STYLE);
lStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_SYSMENU | WS_SIZEBOX);
SetWindowLong(window, GWL_STYLE, lStyle);
//Двигаем окно
SetWindowPos(window, HWND_TOPMOST, 0, 0, 1920, 500, SWP_SHOWWINDOW);
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости