Цитата salexeiy (
)
основное окно улетает под другие окна, если открыто несколько приложений, к примеру проводник или браузер. Можно как то оставить окно на месте?
Была подобная проблема. Универсального решения нет. Под XP скорее всего будет нормально работать SetForegroundWindow (hwnd).
Под семёркой и более новыми виндами уже придётся мудрить.
Рекомендую попробовать разные варианты, например включать поверх всех окон https://docs.microsoft.com/en-us....owtotop
после чего эмулировать клик мышкой по центру заголовка окна.
Само собой нужно получать координаты и габариты окна через WinAPI, иначе мышка может ткнуть не туда, куда надо.
И не забывать возвращать курсор в первоначальное положение.
Добавлено (04.10.2019, 21:09)
---------------------------------------------
Вот что-то смог у себя найти, пробуйте, без вышеописанного, но должно работать:
Код
'
' Установка фокуса на окна
'
SUB SetOutFocus (FocusTo AS HWND, FocusFrom AS HWND)
IF GetForegroundWindow() <> FocusTo THEN SetForegroundWindow (FocusTo)
IF GetTopWindow(0) <> FocusTo THEN BringWindowToTop (FocusTo)
IF GetFocus() <> FocusTo THEN
PostMessage (FocusFrom, WM_KILLFOCUS, FocusTo, 0)
SetFocus (FocusTo)
PostMessage (FocusFrom, WM_SETFOCUS, FocusFrom, 0)
PostMessage (FocusTo, WM_ACTIVATE, WA_CLICKACTIVE, FocusFrom)
END IF
ShowWindow (FocusTo, SW_SHOW OR SW_SHOWNORMAL)
END SUB
В моём случае, вроде бы всегда срабатывало.