![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Application.Minimize и форма без кнопки на панели задач [D7, Win2k]
Vadimka © (2005-11-30 19:08:00)есть у меня программа, которая находится в трее и ожидает определенного времени для смены обой рабочего стола.
Кнопку приложения на панели задач я убираю следующим образом:
SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
И убираю при старте программы. При дабл клике на трей я показываю главную форму, при очередном дабл клике я скрываю кланую форму, но скрываю через Form1.Hide. Т.е. получается так что память не высвобождается и не переносится в своп. Это происходит только при Application.Minimize. Только вот засада, если я делаю так
Application.Minimize;То видно как форма вначале принела вид полоски внизу рабочего стола, ну а потом конечно же исчезла. Но это очень не красиво. Вот каким образом мне прятать форму сразу и чтобы приложение было действительно в минимизированном виде. Конечно это не глобальная проблема, но дело эстетики больше =)
Hide;
sniknik (2005-12-01 08:58:00) [1]> ShowWindow(Handle, SW_HIDE) память в своп не высвобождается, прямо какой-то парадокс.
тек тебе что нужно, минимизировать или память "освободить"? потому как совершенно нормально видеть процесс свертывания, там еще гдето в виндах эффекты свертыванию назначаются.
чтобы не видеть надо делать hide, а что бы память "убрать" можно сделать SetProcessWorkingSetSize(GetCurrentProcess, dword(-1), dword(-1));
Vadimka (2005-11-30 22:44:00) [2]
> http://forum.sources.ru/index.php?showtopic=94284&
здесь ничего полезного.
даже при ShowWindow(Handle, SW_SHOWMINIMIZED) успевает появиться полоска приложения рядом с панелью задач. А вот при ShowWindow(Handle, SW_HIDE) память в своп не высвобождается, прямо какой-то парадокс.
Винт (2005-11-30 19:49:00) [3]http://forum.sources.ru/index.php?showtopic=94284&
Vadimka (2005-11-30 19:46:00) [4]мда, вообще-то это делает тоже самое что и Application.Minimize; только видать быстрее, но заметить свернутое окно можно в некоторые моменты.
Есть ли выход вообще?
Vadimka (2005-11-30 19:21:00) [5]хм, покапался в функции Application.Minimize;
И теперь все работает как я хотел.
DefWindowProc(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
Hide;
И вопрос, делать так безопасно вообще?