Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как спрятать приложение(не смешно) [D7, Win95/98]


Страницы:   1 2

Prov ©   (2004-01-19 00:42:00) 

Доброе время суток, господа программисты...
Не писал каких-то 4 месяца, а забыл всё ! :((
Я что-то делаю неправильно.
Вообщем, проблема такова:

Ловлю хэндл окна, пытаюсь его спрятать вот так:
ShowWindow(Wnd, SW_HIDE);
Всё бы хорошо но, когда нажимаю комбинацию клавиш Alt+Tab, видно иконку приложения. Как её спрятать ? Приложение прячется, но и иконки по Alt+Tab не должно быть. Подскажите, пожалуйста, как быть ?

И вот ещё. Вроде бы прятал приложения ещё и так:
SendMessage(Wnd, SW_HIDE, 0, 0) - окно не прячет... Подскажите, пожалуйста, и по сему вопросу...
Заранее благодарен всем, кто оказал какую-либо помощь в решении вопроса.


Игорь Шевченко   (2004-01-19 18:52:00) [21]

YuRock ©   (19.01.04 17:28)

Окно из Alt+Tab убирается, если у него выставлен стиль WS_EX_TOOLWINDOW


DVM   (2004-01-19 18:01:00) [22]

К этим всем способам можно еще такой добавить: название окна сделать пустым - '' и его не буде на панели задач и ALT+TAB. В процессах естесственно будет.


YuRock   (2004-01-19 18:00:00) [23]

> BiN ©   (19.01.04 17:41) [11]

Во класс! А я и не знал! См. [10]!

> Prov
Причем спрятать (убрать из таск-менеджера) можно процесс только "изнутри него". Другие процессы не получится (ни одним из предложенных методов).


BiN   (2004-01-19 17:41:00) [24]

RegisterServiceProcess, как видно даже из названия, регистрирует процесс, как кнедоступный пользователю через таск-менеджер, что никак не сказывается на окнах данного процесса. см [9]


YuRock   (2004-01-19 17:28:00) [25]

>

Окно прячется ч-з ShowWindow, а "из Alt+Tab убирается" ч-з RegisterServiceProcess


BiN   (2004-01-19 17:24:00) [26]

SetWindowLong(Handle, GWL_EXSTYLE,
 GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW
 and not WS_EX_APPWINDOW);


DeadMeat   (2004-01-19 17:10:00) [27]

> YuRock ©   (19.01.04 16:27)
Так о том и речь, что не всё просто так получается...

> Prov
Попрбуй как вариант выяснять, может у окна есть родитель. Если есть, то прячь его...


YuRock   (2004-01-19 16:27:00) [28]

> DeadMeat ©   (19.01.04 16:16) [6]

Не, ну уж извините, что, ShowWindow(hWindow, SW_HIDE) тяжело написать?


DeadMeat   (2004-01-19 16:16:00) [29]

> YuRock ©   (19.01.04 15:22)
Ага... И с экрана оно тоже уйдёт, и из ALT+TAB тоже спрячется...


YuRock   (2004-01-19 15:22:00) [30]

Лучше всего в 5-й винде прятать прогу так:


// Где-нибудь в Interface
function RegisterServiceProcess(d1, d2 : DWORD) : DWORD; stdcall; external 'kernel32.dll';
...
// Например, в OnCreate главной формы
RegisterServiceProcess(0, 1);


В итоге приложение "уйдет" из списка задач.


VMcL   (2004-01-19 15:17:00) [31]

Если своего и оно VCL'ное, то перекрой CreateParams. А вообще у тебя вроде правильно написано:
SetWindowLong(Wnd, GWL_EXSTYLE, GetWindowLong(Wnd, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);


Prov   (2004-01-19 07:12:00) [32]

Спасибо большое.. Приложение я прячу не только своё, а и со стороны тоже.. Напомните мне, пожалуйста, как изменить расширенный стиль окна приложения на WS_EX_TOOLWINDOW, помню только, что-то типа:
SetWindowLong(Wnd, GWL_EXSTYLE, getwindowlong(...,...,...) or WS_EX_TOOLWINDOW) но что-то не получается.. иль может ещё что-то надо добавить ?


VMcL   (2004-01-19 06:52:00) [33]

...или, если есть Application, , ShowWindow(Application.Handle, SW_HIDE);


Diamond Cat   (2004-01-19 02:56:00) [34]

создавать окно с флагом WS_EX_TOOLWINDOW


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо