Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Помогите по Delphi 6: скрытие приложения

Автор: Tok_Nik
Дата сообщения: 06.05.2006 12:18
Помогите! Как можно в Delphi убрать приложение из таскбара и, если возможно из списка задач?
Автор: MrZeRo
Дата сообщения: 06.05.2006 14:46
В проекте (Project->view source):

Цитата:

program Project2;

uses
Forms, Windows,
Unit2 in 'Unit2.pas' {Form2};

{$R *.res}
var
ExtendedStyle : integer;
begin
Application.Initialize;
ExtendedStyle:=GetWindowLong(application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle, GWL_EXSTYLE, ExtendedStyle or WS_EX_TOOLWINDOW);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
Автор: Tok_Nik
Дата сообщения: 06.05.2006 16:43
Спасибо

Добавлено:
Еще маленький вопрос: а из списка задач никак нельзя убрать?
Автор: Anjin_Kazawa
Дата сообщения: 06.05.2006 18:42
Tok_Nik

Цитата:
Добавлено:
Еще маленький вопрос: а из списка задач никак нельзя убрать?

Это смотря какая задача, а сделать можно всё. Опиши задачу.
Автор: Tok_Nik
Дата сообщения: 06.05.2006 19:05
Ну я имею в ввиду приложение которое создаю в delphi. Чтобы оно не показывалось в Диспечер задач -> Процессы.
Автор: MrZeRo
Дата сообщения: 06.05.2006 19:59

Цитата:
Еще маленький вопрос: а из списка задач никак нельзя убрать?

Вроде бы было решение, но довольно сложно, насколько помнится. И реализация различается для NT4, Win2000 и WinXP.
Автор: AlxMonster
Дата сообщения: 06.05.2006 23:19
Tok_Nik

Цитата:
Еще маленький вопрос: а из списка задач никак нельзя убрать?

В windows 9x легко
_http://delphiworld.narod.ru/base/no_in_ctrl_alt_del.html
В windows 2000/xp это гораздо сложнее. Нужно использовать механизм hook api. Есть такой пример
_http://delphiworld.narod.ru/base/app_xp_hide.html
Только когда диспетчер задач показывается в нем на мгновенье показывается твой процесс и только потом исчезает.
Автор: Tok_Nik
Дата сообщения: 09.05.2006 14:22

Цитата:
В windows 2000/xp это гораздо сложнее. Нужно использовать механизм hook api. Есть такой пример _http://delphiworld.narod.ru/base/app_xp_hide.html


Это можно использовать для Win9x ?
Автор: AlxMonster
Дата сообщения: 09.05.2006 16:22
Tok_Nik

Цитата:
Это можно использовать для Win9x ?

Нет нельзя. Для Win9x достаточно использовать функцию RegisterServiceProcess. Только ее нет в Windows NT/2000/XP. Так что используй динамическую загрузку dll.
Автор: TeXpert
Дата сообщения: 11.05.2006 05:15
AlxMonster

Цитата:
Только когда диспетчер задач показывается в нем на мгновенье показывается твой процесс и только потом исчезает.

Плохое решение.

Tok_Nik

Цитата:
Еще маленький вопрос: а из списка задач никак нельзя убрать?

Пиши сервис, и никаких проблем. А ещё лучше -- драйвер). Правда, придётся дурацкий) Delphi выбросить для этого.
Автор: DeadBoatman
Дата сообщения: 11.05.2006 10:32

попадалась книга: Делфи глазами хакера
там подробно описано как убрать и их трея и как из диспечера задач.
причем попадалась в pdf.
если найду листинг вставлю.


Цитата:
Пиши сервис, и никаких проблем. А ещё лучше -- драйвер). Правда, придётся дурацкий) Delphi выбросить для этого.


в этой книге описывается и ка драйвер написать на делфи.
Автор: TeXpert
Дата сообщения: 12.05.2006 04:41
DeadBoatman

Цитата:
попадалась книга: Делфи глазами хакера

Уж не некоего Флёнова? Что-то он многовато написал книг серии "Глазами хакера", прям конвейер какой-то. Полистал пару книжек, и не сказал бы, что хакерское, скорее -- для "хакерствующих".


Цитата:
там подробно описано как убрать и их трея и как из диспечера задач

По-моему, бессмысленная эта затея (насчёт диспетчера) -- ну поставите хук на него, а что делать с другими подобными утилитами (а их много!), например, с Process Explorer? На все хуков не напасёшься, да и накладно это для системы.


Цитата:
в этой книге описывается и ка драйвер написать на делфи

