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

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

Как выкинуть программу из списка программ (ctrl+alt+del)? [D6]


^SANYA ©   (2002-07-23 20:04:00) 

Эдакий "шпион" нужен...
Просьба не материть!
Заранее спасибо!


Denvor   (2002-07-26 02:49:00) [1]

Что делать? Что делать?
Есть у меня один ценный пример из одного FAQ этого сайта, где-то год назад скачанного, который защитит твою программу и от Ctrl-Alt-Del и от TaskBar"a. Ну а с Excel не бойся - размести свою программу в папке Виндоуз и назови, типа MNTask. Визуально будет трудно найти. Excel ведь не к таскбару обращается, а к ОС, которая выдаёт ему все потоки. От них с помощью API не спрячешься.
Вот примерчик того, что я обещал:
"Внеся эти изменения в свой проект вы получите приложение, которое не видно в TaskBar и на него нельзя переключиться по Alt-Tab


program Project1;uses Forms, Windows, Unit1 in "Unit1.pas" {Form1};{$R *.RES}var ExtendedStyle : integer;begin Application.Initialize; ExtendedStyle:=GetWindowLong(application.Handle, GWL_EXSTYLE); SetWindowLong(Application.Handle, GWL_EXSTYLE, ExtendedStyle or WS_EX_TOOLWINDOW {AND NOT WS_EX_APPWINDOW}); Application.CreateForm(TForm1, Form1); Application.Run;end.



Будь готов к тому, что если пpи попытке закpытия пpиложения в OnCloseQuery или OnClose выводится вопpос о подтвеpждении, то могут быть пpоблемы с автоматическим завеpшением пpогpаммы пpи shutdown - под Win95 пpосто зависает, под WinNT не завеpшается.
Очевидно, что сообщение выводится, но его не видно (пpичем SW_RESTORE не сpабатывает).
Решение - ловить WM_QueryEndSession и после всяких завеpшающих действий и вызова CallTerminateProcs выдавать Halt.

А вот как отрубить показ файла в Ctrl-Alt-Del


function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external "KERNEL32.DLL";implementationprocedure TForm1.Button1Click(Sender: TObject);begin //Hide if not (csDesigning in ComponentState) then RegisterServiceProcess(GetCurrentProcessID, 1);end;procedure TForm1.Button2Click(Sender: TObject);begin //Show if not (csDesigning in ComponentState) then RegisterServiceProcess(GetCurrentProcessID, 0);end;"

Желаю удачи


^SANYA   (2002-07-26 02:09:00) [2]

Denvor прав, проверил - "ошибка резидента"!!! Что делать????


Denvor   (2002-07-26 01:08:00) [3]

Я бы в таком случае заинтересовался бы очень наглым приложением, которое начало хозяйничать на моём компе, вычислил бы его, открыв обыкновенный Excel и в меню "Справка>О проргамме>О системе> Запущенные приложения" узнал бы его имя и местоположение.Это и была бы "ошибка резидента"!


MARcoDEN   (2002-07-25 07:34:00) [4]

А можно просто подавить реакцию Windows на комбинацию Ctrl+Alt+Del. А для этого (как ни странно), достаточно активировать режим скринсейвера, вот как это делается:

// Включение режима
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0); // Выключение режима
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, 0, 0);


Denvor   (2002-07-25 02:28:00) [5]

Отрубить показ файла в Ctrl-Alt-Del


function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external "KERNEL32.DLL";implementationprocedure TForm1.Button1Click(Sender: TObject);begin //Hide if not (csDesigning in ComponentState) then RegisterServiceProcess(GetCurrentProcessID, 1);end;procedure TForm1.Button2Click(Sender: TObject);begin //Show if not (csDesigning in ComponentState) then RegisterServiceProcess(GetCurrentProcessID, 0);end;


^SANYA   (2002-07-24 23:50:00) [6]

Да уж....ссылка просто зашибись! Полностью согласен с Игорем Шевченко!!! Но что ж поделать, придётся начать с зачистки кода :(
Кстати, чуть не забыл, БООЛЬШОЕ СПАСИБО за ссылку, т.к. там есть ответ на мой вопрос, хоть и в мусоре...


Игорь Шевченко   (2002-07-24 17:10:00) [7]

Убивать надо программистов, которые такие исходники пишут :-)


Robin   (2002-07-24 17:01:00) [8]

Вот тебе ссылка на исходник:
http://www.sources.ru/delphi/system/SHunter.zip

Только-что сам проверил скачав: все работает.


VID   (2002-07-23 22:13:00) [9]


> TTCustomDelphiMaster © (23.07.02 21:18)
> Application.Terminate;-)

Просили же не материться ;)


TTCustomDelphiMaster   (2002-07-23 21:18:00) [10]

Application.Terminate;-)


VID   (2002-07-23 20:59:00) [11]

В UBPFD есть, кажется в разделе "Управление ОС"


^SANYA   (2002-07-23 20:31:00) [12]

Шпион-то и нужен!!!


Anatoly Podgoretsky   (2002-07-23 20:26:00) [13]

Если шпион не нужен, то зачем выкидывать?


Наверх

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