![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Приложение не должно быть видно в панели задач. [D6]
Shadow77 © (2002-04-09 18:43:00)Как сделать?
Song (2002-04-12 13:20:00) [1]Может нужно как бы в трей сворачивать?
2Shadow77 © (12.04.02 12:42)
Вообще "в трей сворачивать" - это каламбур. На самом деле, ничего никуда не сворачивается, а только создаётся видимость этого. Сворачивать в трей - вообще такого понятия нет. В трей помещается/изменяется/удаляется значок, за это отвечает TShellNotifyIcon, а прога же сама прячется и/или минимизируется через ShowWindow и/или Application.Minimize
Shadow77 (2002-04-12 12:42:00) [2]Может и да... А где такие примеры есть?
REA (2002-04-12 11:02:00) [3]Странный у вас интерфейс. Может нужно как бы в трей сворачивать? Примеров таких много. Если нужно совсем попрятать то тут можно почитать исходники BackOrifice.
Song (2002-04-12 08:29:00) [4]
protected
Procedure Catch(Var Msg:TMessage); message WM_SYSCOMMAND;
...
Procedure TForm1.Catch(Var Msg:TMessage);
Begin
With Msg
Begin
IF wParam=SC_MINIMIZE then ...; // Минимизация
IF wParam=SC_RESTORE then ...; // Восстановление
End;
inherited;
End;
Shadow77 (2002-04-11 23:52:00) [5]А поконкретней пжалста? Я по этои части несилен... Куда и как? :)
Song (2002-04-11 21:03:00) [6]2Shadow77 © (11.04.02 19:13)
Отловите сообщение WM_SYSCOMMAND c wParam=SC_MINIMIZE
Song (2002-04-11 21:03:00) [7]2Shadow77 © (11.04.02 19:13)
Отловите сообщение WM_SYSCOMMAND c wParam=SC_MINIMIZE/SC_RESTORE соответственно.
Shadow77 (2002-04-11 19:13:00) [8]Так, с этим все нормально... Только вот при минимизации окна в углу остается само окно, как в Windows 3.x. Его надо убрать (т.е. спрятать главную форму и показать при восстановлении)... А как поймать момент минимизации\восстановления окна?
MC TOL (2002-04-10 09:41:00) [9]Привет всем!
Все просто: при выполнении
ShowWindow(Application.Handle,SW_HIDE);
пропадает именно кнопка в панели задач,
а при выполнении
ShowWindow(Handle,SW_HIDE);
или
ShowWindow(Form1.Handle,SW_HIDE);
пропадает сама форма, а ее кнопка в панели задач остается.
Chepel (2002-04-10 09:35:00) [10]>Song © (10.04.02 08:20)
>>2Chepel (10.04.02 00:20)
>>Не обязательно.
Это как так? Чей Handle? =)
Song (2002-04-10 08:20:00) [11]2Chepel (10.04.02 00:20)
Не обязательно.
Chepel (2002-04-10 00:20:00) [12]ShowWindow( Application.Handle,SW_HIDE);
Shadow77 (2002-04-10 00:17:00) [13]Второй способ, как я понимаю, убирает форму совсем (хотя и первый тоже в этом варианте...) Мне надо, чтобы формабыла видна, а не было только ее кнопки в taskbar. То есть мне подходит вторая половина первого способа. :)
Вот только такой вопрос возник. Можно-ли как-то спрятать\показать кнопку в runtime (например, по button.click)
А то в этом варианте работает только в onCreate окна...
VID (2002-04-09 23:29:00) [14]Вот и выбирай :)
Song (2002-04-09 22:11:00) [15]ShowWindow(Handle,SW_HIDE);
VID (2002-04-09 18:59:00) [16]Procedure TForm1.HideMainForm;
VAR WNHND:INTEGER;
begin
//Закидываем форму очень далеко :)
Form1.Left := 10000;
Form1.top := 10000;
Application.ShowMainForm := false;
ShowWindow(Application.Handle, SW_HIDE);
// скрываем с панели задач
WnHnd := GetWindowLong(Application.Handle, GWL_EXSTYLE);
WnHnd := WnHnd or WS_EX_TOOLWINDOW;
SetWindowLong(Application.Handle, GWL_EXSTYLE, WnHnd);
end;
А на событии onCreate главной формы (TFORM1) пишешь:
begin
...
HideMainForm
...
end;