powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Активизация программы по входящему событию
14 сообщений из 14, страница 1 из 1
Активизация программы по входящему событию
    #39999793
ziper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такая задача, чтобы по входящему событию на переднем плане активировалось окно программы. Например, у пользователя запущена программа и браузер. В браузере нажимается кнопка и через callback от сервера активируется окно программы. Код сейчас такой
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure ShowApp(Wnd: HWnd);
begin
  if IsIconic(Wnd) then
    ShowWindow(Wnd, SW_Restore)
  else
    SetForegroundWindow(Wnd);
end;

procedure OnCallback(...);
begin
  .....
  ShowApp(Application.Handle);
end;



При минимизированном состоянии программы она прекрасно разворачивается поверх других окон, а вот если она была на бэкграунде, то только мигает в таскбаре. Поискав по форуму я понял, что windows 10 не особо разрешает поп-ап поведение. Т.е. это максимум чего можно добиться и программу никак на передний план не вывести, если она была на заднем?
...
Рейтинг: 0 / 0
Активизация программы по входящему событию
    #39999814
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziperТ.е. это максимум чего можно добиться и программу никак на передний план не вывести, если
она была на заднем?

Законными путями - да. Лично меня как пользователя бесит, когда ты набираешь текст не
глядя на экран, а тут на нём всплывает какое-то левое окно и начинает неожиданно
реагировать на нажимаемые кнопки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Активизация программы по входящему событию
    #39999860
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, я показываю BaloonHint с возможностью щелкнуть по нему мышкой и уже по щелчку можно показать окно.

Но у автора темы, наверное, другой случай. Тут пользователь уже как бы ожидает, что он что-то в браузере нажмет и должно выскочить окно.
...
Рейтинг: 0 / 0
Активизация программы по входящему событию
    #39999868
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11Но у автора темы, наверное, другой случай. Тут пользователь уже как бы ожидает, что он
что-то в браузере нажмет и должно выскочить окно.

Нет, в этом случае автор и вываливал окно прямо в браузере, но он явно хочет сделать
что-то левое с чужой страницей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Активизация программы по входящему событию
    #39999895
ziper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

X11Но у автора темы, наверное, другой случай. Тут пользователь уже как бы ожидает, что он
что-то в браузере нажмет и должно выскочить окно.

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

Я ничего не хочу сделать с чужой страницей, страница тоже наша. Просто есть функциональность, реализованная в программе и надо это функциональность с веб-страницы вызывать. Например, в веб-странице щелкаешь по карте и тебе в программе этот объект открывается. Переносить большую функциональность программы в веб-страницу слишком ресурсоемко.
...
Рейтинг: 0 / 0
Активизация программы по входящему событию
    #39999901
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziperПросто есть функциональность, реализованная в программе и надо это функциональность с
веб-страницы вызывать.

В общем случае это невозможно, поскольку открывает уязвимость огромных размеров.

ziperНапример, в веб-странице щелкаешь по карте и тебе в программе этот объект открывается.

В этом случае программа должна зарегистрировать себя как обработчик определённого
MIME-type и тогда браузер сможет её запустить через стандартный диалог "открыть этот файл
в..." при получении данных с сервера. Или сразу как обработчик URL определённого протокола
(как это делают почтовые программы для "mailto://"), тогда обращение к серверу не понадобится.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Активизация программы по входящему событию
    #39999902
Фотография Virtual Student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziper, Может попробовать BringToFront дополнительно нужной форме сделать?..
...
Рейтинг: 0 / 0
Активизация программы по входящему событию
    #39999910
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Virtual StudentМожет попробовать BringToFront дополнительно нужной форме сделать?..

Не поможет. Окно может законно выдвинуться вперёд в двух случаях:
1) Его выдвинет текущее активное окно;
2) Текущее активное окно скажет системе "я в курсе и разрешаю другому окну выдвинуться
самостятельно".

Второй пункт, к сожалению, глючит, что и позволяет некоторым гадам всплывать без разрешения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Активизация программы по входящему событию
    #39999919
ziper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, насчет связи между браузером м программой

Это как раз не является проблемой, все работает и открывается через service layer, проблема только в активизации программы
...
Рейтинг: 0 / 0
Активизация программы по входящему событию
    #39999924
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziperпроблема только в активизации программы

При вызове любым из двух вышенаписанных способов браузер штатно активизирует окно
вызываемой программы (точнее позволяет ему активизироваться использовав возможность 2).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Активизация программы по входящему событию
    #39999929
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziper,

может получится обмануть Windows, вызвав предварительно:
Код: pascal
1.
   Application.Мinimize();



а далее как по накатанной, типа как в анекдоте про блоху:

анекдотВызвали Петьку как-то на экзамены. А он успел только выучить состав блохи.
Подходит он к столу, тянет билет. "Корова". Петька вздыхает и бодро принимается отвечать:
- У коровы есть мясо, кости, шкура. А в шкуре заводятся блохи...
И дальше продолжает рассказывать о блохах. Экзаменаторы в недоумении.
- Похвально. Но возьмите-ка ещё один билет.
Петька тянет. "Рыбы". Петька заводит глаза к потолку и... вдруг бодро принимается отвечать:
- У рыбы есть мясо, кости, чешуя. Но у рыбы нет шкуры! Однако если бы она была, то в ней были бы блохи. А блохи...
...
Рейтинг: 0 / 0
Активизация программы по входящему событию
    #39999931
ziper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Браузер не обращается напрямую к программе, он обращается к сервису (веббекенд) по хттп, т.е для него это вызов очередного урл, а уже сервис находится в связи с программой и открывает ее у того же пользователя на том же компьютере
Поэтому браузер не настроить на разрешение программы на foreground
...
Рейтинг: 0 / 0
Активизация программы по входящему событию
    #39999940
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziperБраузер не обращается напрямую к программе

А зря. К счастью, раз страничка Ваша, то и поменять это не составит труда.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Активизация программы по входящему событию
    #39999952
ziper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
Есть причины, почему это работает именно так, но возвращаясь к первоначальному вопросу, видимо придется смириться не с тем, что есть?
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Активизация программы по входящему событию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]