Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.20;
Скачать: CL | DM;

Вниз

Как запретить завершать свой приложение?   Найти похожие ветки 

 
dreamse   (2007-11-19 18:42) [0]

Пишу оболочку для ограничения запуска приложений и доступа пользователей к системным файлам.

Смысл в том что есть программы управления ( комп. клубы) которые при окончании сеанса выгружают все запущенные приложения.

т.е идёт метод terminated который и убивает оболочку.
Смысл сделать невозможным убить оболочку из других программ.
Элементарно перехватить метод Close можно поставив CanClose = false
но смысл перехватить именно метод terminate.

Была идея написать сервис который будет висеть в списке сервисов и загружать оболочку если её выгрузили, но программы блокировки выгружают все приложения по мере их запуска что приводит к постоянному миганию ( запуск - заверщение)

Это не зловредный код. Если не хотите подсказать здесь свяжитесь со мной через Email покажу и проект и оболочку :)

Жду ответов.


 
Сергей С.   (2007-11-19 21:32) [1]


> есть программы управления


> т.е идёт метод terminated


Галиматьища несусветная.


> Это не зловредный код


Да хоть доброполезный)

Логику - фтопку.


 
tesseract ©   (2007-11-20 10:56) [2]

Перехватывать WmCloseQuery и говорить что ни в жисть. против Kill ничего не сделаешь - это все.


 
dreamse   (2007-11-20 13:53) [3]

Не нужно так утвержжать. Знаю несколько приложений которые не выгружаються при методе terminate

> Сергей С.   (19.11.07 21:32) [1]

Не можешь подсказать лучше промолчи


 
Сергей М. ©   (2007-11-20 14:16) [4]


> при методе terminate


Методе какого объекта ?)


 
Dreamse   (2007-11-20 14:26) [5]

Например другая программа хочет завершить мою программу следующем кодом :


var
 dwResult: Longint; // This example was converted from C source.
begin
 // Not tested. Some "nil" assignments must be applied
 // as zero assignments in Pascal. Some vars need to
 // be declared (maxworktime, si, pi). AA.
 if CreateProcess(nil, CmdStr, nil, nil, FALSE,
   CREATE_NEW_CONSOLE, nil, nil, si, pi) then
 begin
   CloseHandle(pi.hThread);
   dwResult := WaitForSingleObject(pi.hProcess, maxworktime * 1000 * 60);
   CloseHandle(pi.hProcess);
   if dwResult <> WAIT_OBJECT_0 then
   begin
     pi.hProcess := OpenProcess(PROCESS_TERMINATE, FALSE, pi.dwProcessId);
     if pi.hProcess <> nil then
     begin
       TerminateProcess(pi.hProcess, 0);
       CloseHandle(pi.hProcess);
     end;
   end;
 end;
end;


Вызываеться метод TerminateProcess который и завершает моё приложение.
Вопрос : Как не дать завершиться моему приложению ?


 
Сергей М. ©   (2007-11-20 14:29) [6]


> Вызываеться метод TerminateProcess


TerminateProcess - это не метод.


> Как не дать завершиться моему приложению ?


Реализовать приложение как сервис и стартовать его от имени системы.



Страницы: 1 вся ветка

Текущий архив: 2008.07.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
2-1213617117
Igor M.
2008-06-16 15:51
2008.07.20
Помогите с АЛГОРИТМом


2-1213699641
Alex_C
2008-06-17 14:47
2008.07.20
Маштабирование окна


11-1191915697
Nikfel
2007-10-09 11:41
2008.07.20
Как уменьшить еще сильней программу на kol.


15-1212612419
Германн
2008-06-05 00:46
2008.07.20
Что-то в последние минут 10-15 жутко тормозит форум.


2-1214192033
NewSer
2008-06-23 07:33
2008.07.20
Как программно настроить связь TQRChart с БД? (ADO)