Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Как можно вывести приложение поверх остальных, сделав его активным?  [new]
Ghost74
Member

Откуда:
Сообщений: 126
Всем привет! Пару месяцев мучаюсь с таким вопросом, но гугл не помогает, делаю сам - не работает должным образом.
Суть в чём: необходимо вывести приложение на передний план, чтобы не клацать на него, чтобы горячие клавиши работали, в общем чтоб оно стало активным. Функции типа
ShowWindow, SetWindowPos, SetforegroundWindow и тд
не работают, либо срабатывают через раз, что на windows 7 на разных ПК, что на windows 10.
Много чего перепробовал, но пока сделал так:
form6.formstyle:=fsstayontop;
    application.bringtofront;
     SetForegroundWindow(Application.Handle);
    MainForm.formstyle:=fsnormal;
     SetActiveWindow(application.Handle);
     MainForm.SetFocus;

Но необходимо нажимать на окно, чтобы выбрать его, а это не удобно. Подскажите пожалуйста, как можно реализовать такую функцию, чтобы не срабатывала через раз и не приходилось вручную делать программу активной?
8 сен 18, 18:59    [21668966]     Ответить | Цитировать Сообщить модератору
 Re: Как можно вывести приложение поверх остальных, сделав его активным?  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1882
У Рэйдмонда Чена есть хорошая статья, почему это хреновая затея. Если не ошибаюсь, у Гансмокера перевод был.
8 сен 18, 19:14    [21668975]     Ответить | Цитировать Сообщить модератору
 Re: Как можно вывести приложение поверх остальных, сделав его активным?  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1882
В догонку, подсказка - посмотреть как система себя ведёт, когда хочет уведомить юзверя
8 сен 18, 19:17    [21668978]     Ответить | Цитировать Сообщить модератору
 Re: Как можно вывести приложение поверх остальных, сделав его активным?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 45680

Ghost74
Суть в чём: необходимо вывести приложение на передний план, чтобы не клацать на него,
чтобы горячие клавиши работали, в общем чтоб оно стало активным.

Ты определись: тебе нужно именно вывести приложение на передний план или чтобы горячие
клавиши работали? С первым обломись, второе делается через функцию RegisterHotKey().

Posted via ActualForum NNTP Server 1.5

8 сен 18, 19:18    [21668979]     Ответить | Цитировать Сообщить модератору
 Re: Как можно вывести приложение поверх остальных, сделав его активным?  [new]
GunSmoker
Member

Откуда:
Сообщений: 3068
Вынос окна на передний план - это как любовь: вы не можете её украсть, вам её должны подарить
8 сен 18, 20:56    [21669011]     Ответить | Цитировать Сообщить модератору
 Re: Как можно вывести приложение поверх остальных, сделав его активным?  [new]
чччД__
Guest
GunSmoker,

а я знаю как.
Но на этот раз не скажу.
Не то в очередном патче винды и это способ прикроют.
8 сен 18, 21:00    [21669012]     Ответить | Цитировать Сообщить модератору
 Re: Как можно вывести приложение поверх остальных, сделав его активным?  [new]
под ван
Guest
Ghost74
Всем привет! Пару месяцев мучаюсь с таким вопросом, но гугл не помогает, делаю сам - не работает должным образом.
Суть в чём: необходимо вывести приложение на передний план, чтобы не клацать на него, чтобы горячие клавиши работали, в общем чтоб оно стало активным. Функции типа
ShowWindow, SetWindowPos, SetforegroundWindow и тд
не работают, либо срабатывают через раз, что на windows 7 на разных ПК, что на windows 10.
Много чего перепробовал, но пока сделал так:
form6.formstyle:=fsstayontop;
    application.bringtofront;
     SetForegroundWindow(Application.Handle);
    MainForm.formstyle:=fsnormal;
     SetActiveWindow(application.Handle);
     MainForm.SetFocus;

Но необходимо нажимать на окно, чтобы выбрать его, а это не удобно. Подскажите пожалуйста, как можно реализовать такую функцию, чтобы не срабатывала через раз и не приходилось вручную делать программу активной?

Ищи и ковыряй исходники TElTopmost из набора ElPack Tools от lmd.de - эта штука просто сущий термояд. Если её бросить на форму, то это окно перекрыть больше не сможет никто включая саму систему. По крайней мере так было от экспи до восьмёрки, в десятке не проверял.
8 сен 18, 21:11    [21669018]     Ответить | Цитировать Сообщить модератору
 Re: Как можно вывести приложение поверх остальных, сделав его активным?  [new]
GunSmoker
Member

Откуда:
Сообщений: 3068
Что если две программы сделают это?
8 сен 18, 21:25    [21669025]     Ответить | Цитировать Сообщить модератору
 Re: Как можно вывести приложение поверх остальных, сделав его активным?  [new]
schi
Member

Откуда: Москва
Сообщений: 2574
Из всех видов компьютерных преступлений наиболее отвратительным является кража фокуса у активного окна
(с) А. Махоткин
9 сен 18, 13:12    [21669228]     Ответить | Цитировать Сообщить модератору
 Re: Как можно вывести приложение поверх остальных, сделав его активным?  [new]
Ghost74
Member

Откуда:
Сообщений: 126
Dimitry Sibiryakov, нужно чтобы при выводе поверх других окон, приложение было активным
9 сен 18, 19:34    [21669347]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить