| 
| 
 | Вопрос # 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
 
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |