![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как спрятать приложение(не смешно) [D7, Win95/98]
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