Форум: "Основная";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];
ВнизКак запретить завершать свой приложение? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.049 c