Давай, жду кода, чтобы посмеяться. А тебе известно, что компиляторы Borland неправильно могут сгенерировать даже простой vxd (если мне не веришь, обратись к руководству пакета VtoolsD от CompuWare, замечательного, между прочим, продукта). Про sys-драйверы я молчу. Borland-компиляторы для этого вообще не подходят. Претензии к Microsoft.

Добавлено:
AlxMonster

Цитата:
http://delphiworld.narod.ru/base/app_xp_hide.html


Посмотрел это "решение"... настолько ужасное. Кое-что содрали из книги Питрека, видны следы. Но, для профессионального использования не годится. Не буду пояснять, почему малоэффективно работа через секцию импорта. Самое плохое -- использование хука

Код: SetWindowsHookEx(WH_CBT, @CbtProc, HInstance, 0)
Автор: OdesitVadim
Дата сообщения: 12.05.2006 12:30
DeadBoatman

Цитата:
в этой книге описывается и ка драйвер написать на делфи.

Драйвер на делфе реально, но только на 3 версии.TeXpert

Цитата:
Borland-компиляторы для этого вообще не подходят. Претензии к Microsoft.

Компилятор здесь ни причём. Причём сдесь линковщик. Вся проблема в том, что борландовский линковщик не может делать драйвера, а майкрософтовский может. С 4 делфи поменялся формат obj и он теперь не совместимый с майкрософтовским стандартом.

Цитата:
А тебе известно, что компиляторы Borland неправильно могут сгенерировать даже простой vxd

Компилятор vxd не генерирует. Этим занимается линковщик. Но борландовский линковщик не может генерировать vxd. Прочувствуй эту фразу. А потом подумай, что написал.

Когда то на одном форуме (кажеться майкрософта) обсуждалась подобная проблема. Предлагались очень изысканые решения. Но одна девочка (судя по нику) предложила очень оригинальный способ. Суть следующая.
Ставим таймер и при его срабатывании проверяем наличие окна таскмонитора. Если оно есть - закрываем (посылка wm_close) или (что более оригинально) перемещаем за пределы рабочего стола. Если сделать плавный уход, то смотриться вообще красиво.
Tok_Nik

Цитата:
Помогите! Как можно в Delphi убрать приложение из таскбара и,

Ну это ещё можно понять
Цитата:
если возможно из списка задач?

За такое - поубывав бы. Такое нужно только для вирусняков, троянов и програм-приколистов.
Или я ошибаюсь?
Автор: Tok_Nik
Дата сообщения: 12.05.2006 13:28

Цитата:
Такое нужно только для вирусняков, троянов и програм-приколистов.

Я не пишу вирусов и т.п.

Цитата:
Или я ошибаюсь?

Ошибаешся конечно. Просто охото отомстить "другу"...
Автор: OdesitVadim
Дата сообщения: 12.05.2006 14:29
Tok_Nik

Цитата:
програм-приколистов


Цитата:
Просто охото отомстить "другу"

Разницы никакой.
Нужно внимательно смотреть "какой друг". В некоторых можно по башке получить, а некоторых и kaht наказать можно. Но по поводу этого вам в варёзник.
Автор: AlxMonster
Дата сообщения: 12.05.2006 17:46

Цитата:
Цитата:
Только когда диспетчер задач показывается в нем на мгновенье показывается твой процесс и только потом исчезает.

Плохое решение.

На самом деле название процесса невозможно заметить. Для "отомстить другу" способ вполне нормальный, если он ничего не подозревает, он ничего и не заметит (моральные аспекты этого вопроса опустим).

Сервисы видны в списке процессов. Про драйверы было верно сказано - Delphi не предназначен для написания драйверов, да и сложно это все для "отомстить другу". А для установки нужны админские привилегии.
Автор: ShIvADeSt
Дата сообщения: 13.05.2006 01:02
Итак немного тоже внесу свой вклад в это дело, первое чтобы друг не заподозрил наличие программы назови ее svchost.exe и пульни куда нить подальше, в списке задач будет еще один сервисный процесс, если друг чайник, то ему хватит, иначе он в любом случае посмотрит секцию загрузки и увидит левый процесс.
Хотя как уже говорили, за подобное можно и схлопотать по ушам так как криво написаная программа может немало "счастья" принести.
Автор: TeXpert
Дата сообщения: 13.05.2006 04:42
OdesitVadim

Цитата:
Компилятор здесь ни причём. Причём сдесь линковщик

Это конечно, имелось в виду, просто для обычных пользователей Delphi им это без разницы (что линкер, что компилятор), у меня это получилось подсознательно.


Цитата:
Но борландовский линковщик не может генерировать vxd

Насколько помню, извратиться всё же можно. Но не нужно. Надо уточнить.


