| Автор
| Сообщение |
|
|
|
Цитата |
|
Не могу заставить свою программу стать активной и появиться на переднем плане...
SetForegroundWindow только инициирует моргание на таскбаре...
КАК сделать окно действительно АКТИВНЫМ???
чтобы фокус установился и т.д. |
|
| В начало |
|
 |
|
|
 |
 Gelios
Oracle-вый маньяк, Админ

Возраст: 37
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
|
|
|
Цитата |
|
а в какой момент ты пытаешься? _________________ нельзя давать всем всего, ибо всех много, а всего мало |
|
| В начало |
|
 |
|
|
|
Цитата |
|
to Gelios
как в какой?
когда нужно сообщить что-нибудь срочное.
ну я почти решил уже, но мне не очень нравится решение...
сначала сворачиваем нашу прогу
Application.Minimize;
если "сворачивали в трей", то
if not IsWindowVisible(Application.Handle) then
ShowWindow(Application.Handle, SW_SHOW);
ну и восстанавливаем...
Application.Restore;
а уже при ресторе окно вылазит вперёд
но всё-таки хочется "правильно" это всё делать, а то как-то кривовато... |
|
| В начало |
|
 |
 Gelios
Oracle-вый маньяк, Админ

Возраст: 37
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
|
|
|
Цитата |
|
если ты работаешь с прогой, то она и так активна. А если хочешь вывести что0то важное, то юзай системное модальное окно. Оно будет поверх всех окон и невозможно будет переключится на другое окно, пока его не закроешь _________________ нельзя давать всем всего, ибо всех много, а всего мало |
|
| В начало |
|
 |
|
|
|
Цитата |
|
to Gelios
а если человек (юзер) открыл мою программу, а потом чего-нибудь в ворде стал делать?
ему выдаётся системное сообщение и он станет звонить мне, чтобы проныть: "а чего это у меня ворд ругается?"
поэтому и нужно, чтобы появилось окно моей программы, и вывелось сообщение, иначе пользователь не поймёт, чего от него хочет "ворд"
P.S. конечно же, я вставил проверку на активность своей программы, чтобы сразу выдавалось сообщение без всяких минимизаций...
P.P.S. хочется всё-таки увидеть вариант без лишнего Minimize/Restore...  |
|
| В начало |
|
 |
 Gelios
Oracle-вый маньяк, Админ

Возраст: 37
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
|
|
|
Цитата |
|
я сделал так:
на форму бросил TTimer, интервал установил в 10 секунд, в обработчике ontimer написал следующий код:
SetForegroundWindow(Handle);
Запустил прогу, переключился на другое приложение, через десят секунд, активным стало мое приложение. _________________ нельзя давать всем всего, ибо всех много, а всего мало |
|
| В начало |
|
 |
|
|
|
Цитата |
|
to Gelios
смотри мой самый первый пост...
P.S. система - XP/2000 |
|
| В начало |
|
 |
 Gelios
Oracle-вый маньяк, Админ

Возраст: 37
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
|
|
|
Цитата |
|
у меня ХР и все нормально работает. _________________ нельзя давать всем всего, ибо всех много, а всего мало |
|
| В начало |
|
 |
|
|
|
Цитата |
|
to Gelios
а у меня ~100 компьютеров с XP и 2000
и только в таскбаре моргает...
а если прога свёрнута в трей, то вообще только бип и всё...
P.S. какой у нас оживлённый разговор  |
|
| В начало |
|
 |
|
|
 |
 Gelios
Oracle-вый маньяк, Админ

Возраст: 37
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
|
|
|
Цитата |
|
дома почитаю литературу, а можь что найду... _________________ нельзя давать всем всего, ибо всех много, а всего мало |
|
| В начало |
|
 |
 Gelios
Oracle-вый маньяк, Админ

Возраст: 37
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
|
|
|
Цитата |
|
как вариант, у главной формы установи состиояние fmStayOnTop а потом сними _________________ нельзя давать всем всего, ибо всех много, а всего мало |
|
| В начало |
|
 |
|
|
|
Цитата |
|
to Gelios
неее
я так уже делал
совсем извратно получается...
причём первый раз всё нормально, окно появляется, потом messagebox, но если не отреагировать на сообщение и опять уйти в другое окно, то больше не выводится...
а потом, когда переключаешься на прогу, то получается, что есть только одно модальное сообщение, а остальные, которые были до этого, как бы перестают быть модальными... и их можно даже не заметить, т.к. они будут за главной формой...
а если немодальных рабочих форм несколько, то вообще бардак получится...
так что вариант minimize/restore пока самый оптимальный...
правда прикольно выглядит, когда приложение, которое видно, но оно назаднем плане, вдруг минимизируется а потом восстанавливается и выдаётся сообщение  |
|
| В начало |
|
 |
 Gelios
Oracle-вый маньяк, Админ

Возраст: 37
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
|
|
|
Цитата |
|
если не секрет, то что за приложение? _________________ нельзя давать всем всего, ибо всех много, а всего мало |
|
| В начало |
|
 |
|
|
|
Цитата |
|
to Gelios
это приложение для работы с БД
надо просто уведомлять пользователей о чём-нибудь, например, чтобы закрыли приложение...
хотя я и сам могу закрыть своё приложение удалённо, но думаю, что директору не понравится, если он чего-нибудь там делает, а программа закрывается...  |
|
| В начало |
|
 |
 Gelios
Oracle-вый маньяк, Админ

Возраст: 37
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
|
|
|
Цитата |
|
а не проще ли в таких случаях net send юзать?
ведь программы работы с БД - это интерактивные программы, и даже если юзер запустит отчет на пол часа, то не обязательно его извещать об окончании расчета, так как он сам будет периодически на него перключаться, что бы проверить сформировалость или нет... _________________ нельзя давать всем всего, ибо всех много, а всего мало |
|
| В начало |
|
 |
|