Имеется окно под многими остальными на рабочем столе. Задача — вывести его "наверх" и активировать. Следующий код не работает в конфигурации Release, но работает в Debug:
Т.е., при отладке нужное окно удается "вытащить" наверх активированным, а в релизе никакой реакции.
Если заменить весь вышеприведенный код одним вызовом SetForegroundWindow(hwnd), то окно просто начинает мигать в трее.
Здравствуйте, okman, Вы писали:
O>Здравствуйте, Ambianx, Вы писали:
A>>Не удается активировать окно с помощью функции SetActiveWindow().
O>Я использовал пару BringWindowToTop + SetForegroundWindow. O>Еще можно SetWindowPos попробовать с разными флагами.
Спасибо, попробую.
Re[3]: Не удается активировать окно, SetActiveWindow
Здравствуйте, Ambianx, Вы писали:
A>Здравствуйте, okman, Вы писали:
O>>Здравствуйте, Ambianx, Вы писали:
A>>>Не удается активировать окно с помощью функции SetActiveWindow().
O>>Я использовал пару BringWindowToTop + SetForegroundWindow. O>>Еще можно SetWindowPos попробовать с разными флагами.
A>Спасибо, попробую.
Самостоятельный вызов BringWindowToTop(hwnd) не делает ничего.
Здравствуйте, Ambianx, Вы писали:
A>Здравствуйте, okman, Вы писали:
O>>Здравствуйте, Ambianx, Вы писали:
A>>>Не удается активировать окно с помощью функции SetActiveWindow().
O>>Я использовал пару BringWindowToTop + SetForegroundWindow. O>>Еще можно SetWindowPos попробовать с разными флагами.
A>Спасибо, попробую.
Вызов 2 функций работает, но только в Debug, т.е., такой код, без использования Attach-а:
Здравствуйте, Ambianx, Вы писали:
A>Т.е., при отладке нужное окно удается "вытащить" наверх активированным, а в релизе никакой реакции. A>Если заменить весь вышеприведенный код одним вызовом SetForegroundWindow(hwnd), то окно просто начинает мигать в трее.
И это очень хорошо.
Пользователь сам решит, нужно ему обращать внимание на твое окно или нет.
Здравствуйте, rus blood, Вы писали:
RB>Здравствуйте, Ambianx, Вы писали:
A>>Т.е., при отладке нужное окно удается "вытащить" наверх активированным, а в релизе никакой реакции. A>>Если заменить весь вышеприведенный код одним вызовом SetForegroundWindow(hwnd), то окно просто начинает мигать в трее.
RB>И это очень хорошо. RB>Пользователь сам решит, нужно ему обращать внимание на твое окно или нет.
RB>А вообще, здесь и здесь еще
Здравствуйте, rus blood, Вы писали:
RB>Здравствуйте, Ambianx, Вы писали:
A>>Т.е., при отладке нужное окно удается "вытащить" наверх активированным, а в релизе никакой реакции. A>>Если заменить весь вышеприведенный код одним вызовом SetForegroundWindow(hwnd), то окно просто начинает мигать в трее.
RB>И это очень хорошо. RB>Пользователь сам решит, нужно ему обращать внимание на твое окно или нет.
RB>А вообще, здесь и здесь еще
RB>Параметры у AttachThreadInput в разном порядке.
Это два разных способа. Способ в первом примере описан в этой теме под №3. Способ же, который я привел в заголовке темы, исходит из описания функции SetActiveWindow() в MSDN: