|
Вопрос # 718/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Подскажите пожалуйста, как сделать так, чтобы при каком-либо событии окно приложения разворачивалось, если свернуто, и вылезало вверх и становилось активным, если неактивно, да еще при этом и бешено мигала.
 |
Вопрос задал: Качурин Антон Павлович (статус: Посетитель)
Вопрос отправлен: 9 июля 2007, 22:36
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, Качурин Антон Павлович!
>>да еще при этом и бешено мигала
За такие программы надо давать по ушам. Сижу работаю, а тут выкидывает окно, ругается. Вам не жалко свою маму, которую будут вспоминать все пользователи вашей проги???
А теперь о более прозаичном.
вот так можно заставить мигать кнопку на пенели задач
FlashWindow(Application.Handle, True);
По поводу всплытия окна. в 95 виндовс появилась функция для перемешения окна на передный план. программисты пользовались её при любой возможности. пользователи жаловались и майкрософт поправила код. теперь, если окно свёрнуто, то оно не появиться на переднем фоне. Но для своих оставили функцию. Вот она
procedure SwitchToThisWindow(h1: hWnd; x: bool); stdcall;
external user32 Name 'SwitchToThisWindow';
{x = false: Size unchanged, x = true: normal size}
procedure TForm1.Button2Click(Sender: TObject);
begin
SwitchToThisWindow(FindWindow('notepad', nil), True);
end;
Только не спрашивайте меня как это заставить работать. И применяйте на свой страх и риск
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 10 июля 2007, 00:28
|
Ответ #2. Отвечает эксперт: min@y™
Хочу добавить кусочек своего кода. Я обычно пишу программы, которые при сворачивании пропадают с панели задач и тихо сидят в трее. Если юзер тыкнет 2 раза мышью на её иконке, то она вылезет наверх. Функцию FlashWindow() можешь вставить туда по желанию, я ей не пользуюсь. См. приложение.
Приложение: Переключить в обычный режим- procedure TMainForm.AppEventsMinimize(Sender: TObject);
- begin
- FMinimized:= True;
- end;
-
- procedure TMainForm.AppEventsRestore(Sender: TObject);
- begin
- FMinimized:= False;
- end;
-
- procedure TMainForm.TrayIconDblClick(Sender: TObject);
- begin
- if FMinimized
- then begin
- Application.Restore;
- Application.BringToFront;
- SetActiveWindow(Application.Handle);
- SetForegroundWindow(Application.Handle);
- end
- else Application.Minimize;
- end;
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 10 июля 2007, 08:13
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|