Цитата:
Но одна девочка (судя по нику) предложила очень оригинальный способ. Суть следующая.
Ставим таймер и при его срабатывании проверяем наличие окна таскмонитора. Если оно есть - закрываем (посылка wm_close) или (что более оригинально) перемещаем за пределы рабочего стола. Если сделать плавный уход, то смотриться вообще красиво

Опять же плохое решение. А не проще ли ставить хук оболочки (между прочим, самый "лёгкий" в смысле нагрузок на систему) на запуск процессов, чтобы узнать момент запуска task monitor? Но вообще повторюсь -- считаю это бессмысленным, поскольку есть куча других мониторов. В этом смысле изящнее, за неимением других, способ, предложенный ShIvADeSt
Цитата:
чтобы друг не заподозрил наличие программы назови ее svchost.exe

уверен, при грамотной реализации (если не забыли сделать скрытным "SW_HIDE") даже опытные пользователи не сразу заметят "подарок" друга.


Цитата:
За такое - поубывав бы. Такое нужно только для вирусняков, троянов и програм-приколистов.
Или я ошибаюсь?

Необязательно для троянов и пр. Иногда всё же нужно, чтобы не все видели процесс.

AlxMonster

Цитата:
На самом деле название процесса невозможно заметить. Для "отомстить другу" способ вполне нормальный, если он ничего не подозревает, он ничего и не заметит

Но заметит, скорее всего, по тормозам системы (в предыдущем посте писал). А потом, почему уверены, что он воспользуется непременно task monitor? Я, например, почти всегда использую Process Explorer Руссиновича. Намного мощнее прога.


Цитата:
Сервисы видны в списке процессов

Это верно. Заметил потом, но исправлять не стал.

ShIvADeSt

Цитата:
...так как криво написаная программа может немало "счастья" принести

Скорее так и будет.
Автор: OdesitVadim
Дата сообщения: 13.05.2006 11:00
TeXpert

Цитата:
Опять же плохое решение. А не проще ли ставить хук оболочки

Почему способ плохой. Мне кажеться он очень лёгкий будет для системы. (Конечно если таймер не на 50мс ставить). Во вторых, так как он своего "друга" знает, то он знает уровень его знаний и сможет забить названия возможных таскменеджеров.
А хуки не такие уж и простые в реализации.
К тому же многоие антивирусы/фаэрволы не равнодушны к хукам и прочим внедрениям в другие процесы. А к FindWindow они лояльны (правда интернетексполрер не сильно)


Цитата:
чтобы друг не заподозрил наличие программы назови ее svchost.exe

А такой процес я прибью быстрей, чем он успеет поселиться - так как у самопальных есть маленькое отличие
Автор: TeXpert
Дата сообщения: 14.05.2006 01:13
OdesitVadim

Цитата:
Почему способ плохой. Мне кажеться он очень лёгкий будет для системы. (Конечно если таймер не на 50мс ставить). Во вторых, так как он своего "друга" знает, то он знает уровень его знаний и сможет забить названия возможных таскменеджеров

Сам подумай, грамотный подарок не должен себя обнаруживать, а исчезающий или "убегающий" task manager -- сразу заставит насторожиться. Это же просто!


Цитата:
А хуки не такие уж и простые в реализации

Ничего подобного. А хук оболочки -- вообще прост, как две копейки. У него цель только уведомительная.


Цитата:
К тому же многоие антивирусы/фаэрволы не равнодушны к хукам и прочим внедрениям в другие процесы

Хм, сам Microsoft практикует хуки, значит их программы -- тоже в мусорку?


Цитата:
А такой процес я прибью быстрей, чем он успеет поселиться - так как у самопальных есть маленькое отличие

Цитирую тебя же

Цитата:
Во вторых, так как он своего "друга" знает, то он знает уровень его знаний и сможет забить названия возможных таскменеджеров

Даже опытным, повтоюсь, трудно заметить такое -- потому как svchost.exe всегда висит в нескольких экземплярах.
Автор: OdesitVadim
Дата сообщения: 14.05.2006 13:31

Цитата:
Сам подумай, грамотный подарок не должен себя обнаруживать, а исчезающий или "убегающий" task manager -- сразу заставит насторожиться. Это же просто!

Он выведет его из себя

Цитата:
аже опытным, повтоюсь, трудно заметить такое -- потому как svchost.exe всегда висит в нескольких экземплярах.

но только не от имени пользователя
Автор: Tok_Nik
Дата сообщения: 16.05.2006 11:40

Цитата:
чтобы друг не заподозрил наличие программы назови ее svchost.exe


Хорошая идея: уровень знаний у моего "друга" ниже нижшего .

Страницы: 1

Предыдущая тема: Выход из процедуры в Delphi


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.