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